コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: UserService.cs プロジェクト: jriley15/JTemplate
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: AuthService.cs プロジェクト: jriley15/live
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: UserService.cs プロジェクト: jriley15/JTemplate
        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);
        }