|
|
|
@@ -44,30 +44,12 @@ namespace Diligent.WebAPI.Business.Services |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
var isLocked = await _userManager.IsLockedOutAsync(user); |
|
|
|
|
|
|
|
if (isLocked) |
|
|
|
return new ServiceResponseDTO<AuthenticateResponseDto> |
|
|
|
{ |
|
|
|
IsError = true, |
|
|
|
ErrorMessage = "The account is locked out" |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var result = await _userManager.CheckPasswordAsync(user, model.Password); |
|
|
|
|
|
|
|
// password is not correct |
|
|
|
if (!result) |
|
|
|
{ |
|
|
|
await _userManager.AccessFailedAsync(user); |
|
|
|
isLocked = await _userManager.IsLockedOutAsync(user); |
|
|
|
|
|
|
|
if(isLocked) |
|
|
|
return new ServiceResponseDTO<AuthenticateResponseDto> |
|
|
|
{ |
|
|
|
IsError = true, |
|
|
|
ErrorMessage = "The account is locked out" |
|
|
|
}; |
|
|
|
|
|
|
|
return new ServiceResponseDTO<AuthenticateResponseDto> |
|
|
|
{ |
|
|
|
@@ -76,6 +58,39 @@ namespace Diligent.WebAPI.Business.Services |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
return await GenerateToken(user); |
|
|
|
} |
|
|
|
|
|
|
|
public async Task<ServiceResponseDTO<AuthenticateResponseDto>> Authenticate(string email) |
|
|
|
{ |
|
|
|
var user = await _userManager.FindByEmailAsync(email); |
|
|
|
|
|
|
|
// return null if user not found |
|
|
|
if (user == null) |
|
|
|
{ |
|
|
|
return new ServiceResponseDTO<AuthenticateResponseDto> |
|
|
|
{ |
|
|
|
IsError = true, |
|
|
|
ErrorMessage = $"User with email {email} does not exist in database" |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
return await GenerateToken(user); |
|
|
|
} |
|
|
|
|
|
|
|
private async Task<ServiceResponseDTO<AuthenticateResponseDto>> GenerateToken(User user) |
|
|
|
{ |
|
|
|
var isLocked = await _userManager.IsLockedOutAsync(user); |
|
|
|
|
|
|
|
if (isLocked) |
|
|
|
return new ServiceResponseDTO<AuthenticateResponseDto> |
|
|
|
{ |
|
|
|
IsError = true, |
|
|
|
ErrorMessage = "The account is locked out" |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// authentication successful so generate jwt token |
|
|
|
var token = await GenerateJwtToken(user, true); |
|
|
|
|