Exemplo n.º 1
0
        public IList <UserLogin> Authenticate(UsersVo.UserLoginVo UserLogin)
        {
            IList <UserLogin> userLogins = new List <UserLogin>(_usersRepository.Authenticate(UserLogin.Login));

            // Compar password
            if (userLogins.Count == 0)
            {
                return(userLogins = null);
            }
            else if (UserLogin.PassWord.Equals(Encryption.Decrypt(userLogins[0].PassWord)))
            {
                userLogins[0].PassWord = UserLogin.PassWord;

                return(userLogins);
            }

            // Return User Login
            return(userLogins);
        }
Exemplo n.º 2
0
        public object Post(
            [FromBody] UsersVo.UserLoginVo UserLogin,
            [FromServices] IUsersService UsersService,
            [FromServices] SigningConfigurations signingConfigurations,
            [FromServices] TokenConfigurations tokenConfigurations)
        {
            bool credenciaisValidas = false;

            if (UserLogin != null && !String.IsNullOrWhiteSpace(UserLogin.Login))
            {
                var userBase = UsersService.Authenticate(UserLogin);

                credenciaisValidas = (userBase != null && UserLogin.Login == userBase[0].Login && UserLogin.PassWord == userBase[0].PassWord);
            }

            // Verifica se as credenciais são validas
            if (credenciaisValidas)
            {
                ClaimsIdentity identity = new ClaimsIdentity(
                    new GenericIdentity(UserLogin.Login.ToString(), "Login"),
                    new[] {
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                    new Claim(JwtRegisteredClaimNames.UniqueName, UserLogin.Login)
                }
                    );

                DateTime dataCriacao   = DateTime.Now;
                DateTime dataExpiracao = dataCriacao +
                                         TimeSpan.FromSeconds(tokenConfigurations.Seconds);

                var handler       = new JwtSecurityTokenHandler();
                var securityToken = handler.CreateToken(new SecurityTokenDescriptor
                {
                    Issuer             = tokenConfigurations.Issuer,
                    Audience           = tokenConfigurations.Audience,
                    SigningCredentials = signingConfigurations.SigningCredentials,
                    Subject            = identity,
                    NotBefore          = dataCriacao,
                    Expires            = dataExpiracao
                });
                var token = handler.WriteToken(securityToken);

                return(new
                {
                    authenticated = true,
                    created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"),
                    expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                    accessToken = token,
                    message = "OK"
                });
            }
            else
            {
                return(new
                {
                    StatusCode = 401,
                    authenticated = false,
                    message = "Falha ao autenticar"
                });
            }
        }