public async Task <IHttpActionResult> GoogleAsync([FromBody] GoogleRequest request) { User user; user = await UnitOfWork.GetUserRepository().SelectFirstOrDefaultAsync(r => r.Email == request.Email); if (user == null) { Registration registration = await _registrationService.RegisterAsync(registrationType : RegistrationType.Google, email : request.Email, firstName : request.FirstName, lastName : request.LastName, birthDt : request.BirthDay, gender : request.Gender); user = registration.User; } else if (user.Registration.Type.Equals(RegistrationType.Email)) { throw new ActionCannotBeExecutedException(ExceptionMessages.WrongRegistrationType); } if (!user.GoogleToken.Equals(request.GoogleToken)) { user.GoogleToken = request.GoogleToken; } (string accessToken, System.Guid guid, User user)result = await _loginService.LoginAsync(LoginType.Google, request.Email); LoginResposne response = new LoginResposne { AccessToken = result.accessToken, RefreshToken = result.guid, Role = result.user.Role }; await UnitOfWork.SaveChangesAsync(); return(Ok(response)); }
public async Task <IHttpActionResult> LoginAsync([FromBody] LoginRequest request) { (string accessToken, System.Guid guid, User user) = await _loginService.LoginAsync(LoginType.Email, request.Email, request.Password); LoginResposne response = new LoginResposne { AccessToken = accessToken, RefreshToken = guid, Role = user.Role }; await UnitOfWork.SaveChangesAsync(); return(Ok(response)); }