password change updates

This commit is contained in:
Adam 2024-08-09 17:51:44 +02:00
parent 1cbf88d563
commit f39fc86a84
6 changed files with 109 additions and 38 deletions

View File

@ -114,5 +114,8 @@ public class SignalRTags : AcSignalRTags
public const int UserChangePassword = 139;
public const int UserForgotPassword = 140;
public const int GuestUpdateTransfer = 150;
public const int DriverUpdateTransfer = 151;
public const int GetAllLogItemsByFilterText = 1000;
}

View File

@ -34,16 +34,18 @@
<div class="text-center mt-4 name">
@_localizer["LoginTitleText"]
</div>
<div class="form-field">
<DxMaskedInput @bind-Value="@emailAddress"
Id="Email"
CssClass="cw-320"
CssClass="form-control"
Mask="@EmailMask"
MaskMode="MaskMode.RegEx">
<DxRegExMaskProperties MaskAutoCompleteMode="@((MaskAutoCompleteMode)AutoCompleteMode)"
Placeholder="Placeholder"
PlaceholdersVisible="PlaceholderVisible" />
</DxMaskedInput>
<DxButton RenderStyle="ButtonRenderStyle.Primary" Click="() => SendMail(emailAddress)">Send</DxButton>
</div>
<DxButton CssClass="btn btn-primary mt-3" Click="() => SendMail(emailAddress)">Send</DxButton>
<div class="text-center fs-6">
No account yet? <a href="register">Sign up here!</a>
</div>

View File

@ -14,18 +14,25 @@
@inject AdminSignalRClient AdminSignalRClient;
<div class="e-card cw-480">
<div class="e-main d-flex align-items-center">
<div class="flex-shrink-0">
<img class="e-photo" src="_content/TIAMSharedUI/images/defaultavatar_60.png" alt="" />
</div>
<div class="e-info flex-grow-1 ms-3">
<div class="e-name">@($"{Context.UserDto.Id}")</div>
<p class="e-title"><i class="fa-solid fa-at"></i> @Context.UserDto.EmailAddress</p>
<p class="e-title"><i class="fa-solid fa-phone"></i> @Context.UserDto.PhoneNumber</p>
</div>
</div>
<hr class="hr" />
@{
if(!IsForgotten)
{
<div class="e-main d-flex align-items-center">
<div class="flex-shrink-0">
<img class="e-photo" src="_content/TIAMSharedUI/images/defaultavatar_60.png" alt="" />
</div>
<div class="e-info flex-grow-1 ms-3">
<div class="e-name">@($"{Context.UserDto.Id}")</div>
<p class="e-title"><i class="fa-solid fa-at"></i> @Context.UserDto.EmailAddress</p>
<p class="e-title"><i class="fa-solid fa-phone"></i> @Context.UserDto.PhoneNumber</p>
</div>
</div>
<hr class="hr" />
}
}
<div class="row">
<div class="col-12 col-md-6">
@ -33,10 +40,16 @@
</div>
<div class="col-9 col-md-4">
<DxTextBox hidden="@IsForgotten" @bind-Text="@OldPassword"
NullText="Old password"
Password="true"
CssClass="form-field" />
@{
if(!IsForgotten)
{
<DxTextBox @bind-Text="@OldPassword"
NullText="Old password"
Password="true"
CssClass="form-field" />
}
}
<DxTextBox @bind-Text="@NewPassword"
NullText="New password"
BindValueMode="BindValueMode.OnDelayedInput"

View File

@ -43,8 +43,9 @@ namespace TIAMWebApp.Server.Controllers
private readonly TransferBackendService _transferBackendService;
private readonly IMessageSenderService _messageSenderService;
private readonly AuthService _authService;
private readonly UserAPIController _userApiController;
public TransferDataAPIController(AdminDal adminDal, TransferBackendService transferBackendService, IMessageSenderService messageSenderService, IEnumerable<IAcLogWriterBase> logWriters, AuthService authService)
public TransferDataAPIController(AdminDal adminDal, TransferBackendService transferBackendService, IMessageSenderService messageSenderService, IEnumerable<IAcLogWriterBase> logWriters, AuthService authService, UserAPIController userApiController)
{
_adminDal = adminDal;
_transferBackendService = transferBackendService;
@ -52,6 +53,7 @@ namespace TIAMWebApp.Server.Controllers
_logger = new TIAM.Core.Loggers.Logger<TransferDataAPIController>(logWriters.ToArray());
_messageSenderService = messageSenderService;
_authService = authService;
_userApiController = userApiController;
}
@ -745,6 +747,29 @@ namespace TIAMWebApp.Server.Controllers
return await _adminDal.UpdateTransferAsync(transfer);
}
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.GuestUpdateTransferRouteName)]
[SignalR(SignalRTags.GuestUpdateTransfer)]
public async Task<Transfer?> GuestUpdateTransfer(Transfer transfer)
{
_logger.Info($"UpdateTransfer called! transferId: {transfer.Id}");
return await _adminDal.UpdateTransferAsync(transfer);
}
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.DriverUpdateTransferRouteName)]
[SignalR(SignalRTags.DriverUpdateTransfer)]
public async Task<Transfer?> DriverUpdateTransfer(Transfer transfer)
{
_logger.Info($"UpdateTransfer called! transferId: {transfer.Id}");
return await _adminDal.UpdateTransferAsync(transfer);
}
[NonAction]
[SignalR(SignalRTags.RemoveTransfer)]
public async Task<Transfer?> RemoveTransfer(Transfer transfer)

