public ObjectToken Authenticate(IUserAuthenticateDto userDto, IUserServiceAuthenticate userService)
        {
            bool credenciaisValidas = false;

            if (userDto != null)
            {
                if (userDto.TypeLogin == TypeLogin.Login)
                {
                    var usuarioBase = userService.GetForLogin(userDto);
                    credenciaisValidas = (usuarioBase != null);
                }
                else if (userDto.TypeLogin == TypeLogin.RefreshToken && !String.IsNullOrWhiteSpace(userDto.RefreshToken))
                {
                    RefreshTokenData refreshTokenBase = null;

                    string strTokenArmazenado =
                        _cache.GetString(userDto.RefreshToken);
                    if (!String.IsNullOrWhiteSpace(strTokenArmazenado))
                    {
                        refreshTokenBase = JsonConvert
                                           .DeserializeObject <RefreshTokenData>(strTokenArmazenado);
                    }

                    credenciaisValidas = (refreshTokenBase != null &&
                                          userDto.Access == refreshTokenBase.Access &&
                                          userDto.RefreshToken == refreshTokenBase.RefreshToken);

                    // Elimina o token de refresh já que um novo será gerado
                    if (credenciaisValidas)
                    {
                        _cache.Remove(userDto.RefreshToken);
                    }
                }
            }

            if (credenciaisValidas)
            {
                return(GenerateToken(userService.GetByAcess(userDto.Access)));
            }
            else
            {
                return(new ObjectToken()
                {
                    authenticated = false,
                    message = "Falha ao autenticar"
                });
            }
        }
Ejemplo n.º 2
0
 public IUserAuthenticate GetForLogin(IUserAuthenticateDto userDto)
 {
     return(_userFake.Users.FirstOrDefault(x => x.Access == userDto.Access && x.Password == userDto.Password));
 }