angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
55 lines • 10.5 kB
JavaScript
import { Injectable, inject } from '@angular/core';
import { of, throwError } from 'rxjs';
import { switchMap, take, tap } from 'rxjs/operators';
import { CheckAuthService } from '../../auth-state/check-auth.service';
import { AuthWellKnownService } from '../../config/auth-well-known/auth-well-known.service';
import { LoggerService } from '../../logging/logger.service';
import { UrlService } from '../../utils/url/url.service';
import { ResponseTypeValidationService } from '../response-type-validation/response-type-validation.service';
import { PopUpService } from './popup.service';
import * as i0 from "@angular/core";
export class PopUpLoginService {
constructor() {
this.loggerService = inject(LoggerService);
this.responseTypeValidationService = inject(ResponseTypeValidationService);
this.urlService = inject(UrlService);
this.authWellKnownService = inject(AuthWellKnownService);
this.popupService = inject(PopUpService);
this.checkAuthService = inject(CheckAuthService);
}
loginWithPopUpStandard(configuration, allConfigs, authOptions, popupOptions) {
const { configId } = configuration;
if (!this.responseTypeValidationService.hasConfigValidResponseType(configuration)) {
const errorMessage = 'Invalid response type!';
this.loggerService.logError(configuration, errorMessage);
return throwError(() => new Error(errorMessage));
}
this.loggerService.logDebug(configuration, 'BEGIN Authorize OIDC Flow with popup, no auth data');
return this.authWellKnownService
.queryAndStoreAuthWellKnownEndPoints(configuration)
.pipe(switchMap(() => this.urlService.getAuthorizeUrl(configuration, authOptions)), tap((authUrl) => this.popupService.openPopUp(authUrl, popupOptions, configuration)), switchMap(() => {
return this.popupService.result$.pipe(take(1), switchMap((result) => {
const { userClosed, receivedUrl } = result;
if (userClosed) {
const response = {
isAuthenticated: false,
errorMessage: 'User closed popup',
userData: null,
idToken: '',
accessToken: '',
configId,
};
return of(response);
}
return this.checkAuthService.checkAuth(configuration, allConfigs, receivedUrl);
}));
}));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PopUpLoginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PopUpLoginService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: PopUpLoginService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtbG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvbGliL2xvZ2luL3BvcHVwL3BvcHVwLWxvZ2luLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUc3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRy9DLE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsa0NBQTZCLEdBQUcsTUFBTSxDQUNyRCw2QkFBNkIsQ0FDOUIsQ0FBQztRQUVlLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFcEQsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FpRTlEO0lBL0RDLHNCQUFzQixDQUNwQixhQUFrQyxFQUNsQyxVQUFpQyxFQUNqQyxXQUF5QixFQUN6QixZQUEyQjtRQUUzQixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQ0UsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsMEJBQTBCLENBQzVELGFBQWEsQ0FDZCxFQUNELENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQztZQUU5QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFekQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQ3pCLGFBQWEsRUFDYixvREFBb0QsQ0FDckQsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLG9CQUFvQjthQUM3QixtQ0FBbUMsQ0FBQyxhQUFhLENBQUM7YUFDbEQsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQzVELEVBQ0QsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDZCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUNsRSxFQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDbkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxDQUFDLE1BQW1CLEVBQUUsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7Z0JBRTNDLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2YsTUFBTSxRQUFRLEdBQWtCO3dCQUM5QixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsWUFBWSxFQUFFLG1CQUFtQjt3QkFDakMsUUFBUSxFQUFFLElBQUk7d0JBQ2QsT0FBTyxFQUFFLEVBQUU7d0JBQ1gsV0FBVyxFQUFFLEVBQUU7d0JBQ2YsUUFBUTtxQkFDVCxDQUFDO29CQUVGLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixDQUFDO2dCQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FDcEMsYUFBYSxFQUNiLFVBQVUsRUFDVixXQUFXLENBQ1osQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQzs4R0E3RVUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNOzsyRkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi9hdXRoLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ2hlY2tBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGgtc3RhdGUvY2hlY2stYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhXZWxsS25vd25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnL2F1dGgtd2VsbC1rbm93bi9hdXRoLXdlbGwta25vd24uc2VydmljZSc7XG5pbXBvcnQgeyBPcGVuSWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vY29uZmlnL29wZW5pZC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy91cmwvdXJsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9naW5SZXNwb25zZSB9IGZyb20gJy4uL2xvZ2luLXJlc3BvbnNlJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vcmVzcG9uc2UtdHlwZS12YWxpZGF0aW9uL3Jlc3BvbnNlLXR5cGUtdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcHVwT3B0aW9ucyB9IGZyb20gJy4vcG9wdXAtb3B0aW9ucyc7XG5pbXBvcnQgeyBQb3B1cFJlc3VsdCB9IGZyb20gJy4vcG9wdXAtcmVzdWx0JztcbmltcG9ydCB7IFBvcFVwU2VydmljZSB9IGZyb20gJy4vcG9wdXAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUG9wVXBMb2dpblNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlclNlcnZpY2UgPSBpbmplY3QoTG9nZ2VyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zZVR5cGVWYWxpZGF0aW9uU2VydmljZSA9IGluamVjdChcbiAgICBSZXNwb25zZVR5cGVWYWxpZGF0aW9uU2VydmljZVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VydmljZSA9IGluamVjdChVcmxTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhXZWxsS25vd25TZXJ2aWNlID0gaW5qZWN0KEF1dGhXZWxsS25vd25TZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwU2VydmljZSA9IGluamVjdChQb3BVcFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tBdXRoU2VydmljZSA9IGluamVjdChDaGVja0F1dGhTZXJ2aWNlKTtcblxuICBsb2dpbldpdGhQb3BVcFN0YW5kYXJkKFxuICAgIGNvbmZpZ3VyYXRpb246IE9wZW5JZENvbmZpZ3VyYXRpb24sXG4gICAgYWxsQ29uZmlnczogT3BlbklkQ29uZmlndXJhdGlvbltdLFxuICAgIGF1dGhPcHRpb25zPzogQXV0aE9wdGlvbnMsXG4gICAgcG9wdXBPcHRpb25zPzogUG9wdXBPcHRpb25zXG4gICk6IE9ic2VydmFibGU8TG9naW5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHsgY29uZmlnSWQgfSA9IGNvbmZpZ3VyYXRpb247XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZXNwb25zZVR5cGVWYWxpZGF0aW9uU2VydmljZS5oYXNDb25maWdWYWxpZFJlc3BvbnNlVHlwZShcbiAgICAgICAgY29uZmlndXJhdGlvblxuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gJ0ludmFsaWQgcmVzcG9uc2UgdHlwZSEnO1xuXG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoY29uZmlndXJhdGlvbiwgZXJyb3JNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycm9yTWVzc2FnZSkpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICAnQkVHSU4gQXV0aG9yaXplIE9JREMgRmxvdyB3aXRoIHBvcHVwLCBubyBhdXRoIGRhdGEnXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmF1dGhXZWxsS25vd25TZXJ2aWNlXG4gICAgICAucXVlcnlBbmRTdG9yZUF1dGhXZWxsS25vd25FbmRQb2ludHMoY29uZmlndXJhdGlvbilcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuZ2V0QXV0aG9yaXplVXJsKGNvbmZpZ3VyYXRpb24sIGF1dGhPcHRpb25zKVxuICAgICAgICApLFxuICAgICAgICB0YXAoKGF1dGhVcmwpID0+XG4gICAgICAgICAgdGhpcy5wb3B1cFNlcnZpY2Uub3BlblBvcFVwKGF1dGhVcmwsIHBvcHVwT3B0aW9ucywgY29uZmlndXJhdGlvbilcbiAgICAgICAgKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wb3B1cFNlcnZpY2UucmVzdWx0JC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBQb3B1cFJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IHVzZXJDbG9zZWQsIHJlY2VpdmVkVXJsIH0gPSByZXN1bHQ7XG5cbiAgICAgICAgICAgICAgaWYgKHVzZXJDbG9zZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZTogTG9naW5SZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgICAgIGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6ICdVc2VyIGNsb3NlZCBwb3B1cCcsXG4gICAgICAgICAgICAgICAgICB1c2VyRGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICAgIGlkVG9rZW46ICcnLFxuICAgICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46ICcnLFxuICAgICAgICAgICAgICAgICAgY29uZmlnSWQsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja0F1dGhTZXJ2aWNlLmNoZWNrQXV0aChcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgICAgIGFsbENvbmZpZ3MsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWRVcmxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==