@arsedizioni/ars-utils 21.2.168 → 21.2.170
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.
|
@@ -129,6 +129,8 @@ class LoginOAuthComponent {
|
|
|
129
129
|
* Perform login using MSAL
|
|
130
130
|
*/
|
|
131
131
|
loginMSAL() {
|
|
132
|
+
// Clear any in-progress interaction flag that may have been left by a previous incomplete popup
|
|
133
|
+
sessionStorage.removeItem('msal.interaction.status');
|
|
132
134
|
this.msaLService.loginPopup()
|
|
133
135
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
134
136
|
.subscribe({
|
|
@@ -142,6 +144,7 @@ class LoginOAuthComponent {
|
|
|
142
144
|
account: r.account
|
|
143
145
|
}).subscribe({
|
|
144
146
|
next: (tokenResult) => {
|
|
147
|
+
console.log("Token acquired!");
|
|
145
148
|
this.success.emit({ type: 1, token: tokenResult.accessToken });
|
|
146
149
|
},
|
|
147
150
|
error: (error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arsedizioni-ars-utils-ui.oauth.mjs","sources":["../../../projects/ars-utils/ui.oauth/ui/definitions.ts","../../../projects/ars-utils/ui.oauth/ui/ui.module.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.html","../../../projects/ars-utils/ui.oauth/public_api.ts","../../../projects/ars-utils/ui.oauth/arsedizioni-ars-utils-ui.oauth.ts"],"sourcesContent":["export enum LoginOAuthType {\r\n None = 0,\r\n Microsoft = 1,\r\n Google = 2\r\n}\r\n\r\nexport interface LoginOAuthResult {\r\n type: number,\r\n token: string\r\n}","import { NgModule } from \"@angular/core\";\r\n\r\n// Material\r\n\r\n@NgModule()\r\nexport class ArsUIOAuthModule { }\r\n\r\nexport * from \"./definitions\";\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, NgZone, OnInit, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { EnvironmentService } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalGuardConfiguration, MsalInterceptorConfiguration, MsalService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, BrowserCacheLocation, EventMessage, EventType, IPublicClientApplication, InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs';\r\nimport { LoginOAuthResult } from '../../definitions';\r\n\r\nexport function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: \"6b2c080f-6ab0-4511-a9df-0bce69db5833\",\r\n authority: \"https://login.microsoftonline.com/common\",\r\n redirectUri: environment.appLoginRedirectUri,\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration {\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n protectedResourceMap: new Map([\r\n [environment.appServiceLoginUri, [\"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"]],\r\n [\"https://graph.microsoft.com/v2.0/me\", [\"user.read\"]],\r\n ])\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: [\"user.read\"]\r\n }\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'login-oauth',\r\n templateUrl: './login-oauth.component.html',\r\n styleUrls: ['./login-oauth.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: MSAL_INSTANCE,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n MsalService,\r\n MsalBroadcastService],\r\n imports: [\r\n MatButtonModule\r\n ]\r\n})\r\nexport class LoginOAuthComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private msalBroadcastService = inject(MsalBroadcastService);\r\n private msaLService = inject(MsalService);\r\n private dialogService = inject(DialogService);\r\n private ngZone = inject(NgZone);\r\n\r\n readonly success = output<LoginOAuthResult>();\r\n\r\n readonly showInfo = input<boolean>(true);\r\n readonly applicationName = input<string>();\r\n readonly autoInitialize = input<boolean>(false);\r\n readonly allowMicrosoft = input<boolean>(true);\r\n readonly allowGoogle = input<boolean>(true);\r\n\r\n\r\n protected oauthReady = signal<boolean>(false);\r\n protected oauthMicrosoftReady = signal<boolean>(false);\r\n protected oauthGoogleReady = signal<boolean>(false);\r\n\r\n\r\n ngOnInit() {\r\n if (this.autoInitialize()) {\r\n this.initialize();\r\n }\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) =>\r\n msg.eventType === EventType.LOGOUT_FAILURE ||\r\n msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe((r: EventMessage) => {\r\n if (r?.payload) {\r\n const error = r.payload as any;\r\n this.dialogService.error(error?.message ?? 'Errore di autenticazione Microsoft');\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Initialize open authentication \r\n * Must be a public method \r\n */\r\n initialize() {\r\n if (this.oauthReady()) {\r\n return; // Already done\r\n }\r\n this.oauthReady.set(true);\r\n\r\n // Load MS stack\r\n this.msaLService.initialize()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.oauthMicrosoftReady.set(true);\r\n });\r\n\r\n // Load google maps script after view init\r\n const DSLScript = document.createElement('script');\r\n DSLScript.src = 'https://accounts.google.com/gsi/client';\r\n DSLScript.type = 'text/javascript';\r\n document.body.appendChild(DSLScript);\r\n document.body.removeChild(DSLScript);\r\n\r\n // @ts-ignore\r\n window.onGoogleLibraryLoad = () => {\r\n // initialize google account\r\n // @ts-ignore\r\n google.accounts.id.initialize({\r\n client_id: '71204983077-ag31h3bgt2udcbfr9nn84r9rni2k3snp.apps.googleusercontent.com',\r\n cancel_on_tap_outside: true,\r\n auto_select: false,\r\n callback: (r: any) => {\r\n this.ngZone.run(() => {\r\n this.success.emit({ type: 2, token: r.credential });\r\n });\r\n }\r\n });\r\n\r\n googleButtonWrapper = createFakeGoogleWrapper();\r\n\r\n this.oauthGoogleReady.set(true);\r\n };\r\n\r\n }\r\n\r\n /**\r\n * Perform login using MSAL\r\n */\r\n protected loginMSAL() {\r\n this.msaLService.loginPopup()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (r: AuthenticationResult) => {\r\n try {\r\n this.msaLService.instance.setActiveAccount(r.account);\r\n this.msaLService.acquireTokenSilent({\r\n scopes: [\r\n \"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"\r\n ],\r\n account: r.account\r\n }).subscribe({\r\n next: (tokenResult: AuthenticationResult) => {\r\n this.success.emit({ type: 1, token: tokenResult.accessToken });\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n } catch (error: any) {\r\n this.dialogService.error(error.message);\r\n }\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n* Perform login using Google\r\n*/\r\n protected loginGoogle() {\r\n // Use wrapper click to prevent Illegal invocation exception\r\n googleButtonWrapper.click();\r\n }\r\n}\r\n\r\nconst createFakeGoogleWrapper = () => {\r\n const googleLoginWrapper = document.createElement(\"div\");\r\n // Or you can simple hide it in CSS rule for custom-google-button\r\n googleLoginWrapper.style.display = \"none\";\r\n googleLoginWrapper.classList.add(\"custom-google-button\");\r\n\r\n // Add the wrapper to body\r\n document.body.appendChild(googleLoginWrapper);\r\n\r\n // Use GSI javascript api to render the button inside our wrapper\r\n // You can ignore the properties because this button will not appear\r\n // @ts-ignore\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: \"icon\",\r\n width: \"200\",\r\n });\r\n\r\n const googleLoginWrapperButton =\r\n googleLoginWrapper.querySelector(\"div[role=button]\");\r\n\r\n return {\r\n click: () => {\r\n // @ts-ignore\r\n googleLoginWrapperButton.click();\r\n },\r\n };\r\n};\r\nvar googleButtonWrapper: any;\r\n\r\n","<div class=\"login-oauth\">\r\n @if(showInfo()) {\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n @if(applicationName()) {\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{applicationName()}} e dei servizi ad esso\r\n connessi.</p>\r\n }\r\n </div>\r\n }\r\n @if (allowMicrosoft()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginMSAL()\" [attr.aria-label]=\"'Effettua accesso'\"\r\n [disabled]=\"!oauthMicrosoftReady()\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n }\r\n @if (allowGoogle()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n [attr.aria-label]=\"'Effettua accesso'\" [disabled]=\"!oauthGoogleReady()\">\r\n Accedi con Google</button>\r\n </div>\r\n }\r\n</div>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/components/login/login-oauth.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"arsedizioni-ars-utils-ui.oauth.mjs","sources":["../../../projects/ars-utils/ui.oauth/ui/definitions.ts","../../../projects/ars-utils/ui.oauth/ui/ui.module.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.html","../../../projects/ars-utils/ui.oauth/public_api.ts","../../../projects/ars-utils/ui.oauth/arsedizioni-ars-utils-ui.oauth.ts"],"sourcesContent":["export enum LoginOAuthType {\r\n None = 0,\r\n Microsoft = 1,\r\n Google = 2\r\n}\r\n\r\nexport interface LoginOAuthResult {\r\n type: number,\r\n token: string\r\n}","import { NgModule } from \"@angular/core\";\r\n\r\n// Material\r\n\r\n@NgModule()\r\nexport class ArsUIOAuthModule { }\r\n\r\nexport * from \"./definitions\";\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, NgZone, OnInit, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { EnvironmentService } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalGuardConfiguration, MsalInterceptorConfiguration, MsalService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, BrowserCacheLocation, EventMessage, EventType, IPublicClientApplication, InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs';\r\nimport { LoginOAuthResult } from '../../definitions';\r\n\r\nexport function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: \"6b2c080f-6ab0-4511-a9df-0bce69db5833\",\r\n authority: \"https://login.microsoftonline.com/common\",\r\n redirectUri: environment.appLoginRedirectUri,\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration {\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n protectedResourceMap: new Map([\r\n [environment.appServiceLoginUri, [\"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"]],\r\n [\"https://graph.microsoft.com/v2.0/me\", [\"user.read\"]],\r\n ])\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: [\"user.read\"]\r\n }\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'login-oauth',\r\n templateUrl: './login-oauth.component.html',\r\n styleUrls: ['./login-oauth.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: MSAL_INSTANCE,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n MsalService,\r\n MsalBroadcastService],\r\n imports: [\r\n MatButtonModule\r\n ]\r\n})\r\nexport class LoginOAuthComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private msalBroadcastService = inject(MsalBroadcastService);\r\n private msaLService = inject(MsalService);\r\n private dialogService = inject(DialogService);\r\n private ngZone = inject(NgZone);\r\n\r\n readonly success = output<LoginOAuthResult>();\r\n\r\n readonly showInfo = input<boolean>(true);\r\n readonly applicationName = input<string>();\r\n readonly autoInitialize = input<boolean>(false);\r\n readonly allowMicrosoft = input<boolean>(true);\r\n readonly allowGoogle = input<boolean>(true);\r\n\r\n\r\n protected oauthReady = signal<boolean>(false);\r\n protected oauthMicrosoftReady = signal<boolean>(false);\r\n protected oauthGoogleReady = signal<boolean>(false);\r\n\r\n\r\n ngOnInit() {\r\n if (this.autoInitialize()) {\r\n this.initialize();\r\n }\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) =>\r\n msg.eventType === EventType.LOGOUT_FAILURE ||\r\n msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe((r: EventMessage) => {\r\n if (r?.payload) {\r\n const error = r.payload as any;\r\n this.dialogService.error(error?.message ?? 'Errore di autenticazione Microsoft');\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Initialize open authentication \r\n * Must be a public method \r\n */\r\n initialize() {\r\n if (this.oauthReady()) {\r\n return; // Already done\r\n }\r\n this.oauthReady.set(true);\r\n\r\n // Load MS stack\r\n this.msaLService.initialize()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.oauthMicrosoftReady.set(true);\r\n });\r\n\r\n // Load google maps script after view init\r\n const DSLScript = document.createElement('script');\r\n DSLScript.src = 'https://accounts.google.com/gsi/client';\r\n DSLScript.type = 'text/javascript';\r\n document.body.appendChild(DSLScript);\r\n document.body.removeChild(DSLScript);\r\n\r\n // @ts-ignore\r\n window.onGoogleLibraryLoad = () => {\r\n // initialize google account\r\n // @ts-ignore\r\n google.accounts.id.initialize({\r\n client_id: '71204983077-ag31h3bgt2udcbfr9nn84r9rni2k3snp.apps.googleusercontent.com',\r\n cancel_on_tap_outside: true,\r\n auto_select: false,\r\n callback: (r: any) => {\r\n this.ngZone.run(() => {\r\n this.success.emit({ type: 2, token: r.credential });\r\n });\r\n }\r\n });\r\n\r\n googleButtonWrapper = createFakeGoogleWrapper();\r\n\r\n this.oauthGoogleReady.set(true);\r\n };\r\n\r\n }\r\n\r\n /**\r\n * Perform login using MSAL\r\n */\r\n protected loginMSAL() {\r\n // Clear any in-progress interaction flag that may have been left by a previous incomplete popup\r\n sessionStorage.removeItem('msal.interaction.status');\r\n\r\n this.msaLService.loginPopup()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (r: AuthenticationResult) => {\r\n try {\r\n this.msaLService.instance.setActiveAccount(r.account);\r\n this.msaLService.acquireTokenSilent({\r\n scopes: [\r\n \"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"\r\n ],\r\n account: r.account\r\n }).subscribe({\r\n next: (tokenResult: AuthenticationResult) => {\r\n console.log(\"Token acquired!\");\r\n this.success.emit({ type: 1, token: tokenResult.accessToken });\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n } catch (error: any) {\r\n this.dialogService.error(error.message);\r\n }\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n* Perform login using Google\r\n*/\r\n protected loginGoogle() {\r\n // Use wrapper click to prevent Illegal invocation exception\r\n googleButtonWrapper.click();\r\n }\r\n}\r\n\r\nconst createFakeGoogleWrapper = () => {\r\n const googleLoginWrapper = document.createElement(\"div\");\r\n // Or you can simple hide it in CSS rule for custom-google-button\r\n googleLoginWrapper.style.display = \"none\";\r\n googleLoginWrapper.classList.add(\"custom-google-button\");\r\n\r\n // Add the wrapper to body\r\n document.body.appendChild(googleLoginWrapper);\r\n\r\n // Use GSI javascript api to render the button inside our wrapper\r\n // You can ignore the properties because this button will not appear\r\n // @ts-ignore\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: \"icon\",\r\n width: \"200\",\r\n });\r\n\r\n const googleLoginWrapperButton =\r\n googleLoginWrapper.querySelector(\"div[role=button]\");\r\n\r\n return {\r\n click: () => {\r\n // @ts-ignore\r\n googleLoginWrapperButton.click();\r\n },\r\n };\r\n};\r\nvar googleButtonWrapper: any;\r\n\r\n","<div class=\"login-oauth\">\r\n @if(showInfo()) {\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n @if(applicationName()) {\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{applicationName()}} e dei servizi ad esso\r\n connessi.</p>\r\n }\r\n </div>\r\n }\r\n @if (allowMicrosoft()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginMSAL()\" [attr.aria-label]=\"'Effettua accesso'\"\r\n [disabled]=\"!oauthMicrosoftReady()\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n }\r\n @if (allowGoogle()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n [attr.aria-label]=\"'Effettua accesso'\" [disabled]=\"!oauthGoogleReady()\">\r\n Accedi con Google</button>\r\n </div>\r\n }\r\n</div>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/components/login/login-oauth.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|