private async Task <User> RegisterUserFromExternalProvider(ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider) { var user = _mapper.Map <ExternalUserDto, User>(externalData.ExternalUser); user.RegisteredWith = loginProvider; var result = await _userManager.CreateAsync(user); return(result.Succeeded ? user : null); }
private async Task <IActionResult> HandleExternalInfo(IPAddress userIp, ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider) { _logger.LogInformation($"User with ip: {userIp} started facebook logging flow"); if (externalData == null) { _logger.LogInformation( $"User with ip: {userIp} tried to login with external login provider. Unable to validate external token"); return(BadRequest()); } var result = await _authService.ExternalLogin(externalData, loginProvider); if (result == null) { _logger.LogInformation( $"User with ip: {userIp} tried to login with external login provider. Unable to register user"); return(BadRequest()); } return(Ok(result.Token)); }
public async Task <TokenResponseDto> ExternalLogin(ExternalLoginDataDto externalData, ExternalLoginProvider loginProvider) { var user = await GetUserWithBoards(externalData.ExternalUser.Email); if (user == null) { user = await RegisterUserFromExternalProvider(externalData, loginProvider); } if (user == null) { return(null); } if (!user.EmailConfirmed) { user.EmailConfirmed = true; await _userManager.UpdateAsync(user); } var token = GetJwtSecurityToken(user, loginProvider, externalData.AccessToken); var tokenResponse = CreateTokenResponse(token, user); return(tokenResponse); }