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); }
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" }); } }