ngx-oauth 7.0.1 → 8.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -195
- package/fesm2022/ngx-oauth-component.mjs +272 -0
- package/fesm2022/ngx-oauth-component.mjs.map +1 -0
- package/fesm2022/ngx-oauth.mjs +488 -669
- package/fesm2022/ngx-oauth.mjs.map +1 -1
- package/package.json +16 -10
- package/types/ngx-oauth-component.d.ts +51 -0
- package/types/ngx-oauth.d.ts +166 -0
- package/components/index.d.ts +0 -1
- package/components/o-auth-login.component.d.ts +0 -47
- package/config/index.d.ts +0 -17
- package/esm2022/components/index.mjs +0 -2
- package/esm2022/components/o-auth-login.component.mjs +0 -261
- package/esm2022/config/index.mjs +0 -32
- package/esm2022/index.mjs +0 -8
- package/esm2022/models/index.mjs +0 -16
- package/esm2022/ngx-oauth.mjs +0 -5
- package/esm2022/services/index.mjs +0 -5
- package/esm2022/services/o-auth-http-client.mjs +0 -15
- package/esm2022/services/o-auth-token.service.mjs +0 -80
- package/esm2022/services/o-auth.interceptor.mjs +0 -43
- package/esm2022/services/o-auth.service.mjs +0 -302
- package/index.d.ts +0 -4
- package/models/index.d.ts +0 -100
- package/services/index.d.ts +0 -4
- package/services/o-auth-http-client.d.ts +0 -6
- package/services/o-auth-token.service.d.ts +0 -21
- package/services/o-auth.interceptor.d.ts +0 -2
- package/services/o-auth.service.d.ts +0 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-oauth.mjs","sources":["../../../projects/ngx-oauth/src/models/index.ts","../../../projects/ngx-oauth/src/config/index.ts","../../../projects/ngx-oauth/src/services/o-auth-http-client.ts","../../../projects/ngx-oauth/src/services/o-auth-token.service.ts","../../../projects/ngx-oauth/src/services/o-auth.service.ts","../../../projects/ngx-oauth/src/services/o-auth.interceptor.ts","../../../projects/ngx-oauth/src/components/o-auth-login.component.ts","../../../projects/ngx-oauth/src/index.ts","../../../projects/ngx-oauth/src/ngx-oauth.ts"],"sourcesContent":["import {HttpHeaders} from '@angular/common/http';\n\nexport const HEADER_APPLICATION = new HttpHeaders({'Content-Type': 'application/x-www-form-urlencoded'});\n\nexport enum OAuthType {\n RESOURCE = 'password',\n AUTHORIZATION_CODE = 'code',\n IMPLICIT = 'token',\n CLIENT_CREDENTIAL = 'client_credentials'\n}\n\nexport interface ClientCredentialConfig {\n tokenPath: string;\n revokePath?: string;\n clientId: string;\n clientSecret?: string;\n scope?: string;\n}\n\n// tslint:disable-next-line:no-empty-interface\nexport interface ResourceConfig extends ClientCredentialConfig {\n}\n\nexport interface ImplicitConfig {\n authorizePath: string;\n revokePath?: string;\n clientId: string;\n scope?: string;\n logoutPath?: string;\n logoutRedirectUri?: string;\n}\n\nexport interface AuthorizationCodeConfig extends ResourceConfig {\n authorizePath: string;\n}\n\nexport interface AuthorizationCodePKCEConfig extends AuthorizationCodeConfig {\n pkce: boolean;\n}\n\nexport interface OpenIdConfig {\n issuerPath: string;\n clientId: string;\n clientSecret?: string;\n scope?: string;\n}\n\nexport interface ResourceParameters {\n username: string;\n password: string;\n}\n\nexport interface AuthorizationParameters {\n redirectUri: string;\n responseType: OAuthType.IMPLICIT | OAuthType.AUTHORIZATION_CODE | string;\n state?: string;\n}\n\nexport type OAuthParameters = ResourceParameters | AuthorizationParameters;\nexport type OAuthTypeConfig = OpenIdConfig\n | AuthorizationCodePKCEConfig\n | AuthorizationCodeConfig\n | ImplicitConfig\n | ResourceConfig\n | ClientCredentialConfig;\n\nexport interface OAuthToken {\n id_token?: string;\n access_token?: string;\n refresh_token?: string;\n token_type?: string;\n state?: string;\n error?: string;\n error_description?: string;\n expires_in?: number | string;\n refresh_expires_in?: number | string;\n scope?: string;\n codeVerifier?: string;\n nonce?: string;\n type?: OAuthType;\n expires?: number;\n\n [x: string]: any;\n}\n\nexport enum OAuthStatus {\n NOT_AUTHORIZED = 'NOT_AUTHORIZED',\n AUTHORIZED = 'AUTHORIZED',\n DENIED = 'DENIED'\n}\n\nexport interface OpenIdConfiguration {\n issuer?: string;\n authorization_endpoint?: string;\n introspection_endpoint?: string;\n token_endpoint?: string;\n userinfo_endpoint?: string;\n end_session_endpoint?: string;\n revocation_endpoint?: string;\n scopes_supported?: string[];\n code_challenge_methods_supported?: string[];\n}\n\nexport interface UserInfo {\n email?: string;\n email_verified?: boolean;\n family_name?: string;\n given_name?: string;\n name?: string;\n preferred_username?: string;\n sub?: string;\n address?: object;\n picture?: string;\n locale?: string;\n}\n\nexport interface IntrospectInfo extends UserInfo {\n active: boolean;\n scope: string;\n client_id?: string;\n username: string;\n exp: number;\n}\n","import {FactoryProvider, inject, Injectable, InjectionToken, ValueProvider} from '@angular/core';\nimport {OAuthTypeConfig} from '../models';\n\nexport const OAUTH_CONFIG = new InjectionToken<OAuthConfig[]>('OAuthConfig');\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => ({...p, ...c}), defaultOAuthConfig)\n})\nexport abstract class OAuthConfig {\n config?: OAuthTypeConfig;\n storageKey?: string;\n storage?: Storage;\n location?: Location\n ignorePaths?: RegExp[];\n\n [x: string]: any;\n}\n\nexport const provideOAuthConfig = (config: OAuthConfig = {}): ValueProvider => ({\n provide: OAUTH_CONFIG,\n useValue: config,\n multi: true\n});\n\nexport const provideOAuthConfigFactory = (factory: Function, deps?: any[]): FactoryProvider => ({\n provide: OAUTH_CONFIG,\n useFactory: factory,\n deps: deps,\n multi: true\n});\n\nexport const defaultOAuthConfig: OAuthConfig = {\n storage: globalThis.localStorage,\n location: globalThis.location,\n storageKey: 'token',\n ignorePaths: []\n}\n","import {inject, Injectable} from '@angular/core';\nimport {HttpBackend, HttpClient} from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new HttpClient(inject(HttpBackend)),\n})\nexport abstract class OAuthHttpClient extends HttpClient {\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, distinctUntilChanged, Observable, of, switchMap} from 'rxjs';\nimport {HEADER_APPLICATION, OAuthToken} from '../models';\nimport {catchError, map, shareReplay} from 'rxjs/operators';\nimport {HttpParams} from '@angular/common/http';\nimport {OAuthHttpClient} from './o-auth-http-client';\nimport {OAuthConfig} from '../config';\n\nconst isExpiredToken = (token?: OAuthToken) => token && token.expires && Date.now() > token.expires || false;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OAuthTokenService {\n\n #token$ = new BehaviorSubject<OAuthToken>(this.saved);\n token$ = this.#token$.pipe(\n distinctUntilChanged((p, c) => JSON.stringify(p || null) === JSON.stringify(c || null)),\n shareReplay(1),\n switchMap(token => !isExpiredToken(token) && of(token) || this.refreshToken(token)),\n );\n type$ = this.token$.pipe(\n map(token => token?.type),\n shareReplay(1)\n );\n accessToken$ = this.token$.pipe(\n map(token => token?.access_token),\n shareReplay(1),\n );\n\n constructor(protected authConfig: OAuthConfig,\n protected http: OAuthHttpClient) {\n }\n\n get token() {\n return this.#token$.value;\n }\n\n set token(token) {\n const expiresIn = Number(token.expires_in) || 0;\n const result = {\n ...token,\n ...expiresIn && {expires: Date.now() + expiresIn * 1000} || {}\n };\n this.saved = result;\n this.#token$.next(result);\n }\n\n get saved() {\n const {storageKey, storage} = this.authConfig;\n return storageKey && storage && storage[storageKey] && JSON.parse(storage[storageKey]) || {};\n }\n\n set saved(token: OAuthToken) {\n const {storageKey, storage} = this.authConfig;\n if (storage && storageKey) {\n if (token) {\n storage[storageKey] = JSON.stringify(token);\n } else {\n delete storage[storageKey];\n }\n }\n }\n\n protected refreshToken(token?: OAuthToken): Observable<OAuthToken> {\n const {tokenPath, clientId, clientSecret, scope} = this.authConfig.config as any;\n const {refresh_token} = token || {};\n return tokenPath && refresh_token && this.http.post<OAuthToken>(tokenPath, new HttpParams({\n fromObject: {\n client_id: clientId,\n ...clientSecret && {client_secret: clientSecret} || {},\n grant_type: 'refresh_token',\n refresh_token,\n ...scope && {scope} || {},\n }\n }), {\n headers: HEADER_APPLICATION\n }).pipe(\n catchError(() => {\n this.token = {};\n return of(this.token);\n }),\n map(token => {\n this.token = {\n ...this.token,\n ...token\n };\n return this.token;\n })\n ) || of(token);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {catchError, concatMap, delay, filter, map, shareReplay, switchMap, tap} from 'rxjs/operators';\nimport {firstValueFrom, from, noop, of, ReplaySubject, throwError} from 'rxjs';\nimport {\n AuthorizationCodeConfig,\n AuthorizationParameters,\n HEADER_APPLICATION,\n OAuthParameters,\n OAuthStatus,\n OAuthToken,\n OAuthType,\n OAuthTypeConfig,\n OpenIdConfig,\n OpenIdConfiguration,\n ResourceParameters,\n UserInfo\n} from '../models';\nimport {Location as Location2} from '@angular/common';\nimport {OAuthTokenService} from './o-auth-token.service';\nimport {OAuthConfig} from '../config';\n\nconst arrToString = (buf: Uint8Array) => buf.reduce((s, b) => s + String.fromCharCode(b), '');\n\nconst base64url = (str: string) => btoa(str)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n\nconst randomString = (length: number = 48) => {\n const buff = arrToString(crypto.getRandomValues(new Uint8Array(length * 2)));\n return base64url(buff).substring(0, length);\n};\n\nconst pkce = async (value: string) => {\n const buff = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(value));\n return base64url(arrToString(new Uint8Array(buff)));\n};\n\nconst parseOauthUri = (hash: string) => {\n const regex = /([^&=]+)=([^&]*)/g;\n const params: Record<string, string> = {};\n let m;\n // tslint:disable-next-line:no-conditional-assignment\n while ((m = regex.exec(hash)) !== null) {\n params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);\n }\n return Object.keys(params).length && params || {};\n};\n\nconst jwt = (token: string) => JSON.parse(atob(token.split('.')[1]));\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OAuthService {\n\n state$ = new ReplaySubject<string>(1);\n config$ = of(this.config).pipe(\n filter(Boolean),\n filter(config => !!config?.clientId),\n map(config => config as OpenIdConfig),\n switchMap(config => !config.issuerPath && of(config) || this.http.get<OpenIdConfiguration>(`${config.issuerPath}/.well-known/openid-configuration?client_id=${config.clientId}`).pipe(\n tap(v => this.config = {\n ...v.authorization_endpoint && {authorizePath: v.authorization_endpoint} || {},\n ...v.token_endpoint && {tokenPath: v.token_endpoint} || {},\n ...v.revocation_endpoint && {revokePath: v.revocation_endpoint} || {},\n ...v.code_challenge_methods_supported && {pkce: v.code_challenge_methods_supported.indexOf('S256') > -1} || {},\n ...v.userinfo_endpoint && {userPath: v.userinfo_endpoint} || {},\n ...v.introspection_endpoint && {introspectionPath: v.introspection_endpoint} || {},\n ...v.end_session_endpoint && {logoutPath: v.end_session_endpoint} || {},\n ...{scope: config.scope || 'openid'}\n } as any),\n map(() => this.config)\n )),\n shareReplay(1)\n );\n token$ = this.config$.pipe(\n tap(config => {\n const {hash, search, origin, pathname} = this.authConfig.location || {};\n const isImplicitRedirect = hash && /(access_token=)|(error=)/.test(hash);\n const isAuthCodeRedirect = search && /(code=)|(error=)/.test(search) || hash && /(code=)|(error=)/.test(hash);\n if (isImplicitRedirect) {\n const parameters = parseOauthUri(hash.substring(1));\n this.token = {\n ...parameters,\n type: OAuthType.IMPLICIT,\n };\n this.checkResponse(this.token, parameters);\n } else if (isAuthCodeRedirect) {\n const parameters = parseOauthUri(search && search.substring(1) || hash && hash.substring(1) || '');\n if (!this.checkResponse(this.token, parameters)) {\n this.token = parameters;\n } else {\n const newParametersString = this.getCleanedUnSearchParameters();\n const {clientId, clientSecret, tokenPath, scope} = config as AuthorizationCodeConfig;\n const {codeVerifier} = this.token || {}; //should be set by authorizationUrl construction\n this.http.post(tokenPath, new HttpParams({\n fromObject: {\n code: parameters?.['code'],\n client_id: clientId,\n ...clientSecret && {client_secret: clientSecret} || {},\n redirect_uri: `${origin}${pathname}`,\n grant_type: 'authorization_code',\n ...scope && {scope} || {},\n ...codeVerifier && {code_verifier: codeVerifier} || {}\n }\n }), {headers: HEADER_APPLICATION}).pipe(\n ).subscribe(token => {\n this.token = {\n ...token,\n type: OAuthType.AUTHORIZATION_CODE\n };\n this.locationService.replaceState(`${pathname}${newParametersString}`);\n });\n }\n }\n }),\n switchMap(() => this.tokenService.token$),\n shareReplay(1)\n );\n status$ = this.token$.pipe(\n map(token => token.access_token && OAuthStatus.AUTHORIZED || token.error && OAuthStatus.DENIED || OAuthStatus.NOT_AUTHORIZED),\n shareReplay(1)\n );\n userInfo$ = this.status$.pipe(\n filter(s => s === OAuthStatus.AUTHORIZED),\n map(() => (this.config as any).userPath),\n filter(Boolean),\n switchMap(path => this.getUserInfo(path)),\n shareReplay(1)\n );\n type$ = this.tokenService.type$;\n ignorePaths = this.authConfig.ignorePaths || [];\n\n get storageKey() {\n return this.authConfig.storageKey;\n }\n\n set storageKey(storageKey) {\n if (storageKey) {\n this.authConfig.storageKey = storageKey;\n this.tokenService.token = this.tokenService.saved;\n }\n }\n\n get token() {\n return this.tokenService.token;\n }\n\n set token(token) {\n this.tokenService.token = token;\n }\n\n get config() {\n return this.authConfig.config;\n }\n\n set config(config: OAuthTypeConfig | undefined) {\n if (config) {\n this.authConfig.config = {\n ...this.authConfig.config,\n ...config\n };\n }\n }\n\n constructor(protected authConfig: OAuthConfig,\n protected tokenService: OAuthTokenService,\n protected http: HttpClient,\n protected locationService: Location2) {\n }\n\n async login(parameters?: OAuthParameters) {\n if (!!parameters && (parameters as ResourceParameters).password) {\n await this.resourceLogin(parameters as ResourceParameters);\n } else if (!!parameters && (parameters as AuthorizationParameters).redirectUri && (parameters as AuthorizationParameters).responseType\n ) {\n await this.toAuthorizationUrl(parameters as AuthorizationParameters);\n } else {\n await this.clientCredentialLogin();\n }\n }\n\n logout(useLogoutUrl?: boolean) {\n this.revoke();\n this.token = {};\n const {logoutPath, logoutRedirectUri} = this.authConfig.config as any;\n if (useLogoutUrl && logoutPath) {\n const {origin, pathname} = this.authConfig.location || {};\n const currentPath = `${origin}${pathname}`;\n this.authConfig.location?.replace(`${logoutPath}?post_logout_redirect_uri=${logoutRedirectUri || currentPath}`);\n }\n }\n\n getUserInfo(path?: string) {\n const {userPath} = this.config as any;\n return this.http.get<UserInfo>(path || userPath);\n }\n\n protected revoke() {\n const {revokePath, clientId, clientSecret} = this.authConfig.config as any;\n if (revokePath) {\n const {access_token, refresh_token} = this.token || {};\n const toRevoke = [];\n if (access_token) {\n toRevoke.push({\n ...clientId && {client_id: clientId} || {},\n ...clientSecret && {client_secret: clientSecret} || {},\n token: access_token,\n token_type_hint: 'access_token'\n });\n }\n if (refresh_token) {\n toRevoke.push({\n ...clientId && {client_id: clientId} || {},\n ...clientSecret && {client_secret: clientSecret} || {},\n token: refresh_token,\n token_type_hint: 'refresh_token'\n });\n }\n from(toRevoke).pipe(\n concatMap(o => of(o).pipe(delay(300))), // space request to avoid cancellation\n switchMap(o => this.http.post(revokePath, new HttpParams({fromObject: o}))),\n ).subscribe(noop);\n }\n }\n\n protected clientCredentialLogin() {\n const {clientId, clientSecret, tokenPath, scope} = this.authConfig.config as any;\n return firstValueFrom(this.http.post(tokenPath, new HttpParams({\n fromObject: {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: OAuthType.CLIENT_CREDENTIAL,\n ...scope ? {scope} : {},\n }\n }), {headers: HEADER_APPLICATION}).pipe(\n catchError((err) => {\n this.token = err;\n return throwError(() => err);\n }),\n tap(params => {\n this.token = {\n ...params,\n type: OAuthType.CLIENT_CREDENTIAL,\n };\n }),\n ));\n }\n\n protected resourceLogin(parameters: ResourceParameters) {\n const {clientId, clientSecret, tokenPath, scope} = this.authConfig.config as any;\n const {username, password} = parameters;\n return firstValueFrom(this.http.post(tokenPath, new HttpParams({\n fromObject: {\n client_id: clientId,\n ...clientSecret && {client_secret: clientSecret} || {},\n grant_type: OAuthType.RESOURCE,\n ...scope && {scope} || {},\n username,\n password\n }\n }), {headers: HEADER_APPLICATION}).pipe(\n catchError(err => {\n this.token = err;\n return throwError(() => err);\n }),\n tap(params => {\n this.token = {\n ...params,\n type: OAuthType.RESOURCE,\n };\n })\n ));\n }\n\n protected async toAuthorizationUrl(parameters: AuthorizationParameters) {\n const {config, location} = this.authConfig as any;\n let authorizationUrl = `${config.authorizePath}`;\n authorizationUrl += config.authorizePath.includes('?') && '&' || '?';\n authorizationUrl += `client_id=${config.clientId}`;\n authorizationUrl += `&redirect_uri=${encodeURIComponent(parameters.redirectUri)}`;\n authorizationUrl += `&response_type=${parameters.responseType}`;\n authorizationUrl += `&scope=${encodeURIComponent(config.scope || '')}`;\n authorizationUrl += `&state=${encodeURIComponent(parameters.state || '')}`;\n return location?.replace(`${authorizationUrl}${this.generateNonce(config)}${await this.generateCodeChallenge(config)}`);\n }\n\n protected async generateCodeChallenge(config: any) {\n if (config.pkce) {\n const codeVerifier = randomString();\n this.token = {...this.token, codeVerifier};\n return `&code_challenge=${await pkce(codeVerifier)}&code_challenge_method=S256`;\n }\n return '';\n }\n\n protected generateNonce(config: any) {\n if (config && config.scope && config.scope.indexOf('openid') > -1) {\n const nonce = randomString(10);\n this.token = {...this.token, nonce};\n return `&nonce=${nonce}`;\n }\n return '';\n }\n\n private checkResponse(token?: OAuthToken,\n parameters?: Record<string, string>) {\n this.emitState(parameters);\n this.cleanLocationHash();\n if (!parameters || parameters['error']) {\n return false;\n }\n if (token && token.nonce && parameters['access_token']) {\n const jwtToken = jwt(parameters['access_token']);\n return token.nonce === jwtToken.nonce;\n }\n return parameters['access_token'] || parameters['code'];\n }\n\n private getCleanedUnSearchParameters() {\n const {search} = this.authConfig.location || {};\n let searchString = search && search.substring(1) || '';\n const hashKeys = ['code', 'state', 'error', 'error_description', 'session_state', 'scope', 'authuser', 'prompt', 'iss'];\n hashKeys.forEach(hashKey => {\n const re = new RegExp('&' + hashKey + '(=[^&]*)?|^' + hashKey + '(=[^&]*)?&?');\n searchString = searchString.replace(re, '');\n });\n return searchString.length && `?${searchString}` || '';\n }\n\n private cleanLocationHash() {\n if (this.authConfig.location) {\n const {hash} = this.authConfig.location;\n let curHash = hash && hash.substring(1) || '';\n const hashKeys = [\n 'access_token',\n 'token_type',\n 'expires_in',\n 'scope',\n 'state',\n 'error',\n 'error_description',\n 'session_state',\n 'nonce',\n 'id_token',\n 'code',\n 'iss'\n ];\n hashKeys.forEach(hashKey => {\n const re = new RegExp('&' + hashKey + '(=[^&]*)?|^' + hashKey + '(=[^&]*)?&?');\n curHash = curHash.replace(re, '');\n });\n this.authConfig.location.hash = curHash;\n }\n }\n\n private emitState(parameters?: Record<string, string>) {\n const {state} = parameters || {};\n state && this.state$.next(state);\n }\n}\n","import {inject} from '@angular/core';\nimport {HttpErrorResponse, HttpHandlerFn, HttpInterceptorFn, HttpRequest} from '@angular/common/http';\nimport {switchMap, take, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\nimport {OAuthTokenService} from './o-auth-token.service';\nimport {OAuthConfig} from '../config';\n\nexport const OAuthInterceptor: HttpInterceptorFn = (req: HttpRequest<any>, next: HttpHandlerFn) => {\n const authConfig = inject(OAuthConfig)\n const tokenService = inject(OAuthTokenService)\n const isPathExcepted = (req: HttpRequest<any>) => {\n const {ignorePaths} = authConfig || {};\n if (ignorePaths) {\n for (const ignorePath of ignorePaths) {\n try {\n if (req.url.match(ignorePath)) {\n return true;\n }\n } catch (err) {\n }\n }\n }\n return false;\n }\n return isPathExcepted(req) && next(req) || tokenService.token$.pipe(\n take(1),\n map(token => {\n if (token?.access_token) {\n req = req.clone({\n setHeaders: {\n Authorization: `${token.token_type} ${token.access_token}`\n }\n })\n }\n return req\n }),\n switchMap(req => next(req)),\n catchError((err: HttpErrorResponse) => {\n if (err.status === 401) {\n tokenService.token = {\n error: `${err.status}`,\n error_description: err.message\n };\n }\n return throwError(() => err);\n })\n );\n}\n","import {Component, ContentChild, HostListener, Input, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\r\nimport {Observable, take} from 'rxjs';\r\nimport {tap} from 'rxjs/operators';\r\nimport { CommonModule, Location as Location2 } from '@angular/common';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {OAuthParameters, OAuthType, OAuthStatus} from '../models';\r\nimport {OAuthService} from '../services';\r\n\r\nexport interface OAuthLoginI18n {\r\n username?: string;\r\n password?: string;\r\n submit?: string;\r\n notAuthorized?: string;\r\n authorized?: string;\r\n denied?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'oauth-login',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n],\r\n template: `\r\n@if (loginTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"loginTemplate\"\r\n [ngTemplateOutletContext]=\"{login: loginFunction, logout: logoutFunction, status: status$ | async}\">\r\n </ng-container>\r\n} @else {\r\n @if (status$ | async; as status) {\r\n @if (type === OAuthType.RESOURCE) {\r\n <div class=\"oauth dropdown text-end {{collapse ? 'show': ''}}\">\r\n <button class=\"btn btn-link p-0 dropdown-toggle\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : toggleCollapse()\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </button>\r\n <div class=\"dropdown-menu mr-3 {{collapse ? 'show': ''}}\">\r\n @if (status === OAuthStatus.NOT_AUTHORIZED || status === OAuthStatus.DENIED) {\r\n <form class=\"p-3\"\r\n #form=\"ngForm\"\r\n (submit)=\"login({username: username, password: password})\">\r\n <div class=\"mb-3\">\r\n <input type=\"text\"\r\n class=\"form-control\"\r\n name=\"username\"\r\n required\r\n [(ngModel)]=\"username\"\r\n [placeholder]=\"i18n.username\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <input type=\"password\"\r\n class=\"form-control\"\r\n name=\"password\"\r\n required\r\n [(ngModel)]=\"password\"\r\n [placeholder]=\"i18n.password\">\r\n </div>\r\n <div class=\"text-end\">\r\n <button type=\"submit\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"form.invalid\">{{i18n.submit}}</button>\r\n </div>\r\n </form>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <a role=\"button\"\r\n class=\"oauth\"\r\n (click)=\"status === OAuthStatus.AUTHORIZED ? logout() : login({responseType: responseType, redirectUri: redirectUri, state:state})\">\r\n <ng-container *ngTemplateOutlet=\"message\"></ng-container>\r\n </a>\r\n }\r\n <ng-template #message>\r\n @if (status === OAuthStatus.NOT_AUTHORIZED) {\r\n <span class=\"not-authorized\"\r\n [innerHTML]=\"i18n.notAuthorized\"></span>\r\n }\r\n @if (status === OAuthStatus.AUTHORIZED) {\r\n <span class=\"authorized\"\r\n >\r\n <span class=\"welcome\" [innerHTML]=\"i18n.authorized + ' '\"></span>\r\n <strong class=\"profile-name\"\r\n [innerHTML]=\"profileName\"></strong>\r\n </span>\r\n }\r\n @if (status === OAuthStatus.DENIED) {\r\n <span class=\"denied\"\r\n [innerHTML]=\"i18n.denied\"></span>\r\n }\r\n </ng-template>\r\n }\r\n }\r\n `,\r\n styles: [`\r\n .oauth {\r\n\r\n .dropdown-menu {\r\n left: auto;\r\n right: 0;\r\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\r\n min-width: 250px;\r\n\r\n &:before {\r\n content: '';\r\n display: inline-block;\r\n border-left: 7px solid transparent;\r\n border-right: 7px solid transparent;\r\n border-bottom: 7px solid #ccc;\r\n border-bottom-color: rgba(0, 0, 0, 0.2);\r\n position: absolute;\r\n top: -7px;\r\n left: auto;\r\n right: 15px;\r\n }\r\n\r\n &:after {\r\n content: '';\r\n display: inline-block;\r\n border-left: 6px solid transparent;\r\n border-right: 6px solid transparent;\r\n border-bottom: 6px solid #ffffff;\r\n position: absolute;\r\n top: -6px;\r\n left: auto;\r\n right: 16px;\r\n }\r\n }\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class OAuthLoginComponent {\r\n\r\n #redirectUri?: string;\r\n #responseType?: string;\r\n #i18n: OAuthLoginI18n = {\r\n username: 'Username',\r\n password: 'Password',\r\n submit: 'Sign in',\r\n notAuthorized: 'Sign in',\r\n authorized: 'Welcome',\r\n denied: 'Access Denied. Try again!'\r\n };\r\n\r\n get i18n() {\r\n return this.#i18n;\r\n }\r\n\r\n @Input()\r\n type: OAuthType = OAuthType.RESOURCE;\r\n\r\n @Input()\r\n set i18n(i18n) {\r\n this.#i18n = {\r\n ...this.#i18n,\r\n ...i18n\r\n };\r\n }\r\n\r\n get redirectUri() {\r\n return this.#redirectUri || `${globalThis.location?.origin}${this.locationService.path(true) || '/'}`;\r\n }\r\n\r\n @Input()\r\n set redirectUri(redirectUri: string) {\r\n if (redirectUri) {\r\n this.#redirectUri = redirectUri;\r\n }\r\n }\r\n\r\n @Input()\r\n set responseType(responseType: string) {\r\n if (this.responseType) {\r\n this.#responseType = responseType;\r\n }\r\n }\r\n\r\n get responseType() {\r\n return this.#responseType || this.type;\r\n }\r\n\r\n @Input()\r\n useLogoutUrl = false;\r\n @Input()\r\n state = '';\r\n @Output()\r\n stateChange = this.oauthService.state$.asObservable();\r\n @Input()\r\n profileName$: Observable<string | undefined> | undefined;\r\n @ContentChild('login', {static: false})\r\n loginTemplate: TemplateRef<any> | null = null;\r\n username = '';\r\n password = '';\r\n profileName?: string;\r\n OAuthStatus = OAuthStatus;\r\n OAuthType = OAuthType;\r\n collapse = false;\r\n status$ = this.oauthService.status$.pipe(\r\n tap(s => {\r\n if (s === OAuthStatus.AUTHORIZED && this.profileName$) {\r\n this.profileName$.pipe(\r\n take(1)\r\n ).subscribe(n => this.profileName = n);\r\n } else {\r\n const {token} = this.oauthService;\r\n const userInfo = token && token.id_token && JSON.parse(atob(token.id_token.split('.')[1])) || {};\r\n this.profileName = userInfo.name || userInfo.username || userInfo.email || userInfo.sub || '';\r\n }\r\n })\r\n );\r\n loginFunction = (p: OAuthParameters) => this.login(p);\r\n logoutFunction = () => this.logout();\r\n\r\n constructor(private oauthService: OAuthService,\r\n private locationService: Location2) {\r\n }\r\n\r\n logout() {\r\n this.oauthService.logout(this.useLogoutUrl);\r\n }\r\n\r\n login(parameters: OAuthParameters) {\r\n this.collapse = false;\r\n return this.oauthService.login(parameters);\r\n }\r\n\r\n toggleCollapse() {\r\n this.collapse = !this.collapse;\r\n }\r\n\r\n @HostListener('window:keydown.escape')\r\n keyboardEvent() {\r\n this.collapse = false;\r\n }\r\n}\r\n","/*\n * Public API Surface of ngx-oauth\n */\nexport * from './models'\nexport * from './config'\nexport * from './services'\nexport * from './components'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OAuthConfig","i2.OAuthHttpClient","switchMap","i2.OAuthTokenService","i4","i1.OAuthService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-oauth.mjs","sources":["../../../projects/ngx-oauth/oauth/types.ts","../../../projects/ngx-oauth/oauth/config.ts","../../../projects/ngx-oauth/oauth/storage.ts","../../../projects/ngx-oauth/oauth/functions.ts","../../../projects/ngx-oauth/oauth/token.ts","../../../projects/ngx-oauth/oauth/fetch.ts","../../../projects/ngx-oauth/oauth/jwt.ts","../../../projects/ngx-oauth/oauth/user.ts","../../../projects/ngx-oauth/oauth/oauth.ts","../../../projects/ngx-oauth/oauth/index.ts","../../../projects/ngx-oauth/oauth/ngx-oauth.ts"],"sourcesContent":["export type ClientCredentialConfig = {\n tokenPath: string\n revokePath?: string\n clientId: string\n clientSecret?: string\n scope?: string\n userPath?: string\n introspectionPath?: string\n}\n\nexport type ResourceOwnerConfig = ClientCredentialConfig\n\nexport type ImplicitConfig = {\n authorizePath: string\n revokePath?: string\n clientId: string\n scope?: string\n logoutPath?: string\n redirectUri?: string // if not using OAuthParameters\n logoutRedirectUri?: string // if not using OAuthParameters\n userPath?: string\n}\n\nexport type AuthorizationCodeConfig = ResourceOwnerConfig & {\n authorizePath: string\n logoutPath?: string\n redirectUri?: string // if not using OAuthParameters\n logoutRedirectUri?: string // if not using OAuthParameters\n}\n\nexport type AuthorizationCodePKCEConfig = AuthorizationCodeConfig & {\n pkce?: boolean\n}\n\nexport type OpenIdConfig = AuthorizationCodePKCEConfig & {\n issuerPath: string\n jwksUri?: string\n}\n\nexport type ResourceOwnerParameters = {\n username: string\n password: string\n}\n\nexport type AuthorizationCodeParameters = {\n accessType?: 'online' | 'offline'\n prompt?: 'none' | 'consent' | 'login' | 'select_account'\n redirectUri: string\n responseType: OAuthType.IMPLICIT | OAuthType.AUTHORIZATION_CODE | string\n state?: string\n}\n\nexport type OAuthParameters = ResourceOwnerParameters | AuthorizationCodeParameters\nexport type OAuthTypeConfig =\n | OpenIdConfig\n | AuthorizationCodePKCEConfig\n | AuthorizationCodeConfig\n | ImplicitConfig\n | ResourceOwnerConfig\n | ClientCredentialConfig\n\nexport type OAuthConfig = {\n config?: Partial<OAuthTypeConfig>\n storageKey?: string\n ignorePaths?: RegExp[]\n strictJwt?: boolean\n\n [x: string]: any\n}\n\nexport enum OAuthType {\n RESOURCE = 'password',\n AUTHORIZATION_CODE = 'code',\n IMPLICIT = 'token',\n CLIENT_CREDENTIAL = 'client_credentials'\n}\n\nexport type OAuthToken = {\n id_token?: string\n access_token?: string\n refresh_token?: string\n token_type?: string\n state?: string\n error?: string\n error_description?: string\n expires_in?: number | string\n refresh_expires_in?: number | string\n scope?: string\n code_verifier?: string\n nonce?: string\n type?: OAuthType\n expires?: number\n code?: string\n\n [x: string]: any\n}\n\nexport enum OAuthStatus {\n NOT_AUTHORIZED = 'NOT_AUTHORIZED',\n AUTHORIZED = 'AUTHORIZED',\n DENIED = 'DENIED'\n}\n\nexport type OpenIdConfiguration = {\n issuer?: string\n authorization_endpoint?: string\n introspection_endpoint?: string\n token_endpoint?: string\n userinfo_endpoint?: string\n end_session_endpoint?: string\n revocation_endpoint?: string\n jwks_uri?: string\n scopes_supported?: string[]\n code_challenge_methods_supported?: string[]\n}\n\nexport type UserInfo = {\n email?: string\n email_verified?: boolean\n family_name?: string\n given_name?: string\n name?: string\n preferred_username?: string\n sub?: string\n address?: object\n picture?: string\n locale?: string\n\n [x: string]: any\n}\n\nexport type IntrospectInfo = UserInfo & {\n active: boolean\n scope: string\n client_id?: string\n username: string\n exp: number\n}\n","import { EnvironmentProviders, linkedSignal, makeEnvironmentProviders, provideEnvironmentInitializer, signal } from '@angular/core'\nimport { OAuthConfig } from './types'\n\nconst defaults: OAuthConfig = {\n storageKey: 'token',\n ignorePaths: [],\n strictJwt: true\n}\n\nexport const oauthConfig = signal<OAuthConfig>(defaults)\n\nexport const config = linkedSignal(() => oauthConfig().config)\n\nexport const provideOAuthConfig = (cfg: OAuthConfig = {}): EnvironmentProviders =>\n makeEnvironmentProviders([provideEnvironmentInitializer(() => oauthConfig.set({ ...defaults, ...cfg }))])\n","import { signal, Signal, WritableSignal } from '@angular/core'\n\nconst storage = () => {\n const s = globalThis.localStorage\n return typeof s?.getItem === 'function' ? s : undefined\n}\n\nconst get = (key: string) => {\n const value = storage()?.getItem(key)\n try {\n return (value && JSON.parse(value)) || undefined\n } catch {\n return undefined\n }\n}\n\nconst set = (key: string, value: any) => {\n storage()?.setItem(key, JSON.stringify(value))\n}\n\nexport const storageSignal = <T>(keyInput: string | Signal<string>, defaultValue: T): WritableSignal<T> => {\n const keyFn = typeof keyInput === 'function' ? keyInput : () => keyInput\n const s = signal<T>(get(keyFn()) ?? defaultValue)\n const { set: signalSet, update } = s\n\n s.set = value => {\n set(keyFn(), value)\n signalSet(value)\n }\n\n s.update = fn => {\n update(current => {\n const next = fn(current)\n set(keyFn(), next)\n return next\n })\n }\n\n return s\n}\n","import { InjectionToken } from '@angular/core'\nimport { ClientCredentialConfig, OAuthToken, OAuthType, OpenIdConfig, ResourceOwnerConfig, ResourceOwnerParameters } from './types'\n\nconst HEADERS = { 'Content-Type': 'application/x-www-form-urlencoded', Accept: 'application/json' }\n\nconst refresh = async (token?: OAuthToken, config?: Partial<OpenIdConfig>) => {\n const { tokenPath, clientId, clientSecret, scope } = config || {}\n const { refresh_token, type } = token || {}\n if (!refresh_token || !tokenPath) return token\n const result = await fetch(tokenPath, {\n method: 'POST',\n headers: HEADERS,\n body: new URLSearchParams({\n client_id: clientId!,\n ...((clientSecret && { client_secret: clientSecret }) || {}),\n grant_type: 'refresh_token',\n refresh_token,\n ...((scope && { scope }) || {})\n })\n }).then(r => r.json())\n return result ? { ...result, type } : token\n}\n\nconst revoke = async (token?: OAuthToken, config?: Partial<OpenIdConfig>) => {\n const { revokePath, clientId, clientSecret } = config || {}\n if (!revokePath) return\n const { access_token, refresh_token } = token || {}\n const base = {\n ...((clientId && { client_id: clientId }) || {}),\n ...((clientSecret && { client_secret: clientSecret }) || {})\n }\n if (access_token) {\n await fetch(revokePath, {\n method: 'POST',\n headers: HEADERS,\n body: new URLSearchParams({ ...base, token: access_token, token_type_hint: 'access_token' })\n })\n }\n if (refresh_token) {\n await fetch(revokePath, {\n method: 'POST',\n headers: HEADERS,\n body: new URLSearchParams({ ...base, token: refresh_token, token_type_hint: 'refresh_token' })\n })\n }\n}\n\nconst authorize = async (token?: OAuthToken, config?: Partial<OpenIdConfig>) => {\n const { clientId, clientSecret, tokenPath, scope } = config || {}\n const { code, redirect_uri, code_verifier } = token || {}\n if (!code || !tokenPath) return token\n const result = await fetch(tokenPath, {\n method: 'POST',\n headers: HEADERS,\n body: new URLSearchParams({\n code,\n client_id: clientId!,\n ...((clientSecret && { client_secret: clientSecret }) || {}),\n redirect_uri: redirect_uri!,\n grant_type: 'authorization_code',\n ...((scope && { scope }) || {}),\n ...((code_verifier && { code_verifier }) || {})\n })\n }).then(r => r.json())\n return result ? { ...result, type: OAuthType.AUTHORIZATION_CODE } : token\n}\n\nconst clientCredentialLogin = async (config?: ClientCredentialConfig) => {\n const { clientId, clientSecret, tokenPath, scope } = config || {}\n if (!tokenPath) return undefined\n const result = await fetch(tokenPath, {\n method: 'POST',\n headers: HEADERS,\n body: new URLSearchParams({\n client_id: clientId!,\n client_secret: clientSecret!,\n grant_type: OAuthType.CLIENT_CREDENTIAL,\n ...(scope ? { scope } : {})\n })\n }).then(r => r.json())\n return result ? { ...result, type: OAuthType.CLIENT_CREDENTIAL } : undefined\n}\n\nconst resourceOwnerLogin = async (parameters?: ResourceOwnerParameters, config?: ResourceOwnerConfig) => {\n const { clientId, clientSecret, tokenPath, scope } = config || {}\n const { username, password } = parameters || {}\n if (!tokenPath || !clientId) return undefined\n const result = await fetch(tokenPath, {\n method: 'POST',\n headers: HEADERS,\n body: new URLSearchParams({\n client_id: clientId,\n ...((clientSecret && { client_secret: clientSecret }) || {}),\n grant_type: OAuthType.RESOURCE,\n ...((scope && { scope }) || {}),\n username: username!,\n password: password!\n })\n }).then(r => r.json())\n return result ? { ...result, type: OAuthType.RESOURCE } : undefined\n}\n\nconst openIdConfiguration = async (config?: Partial<OpenIdConfig>) => {\n const { issuerPath, clientId } = config || {}\n if (!issuerPath) return undefined\n return fetch(`${issuerPath}/.well-known/openid-configuration?client_id=${clientId}`).then(r => r.json())\n}\n\nconst userInfo = async (config?: Partial<OpenIdConfig>, fetchFn = fetch) => {\n const { userPath } = config || {}\n if (!userPath) return undefined\n return fetchFn(userPath).then(r => r.json())\n}\n\nconst introspect = async (token?: OAuthToken, config?: Partial<OpenIdConfig>) => {\n const { introspectionPath, clientId, clientSecret } = config || {}\n const { access_token } = token || {}\n if (!introspectionPath || !access_token || !clientId) return undefined\n return fetch(introspectionPath, {\n method: 'POST',\n headers: { ...HEADERS, Authorization: `Basic ${btoa(`${clientId}:${clientSecret}`)}` },\n body: new URLSearchParams({ token: access_token })\n }).then(r => r.json())\n}\n\nexport const OAUTH_REFRESH = new InjectionToken('OAUTH_REFRESH', {\n providedIn: 'root',\n factory: () => refresh\n})\n\nexport const OAUTH_REVOKE = new InjectionToken('OAUTH_REVOKE', {\n providedIn: 'root',\n factory: () => revoke\n})\n\nexport const OAUTH_AUTHORIZE = new InjectionToken('OAUTH_AUTHORIZE', {\n providedIn: 'root',\n factory: () => authorize\n})\n\nexport const OAUTH_CLIENT_CREDENTIAL = new InjectionToken('OAUTH_CLIENT_CREDENTIAL', {\n providedIn: 'root',\n factory: () => clientCredentialLogin\n})\n\nexport const OAUTH_RESOURCE_OWNER = new InjectionToken('OAUTH_RESOURCE_OWNER', {\n providedIn: 'root',\n factory: () => resourceOwnerLogin\n})\n\nexport const OAUTH_OPENID_CONFIG = new InjectionToken('OAUTH_OPENID_CONFIG', {\n providedIn: 'root',\n factory: () => openIdConfiguration\n})\n\nexport const OAUTH_USER_INFO = new InjectionToken('OAUTH_USER_INFO', {\n providedIn: 'root',\n factory: () => userInfo\n})\n\nexport const OAUTH_INTROSPECT = new InjectionToken('OAUTH_INTROSPECT', {\n providedIn: 'root',\n factory: () => introspect\n})\n","import { storageSignal } from './storage'\nimport { config, oauthConfig } from './config'\nimport { OAuthStatus, OAuthToken, OpenIdConfig } from './types'\nimport { computed, effect, inject, InjectionToken, linkedSignal, untracked } from '@angular/core'\nimport { OAUTH_OPENID_CONFIG, OAUTH_REFRESH } from './functions'\n\nconst isExpiredToken = (token?: OAuthToken) => (token?.expires && Date.now() > token.expires) || false\n\nexport const OAUTH_TOKEN = new InjectionToken('OAUTH_TOKEN', {\n providedIn: 'root',\n factory: () => {\n const refresh = inject(OAUTH_REFRESH)\n const openIdConfiguration = inject(OAUTH_OPENID_CONFIG)\n const storageKey = linkedSignal(() => oauthConfig().storageKey as string)\n const token = storageSignal<OAuthToken>(storageKey, {})\n const type = computed(() => token().type)\n const accessToken = computed(() => {\n const { token_type, access_token } = token() || {}\n return (token_type && access_token && `${token_type} ${access_token}`) || undefined\n })\n const status = computed(() => {\n const { error, access_token } = token()\n return (\n (error && OAuthStatus.DENIED) || (access_token && !isExpiredToken(token()) && OAuthStatus.AUTHORIZED) || OAuthStatus.NOT_AUTHORIZED\n )\n })\n const isAuthorized = computed(() => status() === OAuthStatus.AUTHORIZED)\n const error = computed(() => token().error)\n const hasError = computed(() => !!error())\n const errorDescription = computed(() => token().error_description)\n\n const autoconfigOauth = async () => {\n const c = config() as OpenIdConfig\n if (!(c.tokenPath || c.authorizePath)) {\n const v = await openIdConfiguration(c)\n if (v) {\n config.set({\n ...c,\n ...((v?.authorization_endpoint && { authorizePath: v.authorization_endpoint }) || {}),\n ...((v?.token_endpoint && { tokenPath: v.token_endpoint }) || {}),\n ...((v?.revocation_endpoint && { revokePath: v.revocation_endpoint }) || {}),\n ...((v?.userinfo_endpoint && { userPath: v.userinfo_endpoint }) || {}),\n ...((v?.introspection_endpoint && { introspectionPath: v.introspection_endpoint }) || {}),\n ...((v?.end_session_endpoint && { logoutPath: v.end_session_endpoint }) || {}),\n ...((v?.jwks_uri && { jwksUri: v.jwks_uri }) || {}),\n ...((c?.pkce === undefined &&\n v?.code_challenge_methods_supported && { pkce: v.code_challenge_methods_supported.indexOf('S256') > -1 }) ||\n {}),\n ...{ scope: c.scope || 'openid' }\n })\n }\n }\n }\n\n const setExpires = (t: OAuthToken) => {\n const expiresIn = Number(t?.expires_in) || 0\n if (expiresIn && !t.expires) {\n token.set({\n ...t,\n expires: Date.now() + expiresIn * 1000\n })\n }\n }\n\n let inFlight: Promise<void> | undefined\n const checkToken = (t: OAuthToken) => {\n if (inFlight) return inFlight\n inFlight = (async () => {\n if (isExpiredToken(t)) {\n await autoconfigOauth()\n const refreshed = await refresh(t, config())\n if (refreshed && !isExpiredToken(refreshed)) {\n //keep the refresh token cuz we might not net a new one\n setExpires({ refresh_token: t.refresh_token, ...refreshed })\n }\n } else {\n setExpires(t)\n }\n })().finally(() => (inFlight = undefined))\n return inFlight\n }\n\n effect(async () => {\n const t = token()\n await untracked(() => checkToken(t))\n })\n\n return {\n token,\n type,\n accessToken,\n status,\n isAuthorized,\n error,\n hasError,\n errorDescription,\n storageKey,\n checkToken,\n autoconfigOauth,\n isExpiredToken\n }\n }\n})\n","import { computed, inject, InjectionToken } from '@angular/core'\nimport { OAUTH_TOKEN } from './token'\nimport { oauthConfig } from './config'\n\nconst getPath = (input: RequestInfo | URL): string =>\n input instanceof URL ? input.pathname : input instanceof Request ? new URL(input.url).pathname : input\n\nconst isPathIgnored = (input: RequestInfo | URL) => ignorePaths().some(pattern => pattern.test(getPath(input)))\nconst ignorePaths = computed(() => oauthConfig().ignorePaths as RegExp[])\n\nexport const OAUTH_FETCH = new InjectionToken<typeof fetch>('OAUTH_FETCH', {\n providedIn: 'root',\n factory: () => {\n const { token, accessToken, checkToken } = inject(OAUTH_TOKEN)\n return async (input, init) => {\n if (!isPathIgnored(input)) {\n await checkToken(token())\n const at = accessToken()\n if (at) {\n const headers = new Headers(init?.headers)\n headers.set('Authorization', at)\n if (!headers.has('Content-Type')) headers.set('Content-Type', 'application/json')\n const response = await globalThis.fetch(input, { ...init, headers })\n if (response.status === 401) {\n token.set(await response.json())\n }\n return response\n }\n }\n return globalThis.fetch(input, init)\n }\n }\n})\n","import { computed, effect, InjectionToken } from '@angular/core'\nimport { config, oauthConfig } from './config'\nimport { OpenIdConfig } from './types'\nimport { createRemoteJWKSet, jwtVerify } from 'jose'\n\nconst strictJwt = computed(() => oauthConfig().strictJwt)\nconst jwksUri = computed(() => (config() as OpenIdConfig)?.jwksUri)\n\nconst jwt = (idToken?: string) => {\n const payload = idToken?.split('.')[1]\n return payload\n ? JSON.parse(\n decodeURIComponent(\n Array.from(atob(payload))\n .map(c => `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`)\n .join('')\n )\n )\n : {}\n}\n\nlet jwksSet: ReturnType<typeof createRemoteJWKSet> | undefined\n\nconst verifyJwt = async (idToken?: string) => {\n if (!idToken) return {}\n if (!jwksSet) return jwt(idToken)\n const { issuerPath, clientId } = (config() as OpenIdConfig) || {}\n try {\n const { payload } = await jwtVerify(idToken, jwksSet, {\n ...(issuerPath && { issuer: issuerPath }),\n ...(clientId && { audience: clientId })\n })\n return payload\n } catch {\n return { error: 'Invalid token' }\n }\n}\n\nexport const OAUTH_VERIFY_JWT = new InjectionToken('OAUTH_VERIFY_JWT', {\n providedIn: 'root',\n factory: () => {\n effect(() => {\n const uri = jwksUri()\n jwksSet = uri && strictJwt() ? createRemoteJWKSet(new URL(uri)) : undefined\n })\n return verifyJwt\n }\n})\n","import { inject, InjectionToken, resource } from '@angular/core'\nimport { config } from './config'\nimport { OAUTH_FETCH } from './fetch'\nimport { OAUTH_VERIFY_JWT } from './jwt'\nimport { OAUTH_TOKEN } from './token'\nimport { UserInfo } from './types'\nimport { OAUTH_USER_INFO } from './functions'\n\nexport const OAUTH_USER = new InjectionToken('OAUTH_USER', {\n providedIn: 'root',\n factory: () => {\n const { token, isAuthorized, autoconfigOauth } = inject(OAUTH_TOKEN)\n const verifyJwt = inject(OAUTH_VERIFY_JWT)\n const userInfo = inject(OAUTH_USER_INFO)\n const fetch = inject(OAUTH_FETCH)\n return resource<UserInfo | undefined, { idToken?: string; authorized: boolean; userPath?: string }>({\n params: () => ({\n idToken: token().id_token,\n authorized: isAuthorized(),\n userPath: config()?.userPath\n }),\n loader: async ({ params: { idToken, authorized, userPath } }) => {\n if (idToken) return verifyJwt(idToken)\n if (authorized && userPath) {\n await autoconfigOauth()\n return userInfo({ userPath }, fetch)\n }\n return undefined\n }\n })\n }\n})\n","import {\n AuthorizationCodeParameters,\n ClientCredentialConfig,\n OAuthParameters,\n OAuthType,\n OpenIdConfig,\n ResourceOwnerConfig,\n ResourceOwnerParameters\n} from './types'\nimport { OAUTH_TOKEN } from './token'\nimport { config } from './config'\nimport { inject, InjectionToken, signal } from '@angular/core'\nimport { OAUTH_AUTHORIZE, OAUTH_CLIENT_CREDENTIAL, OAUTH_RESOURCE_OWNER, OAUTH_REVOKE } from './functions'\nimport { OAUTH_VERIFY_JWT } from './jwt'\n\nconst arrToString = (buf: Uint8Array) => buf.reduce((s, b) => s + String.fromCharCode(b), '')\nconst base64url = (str: string) => btoa(str).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\nconst randomString = (length = 48) => {\n const buff = arrToString(crypto.getRandomValues(new Uint8Array(length * 2)))\n return base64url(buff).substring(0, length)\n}\nconst pkce = async (value: string) => {\n const buff = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(value))\n return base64url(arrToString(new Uint8Array(buff)))\n}\nconst parseOauthUri = (hash: string) => {\n const params = Object.fromEntries(new URLSearchParams(hash))\n return (Object.keys(params).length && params) || {}\n}\n\nexport const OAUTH = new InjectionToken('OAUTH', {\n providedIn: 'root',\n factory: () => {\n const { token, status, type, isAuthorized, storageKey, autoconfigOauth } = inject(OAUTH_TOKEN)\n const resourceOwnerLogin = inject(OAUTH_RESOURCE_OWNER)\n const clientCredentialLogin = inject(OAUTH_CLIENT_CREDENTIAL)\n const revoke = inject(OAUTH_REVOKE)\n const authorize = inject(OAUTH_AUTHORIZE)\n const verifyJwt = inject(OAUTH_VERIFY_JWT)\n const state = signal<string | undefined>(undefined)\n\n const login = async (parameters?: OAuthParameters) => {\n await autoconfigOauth()\n if (!!parameters && (parameters as ResourceOwnerParameters).password) {\n token.set((await resourceOwnerLogin(parameters as ResourceOwnerParameters, config() as ResourceOwnerConfig)) || {})\n } else if (\n !!parameters &&\n (parameters as AuthorizationCodeParameters).redirectUri &&\n (parameters as AuthorizationCodeParameters).responseType\n ) {\n await toAuthorizationUrl(parameters as AuthorizationCodeParameters)\n } else {\n token.set((await clientCredentialLogin(config() as ClientCredentialConfig)) || {})\n }\n }\n\n const logout = async (next?: string, state?: string) => {\n await autoconfigOauth()\n const { logoutPath, clientId, logoutRedirectUri } = (config() as OpenIdConfig) || {}\n const returnUrl = next || logoutRedirectUri\n if (returnUrl && logoutPath) {\n const { id_token } = token()\n const tokenHint = (id_token && `&id_token_hint=${id_token}`) || ''\n const stateFwd = (state && `&state=${state}`) || ''\n const logoutUrl = `${logoutPath}?client_id=${clientId}&post_logout_redirect_uri=${returnUrl}${tokenHint}${stateFwd}`\n token.set({})\n globalThis.location?.replace(logoutUrl)\n } else {\n await revoke(token(), config())\n token.set({})\n }\n }\n\n const oauthCallback = async (url?: string | URL) => {\n const checkNonce = async (parameters: Record<string, string>) => {\n if (parameters['error']) return parameters\n const payload = await verifyJwt(parameters['id_token'])\n if (payload?.error || payload?.nonce !== token()?.nonce) {\n return { error: (payload?.error as string) || 'Invalid nonce' }\n }\n return parameters\n }\n const checkCode = async () => {\n const parameters = await authorize(token(), config())\n if (parameters) {\n token.set(await checkNonce(parameters))\n }\n }\n const path = (url && new URL(url)) || globalThis.location || {}\n const { hash, search } = path\n const isImplicitRedirect = hash && /(access_token=)|(error=)/.test(hash)\n const isAuthCodeRedirect = (search && /(code=)|(error=)/.test(search)) || (hash && /(code=)|(error=)/.test(hash))\n if (isImplicitRedirect) {\n const parameters = parseOauthUri(hash.substring(1))\n token.set({\n ...(await checkNonce(parameters)),\n type: OAuthType.IMPLICIT\n })\n state.set(parameters?.['state'])\n } else if (isAuthCodeRedirect) {\n const parameters = parseOauthUri(search?.substring(1) || hash?.substring(1))\n token.set({\n ...token(),\n ...parameters\n // do not set type yet. will be set by authorize function since it is a two-step process\n })\n state.set(parameters?.['state'])\n await autoconfigOauth()\n await checkCode()\n }\n }\n\n const toAuthorizationUrl = async (parameters: AuthorizationCodeParameters) => {\n const { authorizePath, clientId, scope = '', pkce } = config() as any\n let authorizationUrl = `${authorizePath}`\n authorizationUrl += (authorizePath.includes('?') && '&') || '?'\n authorizationUrl += `client_id=${clientId}`\n token.set({ ...token(), redirect_uri: parameters.redirectUri })\n authorizationUrl += `&access_type=${parameters.accessType || 'offline'}`\n authorizationUrl += `&prompt=${parameters.prompt || ''}`\n authorizationUrl += `&redirect_uri=${encodeURIComponent(parameters.redirectUri)}`\n authorizationUrl += `&response_type=${parameters.responseType}`\n authorizationUrl += `&scope=${encodeURIComponent(scope)}`\n authorizationUrl += `&state=${encodeURIComponent(parameters.state || '')}`\n authorizationUrl = `${authorizationUrl}${generateNonce(scope)}${await generateCodeChallenge(pkce)}`\n return globalThis.location?.replace(authorizationUrl)\n }\n\n const generateNonce = (scope: string) => {\n if (scope.indexOf('openid') > -1) {\n const nonce = randomString()\n token.set({ ...token(), nonce })\n return `&nonce=${nonce}`\n }\n return ''\n }\n\n const generateCodeChallenge = async (doPkce: any) => {\n if (doPkce) {\n const code_verifier = randomString()\n token.set({ ...token(), code_verifier })\n return `&code_challenge=${await pkce(code_verifier)}&code_challenge_method=S256`\n }\n return ''\n }\n\n return {\n login,\n logout,\n oauthCallback,\n state,\n token,\n status,\n type,\n isAuthorized,\n config,\n storageKey\n }\n }\n})\n","/*\n * Public API Surface of ngx-oauth\n */\nexport * from './types'\nexport { provideOAuthConfig } from './config'\nexport * from './fetch'\nexport * from './functions'\nexport * from './token'\nexport * from './jwt'\nexport * from './user'\nexport * from './oauth'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-oauth",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.2",
|
|
4
4
|
"author": "Fl0r14n <florian.chis@gmail.com>",
|
|
5
5
|
"homepage": "https://github.com/Fl0r14n/ngx-oauth",
|
|
6
6
|
"description": "A fully OAuth2.1 compliant angular library",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"angular",
|
|
10
|
-
"Angular
|
|
10
|
+
"Angular 21",
|
|
11
11
|
"oauth",
|
|
12
12
|
"oauth2",
|
|
13
13
|
"oidc",
|
|
@@ -21,24 +21,30 @@
|
|
|
21
21
|
"url": "https://github.com/Fl0r14n/ngx-oauth"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@angular/common": "
|
|
25
|
-
"@angular/core": "
|
|
24
|
+
"@angular/common": ">=21.0.0",
|
|
25
|
+
"@angular/core": ">=21.0.0",
|
|
26
|
+
"@angular/forms": ">=21.0.0",
|
|
27
|
+
"@angular/material": ">=21.0.0",
|
|
28
|
+
"jose": ">=6"
|
|
26
29
|
},
|
|
27
30
|
"dependencies": {
|
|
28
|
-
"tslib": "
|
|
31
|
+
"tslib": ">=2.0.0"
|
|
29
32
|
},
|
|
30
33
|
"sideEffects": false,
|
|
31
34
|
"module": "fesm2022/ngx-oauth.mjs",
|
|
32
|
-
"typings": "
|
|
35
|
+
"typings": "types/ngx-oauth.d.ts",
|
|
33
36
|
"exports": {
|
|
34
37
|
"./package.json": {
|
|
35
38
|
"default": "./package.json"
|
|
36
39
|
},
|
|
37
40
|
".": {
|
|
38
|
-
"types": "./
|
|
39
|
-
"esm2022": "./esm2022/ngx-oauth.mjs",
|
|
40
|
-
"esm": "./esm2022/ngx-oauth.mjs",
|
|
41
|
+
"types": "./types/ngx-oauth.d.ts",
|
|
41
42
|
"default": "./fesm2022/ngx-oauth.mjs"
|
|
43
|
+
},
|
|
44
|
+
"./component": {
|
|
45
|
+
"types": "./types/ngx-oauth-component.d.ts",
|
|
46
|
+
"default": "./fesm2022/ngx-oauth-component.mjs"
|
|
42
47
|
}
|
|
43
|
-
}
|
|
48
|
+
},
|
|
49
|
+
"type": "module"
|
|
44
50
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { MatMenuTrigger } from '@angular/material/menu';
|
|
3
|
+
import { OAuthStatus, ResourceOwnerParameters, AuthorizationCodeParameters } from 'ngx-oauth';
|
|
4
|
+
|
|
5
|
+
type OAuthLoginConfig = Partial<ResourceOwnerParameters & AuthorizationCodeParameters & {
|
|
6
|
+
logoutRedirectUri: string;
|
|
7
|
+
}>;
|
|
8
|
+
type OAuthLoginI18n = {
|
|
9
|
+
username?: string;
|
|
10
|
+
password?: string;
|
|
11
|
+
submit?: string;
|
|
12
|
+
logout?: string;
|
|
13
|
+
notAuthorized?: string;
|
|
14
|
+
authorized?: string;
|
|
15
|
+
denied?: string;
|
|
16
|
+
dismiss?: string;
|
|
17
|
+
showPassword?: string;
|
|
18
|
+
hidePassword?: string;
|
|
19
|
+
};
|
|
20
|
+
declare class OAuthLoginComponent {
|
|
21
|
+
private oauth;
|
|
22
|
+
private user;
|
|
23
|
+
protected readonly isBrowser: boolean;
|
|
24
|
+
readonly OAuthStatus: typeof OAuthStatus;
|
|
25
|
+
readonly config: _angular_core.InputSignal<Partial<ResourceOwnerParameters & AuthorizationCodeParameters & {
|
|
26
|
+
logoutRedirectUri: string;
|
|
27
|
+
}>>;
|
|
28
|
+
readonly i18n: _angular_core.InputSignalWithTransform<Required<OAuthLoginI18n>, OAuthLoginI18n | undefined>;
|
|
29
|
+
readonly trigger: _angular_core.Signal<MatMenuTrigger | undefined>;
|
|
30
|
+
protected readonly status: _angular_core.Signal<OAuthStatus>;
|
|
31
|
+
protected readonly isAuthCode: _angular_core.Signal<boolean | "" | undefined>;
|
|
32
|
+
protected readonly profile: _angular_core.Signal<{
|
|
33
|
+
title: string;
|
|
34
|
+
subtitle: string;
|
|
35
|
+
picture: string | undefined;
|
|
36
|
+
initials: string;
|
|
37
|
+
}>;
|
|
38
|
+
protected readonly visible: _angular_core.WritableSignal<boolean>;
|
|
39
|
+
protected readonly showError: _angular_core.WritableSignal<boolean>;
|
|
40
|
+
username: string;
|
|
41
|
+
password: string;
|
|
42
|
+
constructor();
|
|
43
|
+
logout(): Promise<void>;
|
|
44
|
+
dismissError(): Promise<void>;
|
|
45
|
+
login(parameters: OAuthLoginConfig): Promise<void>;
|
|
46
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OAuthLoginComponent, never>;
|
|
47
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OAuthLoginComponent, "oauth-login", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "i18n": { "alias": "i18n"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { OAuthLoginComponent };
|
|
51
|
+
export type { OAuthLoginI18n };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { EnvironmentProviders, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as ngx_oauth from 'ngx-oauth';
|
|
4
|
+
|
|
5
|
+
type ClientCredentialConfig = {
|
|
6
|
+
tokenPath: string;
|
|
7
|
+
revokePath?: string;
|
|
8
|
+
clientId: string;
|
|
9
|
+
clientSecret?: string;
|
|
10
|
+
scope?: string;
|
|
11
|
+
userPath?: string;
|
|
12
|
+
introspectionPath?: string;
|
|
13
|
+
};
|
|
14
|
+
type ResourceOwnerConfig = ClientCredentialConfig;
|
|
15
|
+
type ImplicitConfig = {
|
|
16
|
+
authorizePath: string;
|
|
17
|
+
revokePath?: string;
|
|
18
|
+
clientId: string;
|
|
19
|
+
scope?: string;
|
|
20
|
+
logoutPath?: string;
|
|
21
|
+
redirectUri?: string;
|
|
22
|
+
logoutRedirectUri?: string;
|
|
23
|
+
userPath?: string;
|
|
24
|
+
};
|
|
25
|
+
type AuthorizationCodeConfig = ResourceOwnerConfig & {
|
|
26
|
+
authorizePath: string;
|
|
27
|
+
logoutPath?: string;
|
|
28
|
+
redirectUri?: string;
|
|
29
|
+
logoutRedirectUri?: string;
|
|
30
|
+
};
|
|
31
|
+
type AuthorizationCodePKCEConfig = AuthorizationCodeConfig & {
|
|
32
|
+
pkce?: boolean;
|
|
33
|
+
};
|
|
34
|
+
type OpenIdConfig = AuthorizationCodePKCEConfig & {
|
|
35
|
+
issuerPath: string;
|
|
36
|
+
jwksUri?: string;
|
|
37
|
+
};
|
|
38
|
+
type ResourceOwnerParameters = {
|
|
39
|
+
username: string;
|
|
40
|
+
password: string;
|
|
41
|
+
};
|
|
42
|
+
type AuthorizationCodeParameters = {
|
|
43
|
+
accessType?: 'online' | 'offline';
|
|
44
|
+
prompt?: 'none' | 'consent' | 'login' | 'select_account';
|
|
45
|
+
redirectUri: string;
|
|
46
|
+
responseType: OAuthType.IMPLICIT | OAuthType.AUTHORIZATION_CODE | string;
|
|
47
|
+
state?: string;
|
|
48
|
+
};
|
|
49
|
+
type OAuthParameters = ResourceOwnerParameters | AuthorizationCodeParameters;
|
|
50
|
+
type OAuthTypeConfig = OpenIdConfig | AuthorizationCodePKCEConfig | AuthorizationCodeConfig | ImplicitConfig | ResourceOwnerConfig | ClientCredentialConfig;
|
|
51
|
+
type OAuthConfig = {
|
|
52
|
+
config?: Partial<OAuthTypeConfig>;
|
|
53
|
+
storageKey?: string;
|
|
54
|
+
ignorePaths?: RegExp[];
|
|
55
|
+
strictJwt?: boolean;
|
|
56
|
+
[x: string]: any;
|
|
57
|
+
};
|
|
58
|
+
declare enum OAuthType {
|
|
59
|
+
RESOURCE = "password",
|
|
60
|
+
AUTHORIZATION_CODE = "code",
|
|
61
|
+
IMPLICIT = "token",
|
|
62
|
+
CLIENT_CREDENTIAL = "client_credentials"
|
|
63
|
+
}
|
|
64
|
+
type OAuthToken = {
|
|
65
|
+
id_token?: string;
|
|
66
|
+
access_token?: string;
|
|
67
|
+
refresh_token?: string;
|
|
68
|
+
token_type?: string;
|
|
69
|
+
state?: string;
|
|
70
|
+
error?: string;
|
|
71
|
+
error_description?: string;
|
|
72
|
+
expires_in?: number | string;
|
|
73
|
+
refresh_expires_in?: number | string;
|
|
74
|
+
scope?: string;
|
|
75
|
+
code_verifier?: string;
|
|
76
|
+
nonce?: string;
|
|
77
|
+
type?: OAuthType;
|
|
78
|
+
expires?: number;
|
|
79
|
+
code?: string;
|
|
80
|
+
[x: string]: any;
|
|
81
|
+
};
|
|
82
|
+
declare enum OAuthStatus {
|
|
83
|
+
NOT_AUTHORIZED = "NOT_AUTHORIZED",
|
|
84
|
+
AUTHORIZED = "AUTHORIZED",
|
|
85
|
+
DENIED = "DENIED"
|
|
86
|
+
}
|
|
87
|
+
type OpenIdConfiguration = {
|
|
88
|
+
issuer?: string;
|
|
89
|
+
authorization_endpoint?: string;
|
|
90
|
+
introspection_endpoint?: string;
|
|
91
|
+
token_endpoint?: string;
|
|
92
|
+
userinfo_endpoint?: string;
|
|
93
|
+
end_session_endpoint?: string;
|
|
94
|
+
revocation_endpoint?: string;
|
|
95
|
+
jwks_uri?: string;
|
|
96
|
+
scopes_supported?: string[];
|
|
97
|
+
code_challenge_methods_supported?: string[];
|
|
98
|
+
};
|
|
99
|
+
type UserInfo = {
|
|
100
|
+
email?: string;
|
|
101
|
+
email_verified?: boolean;
|
|
102
|
+
family_name?: string;
|
|
103
|
+
given_name?: string;
|
|
104
|
+
name?: string;
|
|
105
|
+
preferred_username?: string;
|
|
106
|
+
sub?: string;
|
|
107
|
+
address?: object;
|
|
108
|
+
picture?: string;
|
|
109
|
+
locale?: string;
|
|
110
|
+
[x: string]: any;
|
|
111
|
+
};
|
|
112
|
+
type IntrospectInfo = UserInfo & {
|
|
113
|
+
active: boolean;
|
|
114
|
+
scope: string;
|
|
115
|
+
client_id?: string;
|
|
116
|
+
username: string;
|
|
117
|
+
exp: number;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
declare const provideOAuthConfig: (cfg?: OAuthConfig) => EnvironmentProviders;
|
|
121
|
+
|
|
122
|
+
declare const OAUTH_FETCH: InjectionToken<typeof fetch>;
|
|
123
|
+
|
|
124
|
+
declare const OAUTH_REFRESH: InjectionToken<(token?: OAuthToken, config?: Partial<OpenIdConfig>) => Promise<any>>;
|
|
125
|
+
declare const OAUTH_REVOKE: InjectionToken<(token?: OAuthToken, config?: Partial<OpenIdConfig>) => Promise<void>>;
|
|
126
|
+
declare const OAUTH_AUTHORIZE: InjectionToken<(token?: OAuthToken, config?: Partial<OpenIdConfig>) => Promise<any>>;
|
|
127
|
+
declare const OAUTH_CLIENT_CREDENTIAL: InjectionToken<(config?: ClientCredentialConfig) => Promise<any>>;
|
|
128
|
+
declare const OAUTH_RESOURCE_OWNER: InjectionToken<(parameters?: ResourceOwnerParameters, config?: ResourceOwnerConfig) => Promise<any>>;
|
|
129
|
+
declare const OAUTH_OPENID_CONFIG: InjectionToken<(config?: Partial<OpenIdConfig>) => Promise<any>>;
|
|
130
|
+
declare const OAUTH_USER_INFO: InjectionToken<(config?: Partial<OpenIdConfig>, fetchFn?: typeof fetch) => Promise<any>>;
|
|
131
|
+
declare const OAUTH_INTROSPECT: InjectionToken<(token?: OAuthToken, config?: Partial<OpenIdConfig>) => Promise<any>>;
|
|
132
|
+
|
|
133
|
+
declare const OAUTH_TOKEN: InjectionToken<{
|
|
134
|
+
token: _angular_core.WritableSignal<OAuthToken>;
|
|
135
|
+
type: _angular_core.Signal<ngx_oauth.OAuthType | undefined>;
|
|
136
|
+
accessToken: _angular_core.Signal<string | undefined>;
|
|
137
|
+
status: _angular_core.Signal<OAuthStatus>;
|
|
138
|
+
isAuthorized: _angular_core.Signal<boolean>;
|
|
139
|
+
error: _angular_core.Signal<string | undefined>;
|
|
140
|
+
hasError: _angular_core.Signal<boolean>;
|
|
141
|
+
errorDescription: _angular_core.Signal<string | undefined>;
|
|
142
|
+
storageKey: _angular_core.WritableSignal<string>;
|
|
143
|
+
checkToken: (t: OAuthToken) => Promise<void>;
|
|
144
|
+
autoconfigOauth: () => Promise<void>;
|
|
145
|
+
isExpiredToken: (token?: OAuthToken) => boolean;
|
|
146
|
+
}>;
|
|
147
|
+
|
|
148
|
+
declare const OAUTH_VERIFY_JWT: InjectionToken<(idToken?: string) => Promise<any>>;
|
|
149
|
+
|
|
150
|
+
declare const OAUTH_USER: InjectionToken<_angular_core.ResourceRef<UserInfo | undefined>>;
|
|
151
|
+
|
|
152
|
+
declare const OAUTH: InjectionToken<{
|
|
153
|
+
login: (parameters?: OAuthParameters) => Promise<void>;
|
|
154
|
+
logout: (next?: string, state?: string) => Promise<void>;
|
|
155
|
+
oauthCallback: (url?: string | URL) => Promise<void>;
|
|
156
|
+
state: _angular_core.WritableSignal<string | undefined>;
|
|
157
|
+
token: _angular_core.WritableSignal<ngx_oauth.OAuthToken>;
|
|
158
|
+
status: _angular_core.Signal<ngx_oauth.OAuthStatus>;
|
|
159
|
+
type: _angular_core.Signal<OAuthType | undefined>;
|
|
160
|
+
isAuthorized: _angular_core.Signal<boolean>;
|
|
161
|
+
config: _angular_core.WritableSignal<Partial<ngx_oauth.OAuthTypeConfig> | undefined>;
|
|
162
|
+
storageKey: _angular_core.WritableSignal<string>;
|
|
163
|
+
}>;
|
|
164
|
+
|
|
165
|
+
export { OAUTH, OAUTH_AUTHORIZE, OAUTH_CLIENT_CREDENTIAL, OAUTH_FETCH, OAUTH_INTROSPECT, OAUTH_OPENID_CONFIG, OAUTH_REFRESH, OAUTH_RESOURCE_OWNER, OAUTH_REVOKE, OAUTH_TOKEN, OAUTH_USER, OAUTH_USER_INFO, OAUTH_VERIFY_JWT, OAuthStatus, OAuthType, provideOAuthConfig };
|
|
166
|
+
export type { AuthorizationCodeConfig, AuthorizationCodePKCEConfig, AuthorizationCodeParameters, ClientCredentialConfig, ImplicitConfig, IntrospectInfo, OAuthConfig, OAuthParameters, OAuthToken, OAuthTypeConfig, OpenIdConfig, OpenIdConfiguration, ResourceOwnerConfig, ResourceOwnerParameters, UserInfo };
|
package/components/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './o-auth-login.component';
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { TemplateRef } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { Location as Location2 } from '@angular/common';
|
|
4
|
-
import { OAuthParameters, OAuthType, OAuthStatus } from '../models';
|
|
5
|
-
import { OAuthService } from '../services';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export interface OAuthLoginI18n {
|
|
8
|
-
username?: string;
|
|
9
|
-
password?: string;
|
|
10
|
-
submit?: string;
|
|
11
|
-
notAuthorized?: string;
|
|
12
|
-
authorized?: string;
|
|
13
|
-
denied?: string;
|
|
14
|
-
}
|
|
15
|
-
export declare class OAuthLoginComponent {
|
|
16
|
-
#private;
|
|
17
|
-
private oauthService;
|
|
18
|
-
private locationService;
|
|
19
|
-
get i18n(): OAuthLoginI18n;
|
|
20
|
-
type: OAuthType;
|
|
21
|
-
set i18n(i18n: OAuthLoginI18n);
|
|
22
|
-
get redirectUri(): string;
|
|
23
|
-
set redirectUri(redirectUri: string);
|
|
24
|
-
set responseType(responseType: string);
|
|
25
|
-
get responseType(): string;
|
|
26
|
-
useLogoutUrl: boolean;
|
|
27
|
-
state: string;
|
|
28
|
-
stateChange: Observable<string>;
|
|
29
|
-
profileName$: Observable<string | undefined> | undefined;
|
|
30
|
-
loginTemplate: TemplateRef<any> | null;
|
|
31
|
-
username: string;
|
|
32
|
-
password: string;
|
|
33
|
-
profileName?: string;
|
|
34
|
-
OAuthStatus: typeof OAuthStatus;
|
|
35
|
-
OAuthType: typeof OAuthType;
|
|
36
|
-
collapse: boolean;
|
|
37
|
-
status$: Observable<OAuthStatus>;
|
|
38
|
-
loginFunction: (p: OAuthParameters) => Promise<void>;
|
|
39
|
-
logoutFunction: () => void;
|
|
40
|
-
constructor(oauthService: OAuthService, locationService: Location2);
|
|
41
|
-
logout(): void;
|
|
42
|
-
login(parameters: OAuthParameters): Promise<void>;
|
|
43
|
-
toggleCollapse(): void;
|
|
44
|
-
keyboardEvent(): void;
|
|
45
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OAuthLoginComponent, never>;
|
|
46
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<OAuthLoginComponent, "oauth-login", never, { "type": { "alias": "type"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "redirectUri": { "alias": "redirectUri"; "required": false; }; "responseType": { "alias": "responseType"; "required": false; }; "useLogoutUrl": { "alias": "useLogoutUrl"; "required": false; }; "state": { "alias": "state"; "required": false; }; "profileName$": { "alias": "profileName$"; "required": false; }; }, { "stateChange": "stateChange"; }, ["loginTemplate"], never, true, never>;
|
|
47
|
-
}
|
package/config/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { FactoryProvider, InjectionToken, ValueProvider } from '@angular/core';
|
|
2
|
-
import { OAuthTypeConfig } from '../models';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare const OAUTH_CONFIG: InjectionToken<OAuthConfig[]>;
|
|
5
|
-
export declare abstract class OAuthConfig {
|
|
6
|
-
config?: OAuthTypeConfig;
|
|
7
|
-
storageKey?: string;
|
|
8
|
-
storage?: Storage;
|
|
9
|
-
location?: Location;
|
|
10
|
-
ignorePaths?: RegExp[];
|
|
11
|
-
[x: string]: any;
|
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OAuthConfig, never>;
|
|
13
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OAuthConfig>;
|
|
14
|
-
}
|
|
15
|
-
export declare const provideOAuthConfig: (config?: OAuthConfig) => ValueProvider;
|
|
16
|
-
export declare const provideOAuthConfigFactory: (factory: Function, deps?: any[]) => FactoryProvider;
|
|
17
|
-
export declare const defaultOAuthConfig: OAuthConfig;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './o-auth-login.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vby1hdXRoLWxvZ2luLmNvbXBvbmVudCdcbiJdfQ==
|