View File

@ -433,8 +433,8 @@ namespace TIAMWebApp.Server.Controllers
}
[AllowAnonymous]
[HttpPost]
[Route("GetUserById")]
[HttpPost]
[Route(APIUrls.GetUserByIdRouteName)]
public async Task<UserModelDto?> GetUserById([FromBody] Guid id)
{
_logger.Info($"GetUserById called with id: {id}");
@ -483,21 +483,7 @@ namespace TIAMWebApp.Server.Controllers
message.Message.ContextId = user.Id;
message.Message.SenderId = Guid.Empty;
message.Message.Recipients.Add(new EmailRecipient(Guid.NewGuid(), user.Id, Guid.NewGuid(), email));
//string FormatEmailContent()
//{
// return $@"
// <html>
// <body>
// <p>Dear {user.Profile.FirstName},</p>
// <p>Please follow the link below to renew your password:</p>
// <p>
// <p><a href=""{Setting.BaseUrl}/renewpassword/{user.Id}/{email}"">Confirm Transfer</a></p>
// <p>If you did not request this, please disregard this email.</p>
// <p>Thank you,<br/>Tour I Am team</p>
// </body>
// </html>";
//}
//message.Message.Text = FormatEmailContent();
message.Message.Text = EmailTemplateHelper.GenerateForgotPasswordEmail(user.FullName, Setting.BaseUrl, user.Id.ToString(), user.ConfirmToken);
_logger.Info(message.Message.Text);
var messageElement = message.Message;
@ -525,7 +511,7 @@ namespace TIAMWebApp.Server.Controllers
{
User? user;
_logger.Info($"ValidateForgottenPasswordToken called with id: {parameters[0]}");
if(parameters != null && parameters[0] != null && parameters[1] != null)
if (parameters != null && parameters[0] != null && parameters[1] != null)
{
user = await userDal.GetUserByIdAsync(Guid.Parse(parameters[0]), false);
if (user == null)
@ -537,6 +523,10 @@ namespace TIAMWebApp.Server.Controllers
if (parameters[1] == user.ConfirmToken)
{
_logger.Debug($"Generated token for user: {user.ConfirmToken}");
//if user is not email validated, set email valid
if (!user.EmailConfirmed)
await SetEmailConfirmedMethod(user);
return "Success";
}
@ -545,14 +535,43 @@ namespace TIAMWebApp.Server.Controllers
_logger.Debug($"Generated token for user: {user.ConfirmToken}");
return "Invalid token";
}
}
}
else
{
return "Invalid request";
}
}
[AllowAnonymous]
[HttpPost]
[Route(APIUrls.SetEmailConfirmedRouteName)]
public async Task<bool> SetEmailConfirmed([FromBody] Guid userId)
{
_logger.Info($"SetEmailConfirmed called with id: {userId}");
if(User!= null)
{
var user = await userDal.GetUserByIdAsync(userId, false);
return await SetEmailConfirmedMethod(user);
}
return false;
}
[NonAction]
private async Task<bool> SetEmailConfirmedMethod(User user)
{
user.EmailConfirmed = true;
var result = await adminDal.UpdateUserAsync(user);
if (result != null)
{
return true;
}
return false;
}
}
}

View File

@ -72,6 +72,9 @@ namespace TIAMWebApp.Shared.Application.Models
public const string ValidateForgottenPasswordTokenRouteName = "ValidateForgottenPasswordToken";
public const string ValidateForgottenPasswordToken = UserAPI + ValidateForgottenPasswordTokenRouteName;
public const string SetEmailConfirmedRouteName = "SetEmailConfirmed";
public const string SetEmailConfirmed = UserAPI + SetEmailConfirmedRouteName;
//Weatherdata
//public const string WeatherForecast = "api/WeatherForecastAPI";
public const string WeatherForecast = WeatherForecastAPI;
@ -135,6 +138,12 @@ namespace TIAMWebApp.Shared.Application.Models
public const string UpdateTransferRouteName = "UpdateTransfer";
public const string UpdateTransfer = TransferDataAPI + UpdateTransferRouteName;
public const string GuestUpdateTransferRouteName = "GuestUpdateTransfer";
public const string GuestUpdateTransfer = TransferDataAPI + GuestUpdateTransferRouteName;
public const string DriverUpdateTransferRouteName = "DriverUpdateTransfer";
public const string DriverUpdateTransfer = TransferDataAPI + DriverUpdateTransferRouteName;
public const string UpdateTransferDestinationRouteName = "UpdateTransferDestintion";
public const string UpdateTransferDestination = TransferDataAPI + UpdateTransferDestinationRouteName;