oidc-client-rx
Version:
ReactiveX enhanced OIDC and OAuth2 protocol support for browser-based JavaScript applications
161 lines (160 loc) • 9.3 kB
JavaScript
import { Injectable, inject } from "@outposts/injection-js";
import { BehaviorSubject } from "rxjs";
import { concatMap, map, switchMap } from "rxjs/operators";
import { AuthStateService } from "./auth-state/auth-state.service.js";
import { CheckAuthService } from "./auth-state/check-auth.service.js";
import { CallbackService } from "./callback/callback.service.js";
import { RefreshSessionService } from "./callback/refresh-session.service.js";
import { AuthWellKnownService } from "./config/auth-well-known/auth-well-known.service.js";
import { ConfigurationService } from "./config/config.service.js";
import { FlowsDataService } from "./flows/flows-data.service.js";
import { CheckSessionService } from "./iframe/check-session.service.js";
import { LoginService } from "./login/login.service.js";
import { LogoffRevocationService } from "./logoff-revoke/logoff-revocation.service.js";
import { UserService } from "./user-data/user.service.js";
import { MockUtil } from "./utils/reflect/index.js";
import { TokenHelperService } from "./utils/tokenHelper/token-helper.service.js";
import { UrlService } from "./utils/url/url.service.js";
function _ts_decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function _ts_metadata(k, v) {
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
}
class OidcSecurityService {
get userData$() {
return this.userService.userData$;
}
get isAuthenticated$() {
return this.authStateService.authenticated$;
}
get checkSessionChanged$() {
return this.checkSessionService.checkSessionChanged$;
}
get stsCallback$() {
return this.callbackService.stsCallback$;
}
preloadAuthWellKnownDocument(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(concatMap((config)=>this.authWellKnownService.queryAndStoreAuthWellKnownEndPoints(config)));
}
getConfigurations() {
return this.configurationService.getAllConfigurations();
}
getConfiguration(configId) {
return this.configurationService.getOpenIDConfiguration(configId);
}
getUserData(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.userService.getUserDataFromStore(config)));
}
checkAuth(url, configId) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(concatMap(({ allConfigs, currentConfig })=>this.checkAuthService.checkAuth(currentConfig, allConfigs, url)));
}
checkAuthMultiple(url) {
return this.configurationService.getOpenIDConfigurations().pipe(concatMap(({ allConfigs })=>this.checkAuthService.checkAuthMultiple(allConfigs, url)));
}
isAuthenticated(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.authStateService.isAuthenticated(config)));
}
checkAuthIncludingServer(configId) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(concatMap(({ allConfigs, currentConfig })=>this.checkAuthService.checkAuthIncludingServer(currentConfig, allConfigs)));
}
getAccessToken(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.authStateService.getAccessToken(config)));
}
getIdToken(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.authStateService.getIdToken(config)));
}
getRefreshToken(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.authStateService.getRefreshToken(config)));
}
getAuthenticationResult(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.authStateService.getAuthenticationResult(config)));
}
getPayloadFromIdToken(encode = false, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>{
const token = this.authStateService.getIdToken(config);
return this.tokenHelperService.getPayloadFromToken(token, encode, config);
}));
}
getPayloadFromAccessToken(encode = false, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>{
const token = this.authStateService.getAccessToken(config);
return this.tokenHelperService.getPayloadFromToken(token, encode, config);
}));
}
setState(state, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.flowsDataService.setAuthStateControl(state, config)));
}
getState(configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.flowsDataService.getAuthStateControl(config)));
}
authorize(configId, authOptions) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(switchMap((config)=>this.loginService.login(config, authOptions)));
}
authorizeWithPopUp(authOptions, popupOptions, configId) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(concatMap(({ allConfigs, currentConfig })=>this.loginService.loginWithPopUp(currentConfig, allConfigs, authOptions, popupOptions)));
}
forceRefreshSession(customParams, configId) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(concatMap(({ allConfigs, currentConfig })=>this.refreshSessionService.userForceRefreshSession(currentConfig, allConfigs, customParams)));
}
logoffAndRevokeTokens(configId, logoutAuthOptions) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(concatMap(({ allConfigs, currentConfig })=>this.logoffRevocationService.logoffAndRevokeTokens(currentConfig, allConfigs, logoutAuthOptions)));
}
logoff(configId, logoutAuthOptions) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(concatMap(({ allConfigs, currentConfig })=>this.logoffRevocationService.logoff(currentConfig, allConfigs, logoutAuthOptions)));
}
logoffLocal(configId) {
return this.configurationService.getOpenIDConfigurations(configId).pipe(map(({ allConfigs, currentConfig })=>{
this.logoffRevocationService.logoffLocal(currentConfig, allConfigs);
}));
}
logoffLocalMultiple() {
return this.configurationService.getOpenIDConfigurations().pipe(map(({ allConfigs })=>this.logoffRevocationService.logoffLocalMultiple(allConfigs)));
}
revokeAccessToken(accessToken, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(concatMap((config)=>this.logoffRevocationService.revokeAccessToken(config, accessToken)));
}
revokeRefreshToken(refreshToken, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(concatMap((config)=>this.logoffRevocationService.revokeRefreshToken(config, refreshToken)));
}
getEndSessionUrl(customParams, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(map((config)=>this.urlService.getEndSessionUrl(config, customParams)));
}
getAuthorizeUrl(customParams, configId) {
return this.configurationService.getOpenIDConfiguration(configId).pipe(concatMap((config)=>this.urlService.getAuthorizeUrl(config, customParams ? {
customParams
} : void 0)));
}
constructor(){
this.checkSessionService = inject(CheckSessionService);
this.checkAuthService = inject(CheckAuthService);
this.userService = inject(UserService);
this.tokenHelperService = inject(TokenHelperService);
this.configurationService = inject(ConfigurationService);
this.authStateService = inject(AuthStateService);
this.flowsDataService = inject(FlowsDataService);
this.callbackService = inject(CallbackService);
this.logoffRevocationService = inject(LogoffRevocationService);
this.loginService = inject(LoginService);
this.refreshSessionService = inject(RefreshSessionService);
this.urlService = inject(UrlService);
this.authWellKnownService = inject(AuthWellKnownService);
}
}
_ts_decorate([
MockUtil({
implementation: ()=>new BehaviorSubject(void 0)
}),
_ts_metadata("design:type", Function),
_ts_metadata("design:paramtypes", [
String
]),
_ts_metadata("design:returntype", "undefined" == typeof Observable ? Object : Observable)
], OidcSecurityService.prototype, "checkAuthMultiple", null);
OidcSecurityService = _ts_decorate([
Injectable()
], OidcSecurityService);
export { OidcSecurityService };