|
@@ -21,6 +21,8 @@ using Microsoft.AspNetCore.Identity.UI.Services;
|
|
|
using IEmailSender = MTWorkHR.Application.Services.IEmailSender;
|
|
|
using System.Security.Policy;
|
|
|
using MTWorkHR.Application.Services.Interfaces;
|
|
|
+using Microsoft.AspNetCore.Mvc;
|
|
|
+using Azure.Core;
|
|
|
|
|
|
namespace MTWorkHR.Identity.Services
|
|
|
{
|
|
@@ -124,7 +126,7 @@ namespace MTWorkHR.Identity.Services
|
|
|
_unitOfWork.CommitTran();
|
|
|
try
|
|
|
{
|
|
|
- var resultPassReset = await GetResetPasswordURL(user.Id);
|
|
|
+ var resultPassReset = await GetConfirmEmailURL(user.Id);
|
|
|
|
|
|
var sendMailResult = await _emailSender.SendEmail(new EmailMessage {
|
|
|
Subject = "Register Confirmation",
|
|
@@ -143,6 +145,14 @@ namespace MTWorkHR.Identity.Services
|
|
|
|
|
|
return input;
|
|
|
}
|
|
|
+ public async Task<bool> ConfirmEmail(ForgetPasswordDto input)
|
|
|
+ {
|
|
|
+ var user = await _userManager.FindByEmailAsync(input.Email);
|
|
|
+ if (user == null)
|
|
|
+ throw new AppException(ExceptionEnum.RecordNotExist);
|
|
|
+ var result = await _userManager.ConfirmEmailAsync(user, input.Token);
|
|
|
+ return result.Succeeded ;
|
|
|
+ }
|
|
|
private async Task<Tuple< string, string>> GetResetPasswordURL(string userId)
|
|
|
{
|
|
|
var user = await _userManager.Users.FirstOrDefaultAsync(x => (!x.IsDeleted) && x.Id.Equals(userId));
|
|
@@ -150,13 +160,29 @@ namespace MTWorkHR.Identity.Services
|
|
|
throw new AppException(ExceptionEnum.RecordNotExist);
|
|
|
|
|
|
string code = await _userManager.GeneratePasswordResetTokenAsync(user);
|
|
|
- var route = "auth/forgetpassword";
|
|
|
+ var route = "auth/ConfirmEmail";
|
|
|
var origin = _configuration.JwtSettings.Audience;
|
|
|
var endpointUri = new Uri(string.Concat($"{origin}/", route));
|
|
|
var userURL = QueryHelpers.AddQueryString(endpointUri.ToString(), "userId", user.Id);
|
|
|
var passwordResetURL = QueryHelpers.AddQueryString(userURL.ToString(), "token", code);
|
|
|
return new Tuple <string, string> ( passwordResetURL, user.Email);
|
|
|
}
|
|
|
+
|
|
|
+ private async Task<Tuple<string, string>> GetConfirmEmailURL(string userId)
|
|
|
+ {
|
|
|
+ var user = await _userManager.Users.FirstOrDefaultAsync(x => (!x.IsDeleted) && x.Id.Equals(userId));
|
|
|
+ if (user == null)
|
|
|
+ throw new AppException(ExceptionEnum.RecordNotExist);
|
|
|
+
|
|
|
+ string token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
|
|
|
+ var route = "auth/forgetpassword";
|
|
|
+ var origin = _configuration.JwtSettings.Audience;
|
|
|
+ var endpointUri = new Uri(string.Concat($"{origin}/", route));
|
|
|
+ var userURL = QueryHelpers.AddQueryString(endpointUri.ToString(), "userId", user.Id);
|
|
|
+ var confirmEmailUrl = QueryHelpers.AddQueryString(userURL.ToString(), "token", token);
|
|
|
+ return new Tuple<string, string>(confirmEmailUrl, user.Email);
|
|
|
+ }
|
|
|
+
|
|
|
public Task<UserDto> Update(UserDto input)
|
|
|
{
|
|
|
throw new NotImplementedException();
|