import { HttpClient, HttpErrorResponse } from "@angular/common/http"; import { Observable } from "rxjs"; import { W3StorageService } from "../storage/storage.service"; import { W3MeService } from "./me.service"; import { UserModel } from "./auth.model"; /** * Essential service for authentication * */ export declare abstract class W3AuthAbstractService { protected http: HttpClient; protected storage: W3StorageService; protected me: W3MeService; /** * Headers for auth request's */ protected _headers: {}; /** * * @param http Angular common HttpClientModule * @param storage Service de Storage do W3 * @param me Service de controlo do usuário logado do W3 */ protected constructor(http: HttpClient, storage: W3StorageService, me: W3MeService); abstract login(email: string, password: string): Observable; /** * Url de refresh token (deve ser sobreescrita), e.g `.../rapi/guardian/auth/refresh` */ abstract getUrlRefreshToken(): string; /** * Url para expirar o token */ getUrlRevokeToken(): string; getLogoutUrl(): string; /** * Check, if user already authorized. * * Should return Observable with true or false values */ isAuthorized(): Observable; /** * Get access token * * Should return access token in Observable from e.g. * localStorage */ getAccessToken(): Observable; /** * Function, that should perform refresh token verifyTokenRequest * * Should be successfully completed so interceptor * can execute pending requests or retry original one */ refreshToken(): Observable; forceLogout(): void; /** * Function, checks response of failed request to determine, * whether token be refreshed or not. * * Essentially checks status */ refreshShouldHappen(response: HttpErrorResponse): boolean; /** * Verify that outgoing request is refresh-token, * so interceptor won't intercept this request */ verifyTokenRequest(url: string): boolean; /** * Seta na sessão do navegador dados de auth e.g token, expires_at.... * @param authResult Result do login */ setSession(authResult: any): void; /** * Método 'Esqueci minha senha' (deve ser sobreescrito) * @param data */ remind(data: any): Observable; /** * Método 'Recuperar senha' (deve ser sobreescrito) * @param data */ reset(data: any): Observable; /** * Método que realiza o logout e limpa a sessão */ logout(): Observable; /** * Método que remove os dados da sessão */ clearToken(): void; /** * Verifica se o usuário está logado */ isLoggedIn(): boolean; /** * Verifica se o usuário está logado * @see isLoggedIn */ isLoggedOut(): boolean; /** * Recupera o time de expiração do token */ getExpiration(): any; /** * Add token to headers, dependent on server * set-up, by default adds a bearer token. * Called by interceptor. * * To change behavior, override this method. */ getHeaders(token: string): { [p: string]: string | string[]; }; /** * * @param key nome do header. e.g `Content-Type` * @param value valor do header. e.g `application/json` */ addHeader(key: any, value: any): void; abstract getSessions(params?: any): Observable; }