hurbis-ui-seguranca-v1-snapshot
Version:
Biblioteca de segurança para autenticação e autorização utilizando Auth0.
229 lines (228 loc) • 8.18 kB
TypeScript
/// <reference types="angular" />
/// <reference types="angular-resource" />
/// <reference types="angular-jwt" />
declare namespace hurbis.ui.seguranca {
class Modulo {
static DEFINICAO: comum.IModuloDefinicao;
static inicializar(): void;
}
}
interface ITokenPayload {
aud: string;
exp: string;
iat: string;
iss: string;
sub: string;
}
interface ILoginResult {
accessToken: string;
idToken: string;
idTokenPayload?: ITokenPayload;
refreshToken?: boolean;
state?: string;
expiresIn?: string;
}
declare namespace hurbis.ui.seguranca {
interface ISegurancaRootScopeService extends angular.IRootScopeService {
isAuthenticated: boolean;
}
interface ISegurancaConfigService {
getConfiguracao(): IConfiguracao;
}
interface IConfiguracaoCookie {
nomeToken: string;
nomeTokenAcesso: string;
nomeProfile: string;
}
interface IConfiguracaoGerenciador {
clientId: string;
clientSecret: string;
enderecoApi: string;
cookieNomeToken: string;
}
interface IConfiguracaoInterceptador {
/**
* Nome do parâmetro a ser passado com o token do usuário. Exemplo: https://servidor/?nomeParametroUrl=[seuToken]
**/
nomeParametroUrl?: string;
cabecalhoAutorizacao?: string;
cabecalhoAutorizacaoPrefixo?: string;
whiteListedDomains?: string[];
/**
* Utiilzado para recuperar o token a ser validado durante as transições de estado no Angular e ao realizar um requisição.
* Para fazer alguma customização do que será retornado, é possível injetar o serviço "options" que na verdade é a requisição do Angular (angular.IRequestConfig).
**/
recuperarToken?: angular.Injectable<{
(...args: any[]): string;
}>;
loginUrl?: string;
naoAutenticadoUrl?: string;
naoAutenticadoRedirecionador?: angular.Injectable<Function>;
verificarAoAtualizar?: boolean;
tokenExpirou?: {
(event: angular.IAngularEvent, ...args: any[]): void;
};
}
enum TipoConexaoSocial {
Facebook = 0,
Google = 1,
}
interface IConfiguracao {
clientId: string;
callbackUrl?: string;
redirectUrl?: string;
logoutUrl?: string;
dominio: string;
conexao?: string;
enderecoApi?: string;
cookie: IConfiguracaoCookie;
/**
* Nome da API configurada no Auth0 o qual deseja permissão de acesso.
**/
nomeRecurso?: string;
/** Utilizado para recuperar os atribuitos user_metadata após conformidade OIDC. Ex.: https://app.empresa.com.br/user_metadata */
caminhoUserMetadata?: string;
/** Utilizado para recuperar os atribuitos app_metadata após conformidade OIDC. Ex.: https://app.empresa.com.br/app_metadata */
caminhoAppMetadata?: string;
interceptador?: IConfiguracaoInterceptador;
gerenciador?: IConfiguracaoGerenciador;
}
interface IAutenticadorIdentity extends auth0.Auth0Identity {
}
interface IAutenticadorUsuario {
connection: string;
email?: string;
email_verified?: boolean;
verify_email?: boolean;
username?: string;
password?: string;
client_id?: string;
phone_number?: string;
phone_verified?: boolean;
app_metadata?: any;
user_metadata?: IAutenticadorUserMetadata;
}
interface IAutenticadorUsuarioResult extends auth0.Auth0UserProfile {
identities: IAutenticadorIdentity[];
user_metadata?: IAutenticadorUserMetadata;
multifactor?: any;
last_ip?: string;
last_login?: number;
logins_count?: number;
blocked?: boolean;
}
interface IAutenticadorUserMetadata {
nome: string;
data_nascimento: string;
dataNascimento?: string;
sexo: string;
foto_url?: string;
fotoUrl?: string;
}
interface IResourceSeguranca<T> extends angular.resource.IResourceClass<T> {
atualizar: angular.resource.IResourceMethod<T>;
}
interface ITokenRequest {
client_id: string;
audience: string;
client_secret: string;
grantType: string;
}
interface ITokenResult {
accessToken: string;
tokenType: string;
}
interface IAutenticacaoErroDetalhe {
code: any;
message: string;
error_description: string;
}
interface IAutenticacaoErro extends auth0.Auth0Error {
}
}
declare namespace hurbis.ui.seguranca {
class UsuarioModel {
usuarioId: number;
autorizadorUsuarioId: string;
login: string;
nome: string;
email: string;
senha: string;
dataNascimento: Date;
sexo: string;
fotoURL: string;
}
}
declare namespace hurbis.ui.seguranca {
class ConfiguracaoProvider implements angular.IServiceProvider {
private jwtOptionsProvider;
private $httpProvider;
constructor(jwtOptionsProvider: any, $httpProvider: angular.IHttpProvider);
private _configuracao;
configurar(configuracao: IConfiguracao): void;
private configurarInterceptador();
getConfiguracao: () => IConfiguracao;
$get: (() => ISegurancaConfigService)[];
static inicializar(): void;
}
}
declare namespace hurbis.ui.seguranca {
class AutenticacaoService {
private $q;
private $resource;
private jwtHelper;
broker: auth0.WebAuth;
configuracao: IConfiguracao;
private nomeExpiraEm;
constructor($q: angular.IQService, $resource: angular.resource.IResourceService, jwtHelper: angular.jwt.IJwtHelper, $hbsSegurancaConfig: ISegurancaConfigService);
token: string;
tokenAcesso: string;
expiraEm: string;
usuario: IAutenticadorUsuarioResult;
consultarUsuario(tokenAcesso: string): angular.IPromise<IAutenticadorUsuarioResult>;
tokenExpirou(token?: string): boolean;
/**
* Limpa cookies e cache de autenticação.
* @param forcarServidor Força limpeza de eventuais sessões abertas no servidor de autenticação.
* Obs.: A aplicação será redirecionada.
*/
logout(forcarServidor?: boolean): void;
/**
* Verifica se o usuário é válido.
* @param login Login (username) do usuário a ser validado.
* @param senha Senha do usuário a ser validado.
*/
validarUsuario(login: string, senha: string): ng.IPromise<boolean>;
/**
* Uma nova senha será enviada para o e-mail informado.
* @param email Endereço de e-mail para onde será enviada a solicitação.
*/
solicitarNovaSenha(email: string): ng.IPromise<boolean>;
solicitarNovoToken(): angular.IPromise<boolean>;
login(): void;
renovarSessao(): void;
private registrarSessao(authResult);
private tempoRenovacaoToken;
private escalonarRenovacao(dataHoraRenovacao);
static inicializar(): void;
}
}
declare namespace hurbis.ui.seguranca {
class ManutencaoService {
private $resource;
private jwtHelper;
private $q;
private configuracao;
constructor($resource: angular.resource.IResourceService, jwtHelper: angular.jwt.IJwtHelper, $q: angular.IQService, $hbsSegurancaConfig: ISegurancaConfigService);
private brokerAutenticador;
private enderecoUsuario;
private dadoUsuario;
private tokenManutencao;
private iniciarRecursosAsync();
private iniciarServicoUsuario();
cadastrarUsuario(usuario: UsuarioModel, verificarEmail?: boolean): ng.IPromise<IAutenticadorUsuarioResult>;
atualizarUsuario(usuario: UsuarioModel): ng.IPromise<IAutenticadorUsuarioResult>;
alterarSenha(autorizadorUsuarioId: string, senhaNova: string): ng.IPromise<IAutenticadorUsuarioResult>;
static inicializar(): void;
}
}