Kaynağa Gözat

Added endpoint for gmail login

feature/added_google_login
Safet Purkovic 3 yıl önce
ebeveyn
işleme
6819f79b4e

+ 1
- 0
Diligent.WebAPI.Business/Services/Interfaces/IUserService.cs Dosyayı Görüntüle

public interface IUserService public interface IUserService
{ {
Task<ServiceResponseDTO<AuthenticateResponseDto>> Authenticate(AuthenticateRequestDto model); Task<ServiceResponseDTO<AuthenticateResponseDto>> Authenticate(AuthenticateRequestDto model);
Task<ServiceResponseDTO<AuthenticateResponseDto>> Authenticate(string email);


Task<RefreshTokenResultDto> RefreshTokenAsync(RefreshTokenRequestDto model); Task<RefreshTokenResultDto> RefreshTokenAsync(RefreshTokenRequestDto model);



+ 33
- 18
Diligent.WebAPI.Business/Services/UserService.cs Dosyayı Görüntüle

}; };
} }


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); var result = await _userManager.CheckPasswordAsync(user, model.Password);


// password is not correct // password is not correct
if (!result) if (!result)
{ {
await _userManager.AccessFailedAsync(user); 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> return new ServiceResponseDTO<AuthenticateResponseDto>
{ {
}; };
} }


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 // authentication successful so generate jwt token
var token = await GenerateJwtToken(user, true); var token = await GenerateJwtToken(user, true);



+ 10
- 0
Diligent.WebAPI.Host/Controllers/V1/UsersController.cs Dosyayı Görüntüle



return Ok(); return Ok();
} }
[HttpGet("authenticateGoogle")]
public async Task<IActionResult> GoogleLogin(string email)
{
var response = await _userService.Authenticate(email);

if (response.IsError is true)
return BadRequest(new { message = response.ErrorMessage });

return Ok(response.Data);
}
} }
} }

Loading…
İptal
Kaydet