public LoginResponse AuthenticateAndLogIn([FromBody] LogInRequest request) { var response = new LoginResponse(); try { GoogleTokenInformation tokenInformation = _googleTokenAuthentication.VerifyToken(request.Token); if (tokenInformation.Valid == false) { response.AddError($"Server failed to verify Google credentials. Please try again.", request); return(response); } UserSession sessionInformation = _userService.LogInUser(tokenInformation); response.NewUser = sessionInformation.NewUser; response.SessionId = sessionInformation.SessionId; response.User = _userService.GetPersonFromSession(sessionInformation.SessionId.ToString()); } catch (ErrorCodeException exception) { response.AddError($"An unexpected exception occured: {exception}", request, exception.Code); } catch (Exception exception) { response.AddError($"An unexpected exception occured: {exception}", request); } return(response); }
public LoginResponse Login(LoginRequest request) { LoginResponse response = new LoginResponse(); Authentication auth = dbContext.Authentication.Include(a => a.User).SingleOrDefault(a => a.Email == request.Email && PasswordHelper.VerifyPassword(request.Password, a.Password)); if (auth != null && auth.User != null) { if (auth.Type == 0) { if (auth.User.Verified) { response.Success = true; response.Auth = new Auth(auth.UserId, auth.Email, TokenHelper.GenerateAccessToken(auth.User), TokenHelper.GenerateRefreshToken(auth.User)); response.Message = "You successfully logged in as " + auth.Email; } else { response.Success = false; response.AddError("*", "Email has not been confirmed"); } } else { response.Success = false; response.AddError("*", "Account was registered with an external service"); } } else { response.Success = false; response.AddError("*", "Invalid email or password"); } return(response); }
public async Task <ResponseBase> ProcessCallAsync(LoginRequest request) { var temp = await SadmApi.LogInStr(request); var resultado = Newtonsoft.Json.JsonConvert.DeserializeObject <Registro_de_UsuariosPagingModel>(temp); var response = new LoginResponse(); if (resultado.Registro_de_Usuarioss == null) { response.AddError("Correo / Contraseña no válidos. Revise sus datos y vuelva a intentarlo."); } else { DatosPago.email = request.Email; foreach (var r in resultado.Registro_de_Usuarioss) { response.Activo = r.Activo; response.Apellido_Materno = r.Apellido_Materno; response.Apellido_Paterno = r.Apellido_Paterno; response.Nombre = r.Nombre; response.Correo = r.Correo; response.Calle = r.Calle; response.Ciudad = r.Ciudad; response.Clave_de_acceso = r.Clave_de_acceso; response.Codigo_Postal = r.Codigo_Postal; response.Colonia = r.Colonia; response.Contrasena = r.Contrasena; response.Correo = r.Correo; response.Estado = r.Estado; response.Fecha_de_Registro = r.Fecha_de_Registro; response.Folio = r.Folio; response.Hora_de_Registro = r.Hora_de_Registro; response.lastReading = r.lastReading; response.Lec = r.Lec; response.Numero = r.Numero; response.Pregunta_de_seguridad = r.Pregunta_de_seguridad; response.Respuesta_de_seguridad = r.Respuesta_de_seguridad; response.Rol = r.Rol; response.Telefono = r.Telefono; response.Usuario_que_Registra = r.IdSpartanUser; response.User.Spartan_userId = r.IdSpartanUser ?? 0; DatosPago.SpartanUserId = r.IdSpartanUser ?? 0; } } // else if(string.IsNullOrEmpty(resultado.Registro_de_Usuarioss) return(response); }
public async Task <LoginResponse> Login(LoginRequest request) { var response = new LoginResponse(); var user = await _dbContext.Users.SingleOrDefaultAsync(u => u.Username.Equals(request.Username, StringComparison.OrdinalIgnoreCase) && u.Password.Equals(request.Password)); if (user != null) { response.Success = true; response.AccessToken = TokenHelper.GenerateJwt(user); } else { response.AddError("*", "Invalid email or password"); } return(response); }
internal async Task <LoginResponse> GetUserAsync(IConfiguration configuration, LoginViewModel viewModel) { var response = new LoginResponse(); try { var applicationUser = await _userManager.FindByNameAsync(viewModel.Username); if (applicationUser == null) { response.AddError(_stringLocalizer[CustomStringLocalizer.USERNAME_NOT_FOUND]); return(response); } if (!await _userManager.CheckPasswordAsync(applicationUser, viewModel.Password)) { response.AddError(_stringLocalizer[CustomStringLocalizer.USER_PASSWORD_WRONG]); return(response); } var loginClaim = await GetUserClaimAsync(applicationUser, UserConstants.CanLogin); if (loginClaim == null || loginClaim.Value == "0") { response.AddError(_stringLocalizer[CustomStringLocalizer.USER_CAN_NOT_LOGIN]); return(response); } // заполнение в identity клеймов и другое var encodedKey = Encoding.UTF8.GetBytes(configuration["Jwt:SigningKey"]); var signingKey = new SymmetricSecurityKey(encodedKey); var expireInMinutes = System.Convert.ToInt32(configuration["Jwt:ExpireInMinutes"]); var expireDate = DateTime.Now.AddMinutes(expireInMinutes); var tokenDescriptor = new SecurityTokenDescriptor { Audience = configuration["Jwt:Site"], Issuer = configuration["Jwt:Site"], Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, applicationUser.Id.ToString()), new Claim(ClaimTypes.Name, applicationUser.UserName) }), Expires = expireDate, SigningCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256) }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); response = new LoginResponse { Expiration = expireDate, Token = tokenHandler.WriteToken(token) }; } catch (Exception ex) { response.AddException(ex); } return(response); }
public LoginResponse GoogleLogin(string token) { LoginResponse response = new LoginResponse(); try { var payload = GoogleJsonWebSignature.ValidateAsync(token, new GoogleJsonWebSignature.ValidationSettings()).Result; if (payload != null) { Authentication auth = dbContext.Authentication.Include(a => a.User).SingleOrDefault(a => a.Email == payload.Email); if (auth != null) { if (auth.Type == 1) { //sign in, success response.Success = true; response.Auth = new Auth(auth.UserId, auth.Email, TokenHelper.GenerateAccessToken(auth.User), TokenHelper.GenerateRefreshToken(auth.User)); response.Message = "You successfully logged in as " + auth.Email; auth.Token = token; dbContext.SaveChanges(); } else { response.Success = false; response.AddError("*", "You cannot use Google to sign in to this account"); } } else { //email doesn't exist, create account for user with type 1 //create user User newUser = new User() { Verified = true, Role = "User" }; //create profile Profile newProfile = new Profile() { FirstName = payload.GivenName, LastName = payload.FamilyName, DateCreated = DateTime.Now, DateModified = DateTime.Now }; newUser.Profile = newProfile; Authentication newAuth = new Authentication() { Email = payload.Email, Password = PasswordHelper.HashPassword(payload.Email), Type = 1, Token = token }; newUser.Authentication = newAuth; dbContext.Users.Add(newUser); dbContext.SaveChanges(); response.Success = true; response.Auth = new Auth(newAuth.UserId, newAuth.Email, TokenHelper.GenerateAccessToken(newAuth.User), TokenHelper.GenerateRefreshToken(newAuth.User)); response.Message = "You successfully logged in as " + newAuth.Email; } } else { response.Success = false; response.AddError("*", "Failed to sign in with Google"); } } catch (Exception e) { response.Success = false; response.AddError("*", "Failed to sign in with Google"); } return(response); }