import { IAuthHandlerType } from './../interceptors/auth/auth-handler-type.interface'; import { IAuthBaseService } from './auth-base-service.interface'; import { InjectionToken, EventEmitter } from '@angular/core'; import { Observable } from 'rxjs'; import { UserManager, User } from 'oidc-client'; import { IAuthSettings } from './auth-settings.interface'; /** * Token de configuração das informações */ export declare const AUTH_SETTINGS: InjectionToken; /** * Configuração do tipo de autenticação */ export declare const AUTH_TYPE: InjectionToken; /** * Classe abstrata do serviço de autorização */ export declare abstract class AuthBaseService implements IAuthBaseService { /** * @ignore */ private _shortNameTenant; /** * Nome abrevido do tenant corrente identificado no serviço de autorização */ readonly shortNameTenant: string; /** * @ignore */ private _isInitialized; /** * Propriedade que indica que o serviço foi inicializado devido a possibilidade de * carregar o serviço de forma lazy */ readonly isInitialized: boolean; /** * Usuário autenticado */ private _currentUser; /** * Propriedade que possui as configurações de gerenciamento de sessão e token */ private authSettingsUsed; /** * Propriedade que possui as configurações de gerenciamento de sessão e token definidos pelo token de injeção */ private authSettingsTemplate; /** * Propriedade do tipo UserManager que fornece comportamentos de signin, signout, gerenciamento de sessão */ protected manager: UserManager; /** * Evento emitido nas situações em que o usuário está logado */ userLoadedEvent: EventEmitter; /** * Evento emitido nas situações em que o token de acesso expirou */ accessTokenExpired: EventEmitter; /** * Evento emitido de acordo com o número de segundos definido para disparar * o aviso antes da expiração do token. (Número de segundos definido * no atributo accessTokenExpiringNotificationTime do token de injeção AUTH_SETTINGS) */ accessTokenExpiring: EventEmitter; /** * Método construtor da classe * @param authSettings Token de injeção com as configurações de autenticação * @param authType Token de injeção com o tipo de autenticação */ constructor(authSettings: IAuthSettings); /** * Método responsável por inicializar o UserManager * @param authSettings Configurações de gerenciamento de sessão e token */ private init; /** * Método responsável por identificar o tenant para o serviço de autorização. * Ao setar, o serviço é inicializado novamente * @param shortNameTenant Nome abreviado do tenant * @return Usuário atualmente autenticado */ setShortNameTenant(shortNameTenant: string): Promise; /** * Método responsável por alterar as configurações de autenticação * @param authSettings Configurações de autenticação */ changeAuthSettings(authSettings: IAuthSettings): Promise; /** * Adiciona o evento de aviso que o token irá expirar, de acordo com o número de segundos * definido no atributo accessTokenExpiringNotificationTime do token de injeção AUTH_SETTINGS */ private addEventAccessTokenExpiring; /** * Adiciona o evento de token expirado, após o token expirar o mesmo é disparado */ private addEventAccessTokenExpired; /** * Método responsável por retornar um observable indicando se o usuário * está logado */ isLoggedInObs(): Observable; /** * Método responsável por retornar o tipo do token */ getUserTokenType(): string; /** * Método responsável por retornar o token de acesso */ getUserAccessToken(): string; /** * Método responsável por retornar o usuário autenticado */ getUser(): Promise; /** * Utiliza o parâmetro extractFromTokenToUserProfile para extrair apenas os dados especificados * @param decodedJsonToken O objeto json decodificado */ extractDataFrom(decodedJsonToken: any): any; /** * Método responsável por retornar o header de autorização */ getAuthorizationHeaderValue(): string; /** * Método responsável por redirecionar a janela atual para o endpoint * de autorização */ signinRedirect(): void; /** * Método responsável por redirecionar a janela atual para * o endpoint de término da sessão */ signoutRedirect(): void; /** * Método responsável por processar a resposta do endpoint de autorização, * retornando o usuário autenticado */ signinRedirectCallback(): Promise; /** * Método disparado ao completar autenticação, emitindo evento caso * o usuário esteja realmente autenticado, ou redirecionando para o endpoint de autorização * caso não esteja autenticado */ completeAuthentication(): Promise; /** * Método responsável por autorizar o direcionamento para uma determinada rota, * caso o usuário esteja expirado executa o processo de signout, caso esteja inválido * executa a função para o processo de login */ authorize(): Promise; /** * Método responsável executar o processo de login/autenticação */ abstract loginFlow(): Promise; /** * Método responsável executar o processo de logout */ abstract logoutFlow(): Promise; }