UNPKG

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
/// <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; } }