alfenory-authv2-ui 0.0.2 → 0.0.3
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.
|
@@ -6,7 +6,7 @@ import { catchError, of, tap, switchMap } from 'rxjs';
|
|
|
6
6
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
7
7
|
import * as i1 from '@angular/common';
|
|
8
8
|
import { CommonModule } from '@angular/common';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i1$1 from '@ngx-translate/core';
|
|
10
10
|
import { TranslateModule } from '@ngx-translate/core';
|
|
11
11
|
import * as i3 from '@angular/forms';
|
|
12
12
|
import { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
@@ -272,7 +272,7 @@ class Login {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Login, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: Login, isStandalone: true, selector: "alfenoryauthv2-ui-login", ngImport: i0, template: "@if (isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} \r\n@else {\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.login' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n @if (errorType() !== 0) \r\n {\r\n <div class=\"alert alert-danger\" role=\"alert\">\r\n <b>{{'general.messages.error' | translate}}</b>\r\n @if (errorType() === 1) {\r\n {{'libs.basic-auth.loginerror' | translate}}\r\n } \r\n @if (errorType() === 2) {\r\n {{'libs.basic-auth.sessionrunouterror_text' | translate}}\r\n } \r\n </div>\r\n }\r\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\"> \r\n <div class=\"form-floating mb-3\">\r\n <input type=\"email\" class=\"form-control\" formControlName=\"username\" id=\"username\" name=\"username\" autocomplete=\"username\" placeholder=\"Email\" [ngClass]=\"{'is-invalid' : usernameControl.touched && usernameControl.errors}\">\r\n <label for=\"username\">{{'libs.basic-auth.email' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <div class=\"form-floating mb-3\">\r\n <input type=\"password\" class=\"form-control\" formControlName=\"password\" id=\"password\" name=\"password\" autocomplete=\"current-password\" placeholder=\"Passwort\" [ngClass]=\"{'is-invalid' : passwordControl.touched && passwordControl.errors}\">\r\n <label for=\"password\">{{'libs.basic-auth.password' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <button class=\"btn btn-primary\" type=\"submit\">\r\n {{'libs.basic-auth.submit' | translate}}\r\n </button>\r\n </form>\r\n </div>\r\n</div>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type:
|
|
275
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: Login, isStandalone: true, selector: "alfenoryauthv2-ui-login", ngImport: i0, template: "@if (isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} \r\n@else {\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.login' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n @if (errorType() !== 0) \r\n {\r\n <div class=\"alert alert-danger\" role=\"alert\">\r\n <b>{{'general.messages.error' | translate}}</b>\r\n @if (errorType() === 1) {\r\n {{'libs.basic-auth.loginerror' | translate}}\r\n } \r\n @if (errorType() === 2) {\r\n {{'libs.basic-auth.sessionrunouterror_text' | translate}}\r\n } \r\n </div>\r\n }\r\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\"> \r\n <div class=\"form-floating mb-3\">\r\n <input type=\"email\" class=\"form-control\" formControlName=\"username\" id=\"username\" name=\"username\" autocomplete=\"username\" placeholder=\"Email\" [ngClass]=\"{'is-invalid' : usernameControl.touched && usernameControl.errors}\">\r\n <label for=\"username\">{{'libs.basic-auth.email' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <div class=\"form-floating mb-3\">\r\n <input type=\"password\" class=\"form-control\" formControlName=\"password\" id=\"password\" name=\"password\" autocomplete=\"current-password\" placeholder=\"Passwort\" [ngClass]=\"{'is-invalid' : passwordControl.touched && passwordControl.errors}\">\r\n <label for=\"password\">{{'libs.basic-auth.password' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <button class=\"btn btn-primary\" type=\"submit\">\r\n {{'libs.basic-auth.submit' | translate}}\r\n </button>\r\n </form>\r\n </div>\r\n</div>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
276
276
|
}
|
|
277
277
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Login, decorators: [{
|
|
278
278
|
type: Component,
|
|
@@ -288,16 +288,31 @@ class Logout {
|
|
|
288
288
|
this.authStore.logout();
|
|
289
289
|
}
|
|
290
290
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Logout, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: Logout, isStandalone: true, selector: "alfenoryauthv2-ui-logout", ngImport: i0, template: "@if(isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} @else { \r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'libs.basic-auth.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'libs.basic-auth.login-link' | translate }}</a>\r\n </div> \r\n </div>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type:
|
|
291
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: Logout, isStandalone: true, selector: "alfenoryauthv2-ui-logout", ngImport: i0, template: "@if(isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} @else { \r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'libs.basic-auth.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'libs.basic-auth.login-link' | translate }}</a>\r\n </div> \r\n </div>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
292
292
|
}
|
|
293
293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: Logout, decorators: [{
|
|
294
294
|
type: Component,
|
|
295
295
|
args: [{ selector: 'alfenoryauthv2-ui-logout', imports: [CommonModule, TranslateModule], template: "@if(isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} @else { \r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'libs.basic-auth.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'libs.basic-auth.login-link' | translate }}</a>\r\n </div> \r\n </div>\r\n}" }]
|
|
296
296
|
}] });
|
|
297
297
|
|
|
298
|
+
class SwitchMembership {
|
|
299
|
+
authStore = inject(AuthStore);
|
|
300
|
+
localStorageService = inject(LocalStorageService);
|
|
301
|
+
memberships = computed(() => this.localStorageService.getMemberships() ?? []);
|
|
302
|
+
switch(membershipId) {
|
|
303
|
+
this.authStore.setMembershipId(membershipId);
|
|
304
|
+
}
|
|
305
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SwitchMembership, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
306
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: SwitchMembership, isStandalone: true, selector: "alfenoryauthv2-ui-switch-membership", ngImport: i0, template: "<div class=\"list-group\">\r\n <div class=\"list-group-item\">\r\n <h1>{{'alfenoryauthv2.switchmembership.title' | translate}}</h1>\r\n </div>\r\n <div vlass=\"list-group-item\">\r\n <p>{{'alfenoryauthv2.switchmembership.text' | translate}}</p>\r\n @for (membership of memberships(); track membership.id) {\r\n <div>\r\n <button class=\"btn btn-outline-primary\" (click)=\"switch(membership.id)\">{{membership.ug.name}}</button>\r\n </div>\r\n }\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
|
|
307
|
+
}
|
|
308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SwitchMembership, decorators: [{
|
|
309
|
+
type: Component,
|
|
310
|
+
args: [{ selector: 'alfenoryauthv2-ui-switch-membership', imports: [CommonModule, TranslateModule], template: "<div class=\"list-group\">\r\n <div class=\"list-group-item\">\r\n <h1>{{'alfenoryauthv2.switchmembership.title' | translate}}</h1>\r\n </div>\r\n <div vlass=\"list-group-item\">\r\n <p>{{'alfenoryauthv2.switchmembership.text' | translate}}</p>\r\n @for (membership of memberships(); track membership.id) {\r\n <div>\r\n <button class=\"btn btn-outline-primary\" (click)=\"switch(membership.id)\">{{membership.ug.name}}</button>\r\n </div>\r\n }\r\n </div>\r\n</div>" }]
|
|
311
|
+
}] });
|
|
312
|
+
|
|
298
313
|
/**
|
|
299
314
|
* Generated bundle index. Do not edit.
|
|
300
315
|
*/
|
|
301
316
|
|
|
302
|
-
export { API_URL, AuthService, AuthStore, BasicLocalStorageService, ConnectionService, LocalStorageKeys, LocalStorageService, Login, Logout, authGuard };
|
|
317
|
+
export { API_URL, AuthService, AuthStore, BasicLocalStorageService, ConnectionService, LocalStorageKeys, LocalStorageService, Login, Logout, SwitchMembership, authGuard };
|
|
303
318
|
//# sourceMappingURL=alfenory-authv2-ui.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alfenory-authv2-ui.mjs","sources":["../../../projects/alfenoryauthv2-ui/src/lib/models/basic.model.ts","../../../projects/alfenoryauthv2-ui/src/lib/models/localstorage-keys.model.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/connection.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/basic-localstorage.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/localstorage.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/auth.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/authstore/auth.store.ts","../../../projects/alfenoryauthv2-ui/src/lib/authguard/authgard.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/login/login.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/login/login.html","../../../projects/alfenoryauthv2-ui/src/lib/components/logout/logout.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/logout/logout.html","../../../projects/alfenoryauthv2-ui/src/alfenory-authv2-ui.ts"],"sourcesContent":["import { HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nexport const API_URL = new InjectionToken<string>('API_URL');\r\n\r\nexport type HttpHeaderOptionList = Record<string, string | string[]>;\r\n\r\nexport interface HttpHeaderOptions {\r\n headers?: HttpHeaders | HttpHeaderOptionList;\r\n observe?: 'body';\r\n params?: HttpParams | HttpHeaderOptionList;\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n};\r\n\r\nexport interface BasicModel {\r\n id: string;\r\n}\r\n\r\nexport interface BasicResponse {\r\n success: boolean;\r\n}\r\n\r\nexport interface BasisDataResponse<T> {\r\n data: T;\r\n}\r\n\r\nexport interface BasicResponseExtended extends BasicResponse {\r\n didRequest: boolean;\r\n error: string;\r\n}\r\n","export enum LocalStorageKeys {\r\n userId = \"AUTH_USER_ID\",\r\n authToken = \"AUTH_TOKEN\",\r\n memberships = \"AUTH_MEMBERSHIPS\",\r\n currentMembership = \"AUTH_CURRENT_MEMBERSHIP\"\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from 'rxjs';\r\nimport { API_URL, HttpHeaderOptions } from \"../models\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConnectionService {\r\n\r\n private http = inject(HttpClient);\r\n private apiUrl = inject(API_URL);\r\n\r\n get<T>(\r\n customUrl: string, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.get<T>(\r\n this.getURL(customUrl),\r\n options\r\n );\r\n }\r\n\r\n post<T>(\r\n customUrl: string, \r\n body: object | null, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.post<T>(\r\n this.getURL(customUrl), \r\n body, \r\n options\r\n );\r\n }\r\n\r\n patch<T>(\r\n customUrl: string, \r\n body: object | null, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.patch<T>(\r\n this.getURL(customUrl), \r\n body, \r\n options\r\n );\r\n }\r\n\r\n delete<T>(\r\n customUrl: string, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.delete<T>(\r\n this.getURL(customUrl), \r\n options\r\n );\r\n }\r\n\r\n private getURL(customUrl: string): string {\r\n return `${this.apiUrl}/${customUrl}`;\r\n }\r\n} \r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BasicLocalStorageService {\r\n\r\n setString(key: string, value: string) {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n setNumber(key: string, value: number) {\r\n localStorage.setItem(key, value.toString());\r\n }\r\n\r\n setJson(key: string, value: object) {\r\n this.setString(key, JSON.stringify(value));\r\n }\r\n\r\n getString(key: string) : string | null {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n getNumber(key: string, defaultValue?: string): number {\r\n return parseInt(this.getString(key) ?? (defaultValue ?? '0'));\r\n }\r\n\r\n getJson(key: string, defaultValue: object) {\r\n const resp = localStorage.getItem(key) as string;\r\n if (resp === undefined || resp === null) {\r\n return defaultValue;\r\n }\r\n try {\r\n return JSON.parse(resp);\r\n } catch(e) {\r\n console.log(e);\r\n }\r\n return defaultValue;\r\n }\r\n\r\n removeKey(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n}\r\n\r\n","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpHeaderOptions, LocalStorageKeys } from \"../models\";\r\nimport { BasicLocalStorageService } from './basic-localstorage.service';\r\nimport { Membership } from \"../models/auth.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStorageService extends BasicLocalStorageService {\r\n \r\n public getAuthToken(): string | null {\r\n return this.getString(LocalStorageKeys.authToken) ?? null;\r\n }\r\n\r\n public setAuthToken(token: string) {\r\n this.setString(LocalStorageKeys.authToken, token);\r\n }\r\n\r\n public getUserId(): string | null {\r\n return this.getString(LocalStorageKeys.userId) ?? null;\r\n }\r\n\r\n public setUserId(userId: string) {\r\n this.setString(LocalStorageKeys.userId, userId);\r\n }\r\n\r\n public setMemberships(memberships: Membership[]): void\r\n {\r\n this.setJson(LocalStorageKeys.memberships, memberships);\r\n }\r\n\r\n public getMemberships(): Membership[] | null {\r\n return this.getJson(LocalStorageKeys.memberships, []);\r\n }\r\n\r\n public setCurrentMembershipId(membershipId: string): void\r\n {\r\n this.setString(LocalStorageKeys.currentMembership, membershipId);\r\n }\r\n\r\n public getCurrentMembershipId(): string | null {\r\n return this.getString(LocalStorageKeys.currentMembership) ?? null;\r\n }\r\n\r\n public getHeaderWithAuth(): HttpHeaderOptions {\r\n let header = new HttpHeaders();\r\n header = header.set('Authorization', 'Bearer ' + this.getAuthToken());\r\n const param = new HttpParams();\r\n return {headers: header, params: param};\r\n }\r\n\r\n public removeAll() {\r\n this.removeKey(LocalStorageKeys.userId);\r\n this.removeKey(LocalStorageKeys.authToken);\r\n }\r\n}\r\n\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { BasicResponse } from \"../models\";\r\nimport { catchError, Observable, of } from \"rxjs\";\r\nimport { ConnectionService } from \"./connection.service\";\r\nimport { LocalStorageService } from \"./localstorage.service\";\r\nimport { LoginResponse, MembershipResponse } from \"../models/auth.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n public localstorageService = inject(LocalStorageService);\r\n public connectionService = inject(ConnectionService);\r\n\r\n doLogin(username: string, password: string): Observable<LoginResponse> {\r\n return this.connectionService.post<LoginResponse>(\r\n 'v1/auth/login', \r\n { username: username, password: password}\r\n ).pipe(\r\n catchError(() => {\r\n return of({success:false});\r\n })\r\n );\r\n }\r\n\r\n checkIfValid(): Observable<BasicResponse> {\r\n return this.connectionService.post<BasicResponse>( \r\n 'v1/auth/update',\r\n {},\r\n this.localstorageService.getHeaderWithAuth()\r\n ).pipe(\r\n catchError(() => {\r\n return of({success:false});\r\n })\r\n );\r\n }\r\n\r\n getMemberships(): Observable<MembershipResponse> {\r\n return this.connectionService.get<MembershipResponse>(\r\n 'v1/auth/membership',\r\n this.localstorageService.getHeaderWithAuth()\r\n ).pipe(\r\n catchError(() => {\r\n return of({success: false})\r\n }) \r\n );\r\n }\r\n\r\n doLogout(): Observable<BasicResponse> {\r\n return this.connectionService.get<BasicResponse>(\r\n 'v1/auth/logout',\r\n this.localstorageService.getHeaderWithAuth()\r\n ); \r\n }\r\n}\r\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\r\nimport { inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { of, switchMap, tap } from 'rxjs';\r\nimport { AuthService } from '../providers/auth.service';\r\nimport { LocalStorageService } from '../providers/localstorage.service';\r\n\r\nexport const AuthStore = signalStore(\r\n { providedIn: 'root' },\r\n\r\n withState({ \r\n loading: false,\r\n isAuthenticated: false,\r\n loginError: false,\r\n sessionRunoutError: false\r\n }),\r\n\r\n withMethods((store) => {\r\n \r\n const router = inject(Router);\r\n const authservice = inject(AuthService);\r\n const localstorageService = inject(LocalStorageService);\r\n\r\n return {\r\n loadMemberships() {\r\n authservice.getMemberships().subscribe(val => {\r\n const memberships = val.data ?? [];\r\n localstorageService.setMemberships(memberships);\r\n if (memberships.length === 0) {\r\n return router.navigate(['/auth/logout']);\r\n }\r\n if (memberships.length === 1) {\r\n return this.setMembershipId(memberships[0].id);\r\n }\r\n else {\r\n return router.navigate(['/auth/switch-membership']);\r\n }\r\n });\r\n }, \r\n login(username: string, password: string) { \r\n patchState(store, { loading: true, loginError: false, sessionRunoutError: false, isAuthenticated: false}); \r\n authservice.doLogin(username, password).subscribe((val) => {\r\n if(val.success && val.data) {\r\n patchState(store, {loading: false, isAuthenticated: true});\r\n localstorageService.setAuthToken(val.data.id);\r\n localstorageService.setUserId(val.data.userId);\r\n this.loadMemberships(); \r\n } else {\r\n patchState(store, {loading: false, loginError: true}); \r\n } \r\n });\r\n },\r\n setMembershipId(membershipId: string) {\r\n localstorageService.setCurrentMembershipId(membershipId);\r\n return router.navigate(['/dashboard']);\r\n },\r\n checkValid() {\r\n patchState(store, { loading: true, sessionRunoutError: false });\r\n return authservice.checkIfValid().pipe(\r\n tap((val) => {\r\n if(val.success) {\r\n patchState(store, {loading: false, isAuthenticated: true});\r\n } else {\r\n patchState(store, {\r\n loading: false,\r\n isAuthenticated: false,\r\n sessionRunoutError: localstorageService.getAuthToken() ? true : false\r\n })\r\n localstorageService.removeAll();\r\n router.navigate(['/auth/login']);\r\n }\r\n }),\r\n switchMap((val) => of(val.success))\r\n )\r\n },\r\n logout() { \r\n patchState(store, { loading: true }); \r\n authservice.doLogout().subscribe((val) => { \r\n if(val.success) {\r\n patchState(store, {loading: false, isAuthenticated: false });\r\n localstorageService.removeAll();\r\n }\r\n })\r\n } \r\n }\r\n }\r\n));","import { inject } from '@angular/core';\r\nimport { CanActivateFn } from '@angular/router';\r\nimport { AuthStore } from '../authstore';\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n const authStore = inject(AuthStore);\r\n return authStore.checkValid();\r\n};\r\n","import { Component, computed, inject, Signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { AuthStore } from '../../authstore';\r\n\r\n@Component({\r\n selector: 'alfenoryauthv2-ui-login',\r\n imports: [CommonModule, TranslateModule, ReactiveFormsModule],\r\n templateUrl: './login.html'\r\n})\r\nexport class Login {\r\n \r\n private authStore = inject(AuthStore);\r\n\r\n public get isLoading(): Signal<boolean> {\r\n return this.authStore.loading;\r\n }\r\n\r\n public errorType = computed(() => {\r\n if(this.authStore.loginError()) { return 1; }\r\n if(this.authStore.sessionRunoutError()) { return 2; }\r\n return 0;\r\n })\r\n \r\n public formGroup: FormGroup = new FormGroup({\r\n username: new FormControl('', [ Validators.required ]),\r\n password: new FormControl('', [ Validators.required ]),\r\n });\r\n\r\n public get usernameControl(): AbstractControl { return this.formGroup.controls['username']; }\r\n public get passwordControl(): AbstractControl { return this.formGroup.controls['password']; }\r\n\r\n onSubmit() {\r\n this.formGroup.markAllAsTouched(); \r\n if(this.formGroup.valid) {\r\n this.authStore.login(\r\n this.usernameControl.value?.trim(),\r\n this.passwordControl.value?.trim()\r\n )\r\n }\r\n }\r\n}\r\n","@if (isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} \r\n@else {\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.login' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n @if (errorType() !== 0) \r\n {\r\n <div class=\"alert alert-danger\" role=\"alert\">\r\n <b>{{'general.messages.error' | translate}}</b>\r\n @if (errorType() === 1) {\r\n {{'libs.basic-auth.loginerror' | translate}}\r\n } \r\n @if (errorType() === 2) {\r\n {{'libs.basic-auth.sessionrunouterror_text' | translate}}\r\n } \r\n </div>\r\n }\r\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\"> \r\n <div class=\"form-floating mb-3\">\r\n <input type=\"email\" class=\"form-control\" formControlName=\"username\" id=\"username\" name=\"username\" autocomplete=\"username\" placeholder=\"Email\" [ngClass]=\"{'is-invalid' : usernameControl.touched && usernameControl.errors}\">\r\n <label for=\"username\">{{'libs.basic-auth.email' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <div class=\"form-floating mb-3\">\r\n <input type=\"password\" class=\"form-control\" formControlName=\"password\" id=\"password\" name=\"password\" autocomplete=\"current-password\" placeholder=\"Passwort\" [ngClass]=\"{'is-invalid' : passwordControl.touched && passwordControl.errors}\">\r\n <label for=\"password\">{{'libs.basic-auth.password' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <button class=\"btn btn-primary\" type=\"submit\">\r\n {{'libs.basic-auth.submit' | translate}}\r\n </button>\r\n </form>\r\n </div>\r\n</div>\r\n}","import { Component, inject, OnInit, Signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { AuthStore } from '../../authstore';\r\n\r\n@Component({\r\n selector: 'alfenoryauthv2-ui-logout',\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './logout.html'\r\n})\r\nexport class Logout implements OnInit {\r\n\r\n private authStore = inject(AuthStore);\r\n\r\n public get isLoading(): Signal<boolean> {\r\n return this.authStore.loading;\r\n }\r\n\r\n ngOnInit() : void {\r\n this.authStore.logout();\r\n }\r\n}\r\n","@if(isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} @else { \r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'libs.basic-auth.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'libs.basic-auth.login-link' | translate }}</a>\r\n </div> \r\n </div>\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alfenory-authv2-ui.mjs","sources":["../../../projects/alfenoryauthv2-ui/src/lib/models/basic.model.ts","../../../projects/alfenoryauthv2-ui/src/lib/models/localstorage-keys.model.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/connection.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/basic-localstorage.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/localstorage.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/providers/auth.service.ts","../../../projects/alfenoryauthv2-ui/src/lib/authstore/auth.store.ts","../../../projects/alfenoryauthv2-ui/src/lib/authguard/authgard.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/login/login.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/login/login.html","../../../projects/alfenoryauthv2-ui/src/lib/components/logout/logout.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/logout/logout.html","../../../projects/alfenoryauthv2-ui/src/lib/components/switch-membership/switch-membership.ts","../../../projects/alfenoryauthv2-ui/src/lib/components/switch-membership/switch-membership.html","../../../projects/alfenoryauthv2-ui/src/alfenory-authv2-ui.ts"],"sourcesContent":["import { HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nexport const API_URL = new InjectionToken<string>('API_URL');\r\n\r\nexport type HttpHeaderOptionList = Record<string, string | string[]>;\r\n\r\nexport interface HttpHeaderOptions {\r\n headers?: HttpHeaders | HttpHeaderOptionList;\r\n observe?: 'body';\r\n params?: HttpParams | HttpHeaderOptionList;\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n};\r\n\r\nexport interface BasicModel {\r\n id: string;\r\n}\r\n\r\nexport interface BasicResponse {\r\n success: boolean;\r\n}\r\n\r\nexport interface BasisDataResponse<T> {\r\n data: T;\r\n}\r\n\r\nexport interface BasicResponseExtended extends BasicResponse {\r\n didRequest: boolean;\r\n error: string;\r\n}\r\n","export enum LocalStorageKeys {\r\n userId = \"AUTH_USER_ID\",\r\n authToken = \"AUTH_TOKEN\",\r\n memberships = \"AUTH_MEMBERSHIPS\",\r\n currentMembership = \"AUTH_CURRENT_MEMBERSHIP\"\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from 'rxjs';\r\nimport { API_URL, HttpHeaderOptions } from \"../models\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConnectionService {\r\n\r\n private http = inject(HttpClient);\r\n private apiUrl = inject(API_URL);\r\n\r\n get<T>(\r\n customUrl: string, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.get<T>(\r\n this.getURL(customUrl),\r\n options\r\n );\r\n }\r\n\r\n post<T>(\r\n customUrl: string, \r\n body: object | null, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.post<T>(\r\n this.getURL(customUrl), \r\n body, \r\n options\r\n );\r\n }\r\n\r\n patch<T>(\r\n customUrl: string, \r\n body: object | null, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.patch<T>(\r\n this.getURL(customUrl), \r\n body, \r\n options\r\n );\r\n }\r\n\r\n delete<T>(\r\n customUrl: string, \r\n options?: HttpHeaderOptions\r\n ): Observable<T> {\r\n return this.http.delete<T>(\r\n this.getURL(customUrl), \r\n options\r\n );\r\n }\r\n\r\n private getURL(customUrl: string): string {\r\n return `${this.apiUrl}/${customUrl}`;\r\n }\r\n} \r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BasicLocalStorageService {\r\n\r\n setString(key: string, value: string) {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n setNumber(key: string, value: number) {\r\n localStorage.setItem(key, value.toString());\r\n }\r\n\r\n setJson(key: string, value: object) {\r\n this.setString(key, JSON.stringify(value));\r\n }\r\n\r\n getString(key: string) : string | null {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n getNumber(key: string, defaultValue?: string): number {\r\n return parseInt(this.getString(key) ?? (defaultValue ?? '0'));\r\n }\r\n\r\n getJson(key: string, defaultValue: object) {\r\n const resp = localStorage.getItem(key) as string;\r\n if (resp === undefined || resp === null) {\r\n return defaultValue;\r\n }\r\n try {\r\n return JSON.parse(resp);\r\n } catch(e) {\r\n console.log(e);\r\n }\r\n return defaultValue;\r\n }\r\n\r\n removeKey(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n}\r\n\r\n","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpHeaderOptions, LocalStorageKeys } from \"../models\";\r\nimport { BasicLocalStorageService } from './basic-localstorage.service';\r\nimport { Membership } from \"../models/auth.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStorageService extends BasicLocalStorageService {\r\n \r\n public getAuthToken(): string | null {\r\n return this.getString(LocalStorageKeys.authToken) ?? null;\r\n }\r\n\r\n public setAuthToken(token: string) {\r\n this.setString(LocalStorageKeys.authToken, token);\r\n }\r\n\r\n public getUserId(): string | null {\r\n return this.getString(LocalStorageKeys.userId) ?? null;\r\n }\r\n\r\n public setUserId(userId: string) {\r\n this.setString(LocalStorageKeys.userId, userId);\r\n }\r\n\r\n public setMemberships(memberships: Membership[]): void\r\n {\r\n this.setJson(LocalStorageKeys.memberships, memberships);\r\n }\r\n\r\n public getMemberships(): Membership[] | null {\r\n return this.getJson(LocalStorageKeys.memberships, []);\r\n }\r\n\r\n public setCurrentMembershipId(membershipId: string): void\r\n {\r\n this.setString(LocalStorageKeys.currentMembership, membershipId);\r\n }\r\n\r\n public getCurrentMembershipId(): string | null {\r\n return this.getString(LocalStorageKeys.currentMembership) ?? null;\r\n }\r\n\r\n public getHeaderWithAuth(): HttpHeaderOptions {\r\n let header = new HttpHeaders();\r\n header = header.set('Authorization', 'Bearer ' + this.getAuthToken());\r\n const param = new HttpParams();\r\n return {headers: header, params: param};\r\n }\r\n\r\n public removeAll() {\r\n this.removeKey(LocalStorageKeys.userId);\r\n this.removeKey(LocalStorageKeys.authToken);\r\n }\r\n}\r\n\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { BasicResponse } from \"../models\";\r\nimport { catchError, Observable, of } from \"rxjs\";\r\nimport { ConnectionService } from \"./connection.service\";\r\nimport { LocalStorageService } from \"./localstorage.service\";\r\nimport { LoginResponse, MembershipResponse } from \"../models/auth.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n public localstorageService = inject(LocalStorageService);\r\n public connectionService = inject(ConnectionService);\r\n\r\n doLogin(username: string, password: string): Observable<LoginResponse> {\r\n return this.connectionService.post<LoginResponse>(\r\n 'v1/auth/login', \r\n { username: username, password: password}\r\n ).pipe(\r\n catchError(() => {\r\n return of({success:false});\r\n })\r\n );\r\n }\r\n\r\n checkIfValid(): Observable<BasicResponse> {\r\n return this.connectionService.post<BasicResponse>( \r\n 'v1/auth/update',\r\n {},\r\n this.localstorageService.getHeaderWithAuth()\r\n ).pipe(\r\n catchError(() => {\r\n return of({success:false});\r\n })\r\n );\r\n }\r\n\r\n getMemberships(): Observable<MembershipResponse> {\r\n return this.connectionService.get<MembershipResponse>(\r\n 'v1/auth/membership',\r\n this.localstorageService.getHeaderWithAuth()\r\n ).pipe(\r\n catchError(() => {\r\n return of({success: false})\r\n }) \r\n );\r\n }\r\n\r\n doLogout(): Observable<BasicResponse> {\r\n return this.connectionService.get<BasicResponse>(\r\n 'v1/auth/logout',\r\n this.localstorageService.getHeaderWithAuth()\r\n ); \r\n }\r\n}\r\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\r\nimport { inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { of, switchMap, tap } from 'rxjs';\r\nimport { AuthService } from '../providers/auth.service';\r\nimport { LocalStorageService } from '../providers/localstorage.service';\r\n\r\nexport const AuthStore = signalStore(\r\n { providedIn: 'root' },\r\n\r\n withState({ \r\n loading: false,\r\n isAuthenticated: false,\r\n loginError: false,\r\n sessionRunoutError: false\r\n }),\r\n\r\n withMethods((store) => {\r\n \r\n const router = inject(Router);\r\n const authservice = inject(AuthService);\r\n const localstorageService = inject(LocalStorageService);\r\n\r\n return {\r\n loadMemberships() {\r\n authservice.getMemberships().subscribe(val => {\r\n const memberships = val.data ?? [];\r\n localstorageService.setMemberships(memberships);\r\n if (memberships.length === 0) {\r\n return router.navigate(['/auth/logout']);\r\n }\r\n if (memberships.length === 1) {\r\n return this.setMembershipId(memberships[0].id);\r\n }\r\n else {\r\n return router.navigate(['/auth/switch-membership']);\r\n }\r\n });\r\n }, \r\n login(username: string, password: string) { \r\n patchState(store, { loading: true, loginError: false, sessionRunoutError: false, isAuthenticated: false}); \r\n authservice.doLogin(username, password).subscribe((val) => {\r\n if(val.success && val.data) {\r\n patchState(store, {loading: false, isAuthenticated: true});\r\n localstorageService.setAuthToken(val.data.id);\r\n localstorageService.setUserId(val.data.userId);\r\n this.loadMemberships(); \r\n } else {\r\n patchState(store, {loading: false, loginError: true}); \r\n } \r\n });\r\n },\r\n setMembershipId(membershipId: string) {\r\n localstorageService.setCurrentMembershipId(membershipId);\r\n return router.navigate(['/dashboard']);\r\n },\r\n checkValid() {\r\n patchState(store, { loading: true, sessionRunoutError: false });\r\n return authservice.checkIfValid().pipe(\r\n tap((val) => {\r\n if(val.success) {\r\n patchState(store, {loading: false, isAuthenticated: true});\r\n } else {\r\n patchState(store, {\r\n loading: false,\r\n isAuthenticated: false,\r\n sessionRunoutError: localstorageService.getAuthToken() ? true : false\r\n })\r\n localstorageService.removeAll();\r\n router.navigate(['/auth/login']);\r\n }\r\n }),\r\n switchMap((val) => of(val.success))\r\n )\r\n },\r\n logout() { \r\n patchState(store, { loading: true }); \r\n authservice.doLogout().subscribe((val) => { \r\n if(val.success) {\r\n patchState(store, {loading: false, isAuthenticated: false });\r\n localstorageService.removeAll();\r\n }\r\n })\r\n } \r\n }\r\n }\r\n));","import { inject } from '@angular/core';\r\nimport { CanActivateFn } from '@angular/router';\r\nimport { AuthStore } from '../authstore';\r\n\r\nexport const authGuard: CanActivateFn = () => {\r\n const authStore = inject(AuthStore);\r\n return authStore.checkValid();\r\n};\r\n","import { Component, computed, inject, Signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { AuthStore } from '../../authstore';\r\n\r\n@Component({\r\n selector: 'alfenoryauthv2-ui-login',\r\n imports: [CommonModule, TranslateModule, ReactiveFormsModule],\r\n templateUrl: './login.html'\r\n})\r\nexport class Login {\r\n \r\n private authStore = inject(AuthStore);\r\n\r\n public get isLoading(): Signal<boolean> {\r\n return this.authStore.loading;\r\n }\r\n\r\n public errorType = computed(() => {\r\n if(this.authStore.loginError()) { return 1; }\r\n if(this.authStore.sessionRunoutError()) { return 2; }\r\n return 0;\r\n })\r\n \r\n public formGroup: FormGroup = new FormGroup({\r\n username: new FormControl('', [ Validators.required ]),\r\n password: new FormControl('', [ Validators.required ]),\r\n });\r\n\r\n public get usernameControl(): AbstractControl { return this.formGroup.controls['username']; }\r\n public get passwordControl(): AbstractControl { return this.formGroup.controls['password']; }\r\n\r\n onSubmit() {\r\n this.formGroup.markAllAsTouched(); \r\n if(this.formGroup.valid) {\r\n this.authStore.login(\r\n this.usernameControl.value?.trim(),\r\n this.passwordControl.value?.trim()\r\n )\r\n }\r\n }\r\n}\r\n","@if (isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} \r\n@else {\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.login' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n @if (errorType() !== 0) \r\n {\r\n <div class=\"alert alert-danger\" role=\"alert\">\r\n <b>{{'general.messages.error' | translate}}</b>\r\n @if (errorType() === 1) {\r\n {{'libs.basic-auth.loginerror' | translate}}\r\n } \r\n @if (errorType() === 2) {\r\n {{'libs.basic-auth.sessionrunouterror_text' | translate}}\r\n } \r\n </div>\r\n }\r\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\"> \r\n <div class=\"form-floating mb-3\">\r\n <input type=\"email\" class=\"form-control\" formControlName=\"username\" id=\"username\" name=\"username\" autocomplete=\"username\" placeholder=\"Email\" [ngClass]=\"{'is-invalid' : usernameControl.touched && usernameControl.errors}\">\r\n <label for=\"username\">{{'libs.basic-auth.email' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <div class=\"form-floating mb-3\">\r\n <input type=\"password\" class=\"form-control\" formControlName=\"password\" id=\"password\" name=\"password\" autocomplete=\"current-password\" placeholder=\"Passwort\" [ngClass]=\"{'is-invalid' : passwordControl.touched && passwordControl.errors}\">\r\n <label for=\"password\">{{'libs.basic-auth.password' | translate}}</label>\r\n <div class=\"invalid-feedback\">\r\n {{'general.messages.required' | translate}}\r\n </div>\r\n </div>\r\n <button class=\"btn btn-primary\" type=\"submit\">\r\n {{'libs.basic-auth.submit' | translate}}\r\n </button>\r\n </form>\r\n </div>\r\n</div>\r\n}","import { Component, inject, OnInit, Signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { AuthStore } from '../../authstore';\r\n\r\n@Component({\r\n selector: 'alfenoryauthv2-ui-logout',\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './logout.html'\r\n})\r\nexport class Logout implements OnInit {\r\n\r\n private authStore = inject(AuthStore);\r\n\r\n public get isLoading(): Signal<boolean> {\r\n return this.authStore.loading;\r\n }\r\n\r\n ngOnInit() : void {\r\n this.authStore.logout();\r\n }\r\n}\r\n","@if(isLoading()) {\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"sr-only\"></span>\r\n </div>\r\n} @else { \r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <h1>{{'libs.basic-auth.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'libs.basic-auth.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'libs.basic-auth.login-link' | translate }}</a>\r\n </div> \r\n </div>\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { Component, computed, inject } from \"@angular/core\";\r\nimport { AuthStore } from \"../../authstore\";\r\nimport { LocalStorageService } from \"../../providers\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n selector: 'alfenoryauthv2-ui-switch-membership',\r\n templateUrl: './switch-membership.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class SwitchMembership {\r\n\r\n private authStore = inject(AuthStore);\r\n private localStorageService = inject(LocalStorageService);\r\n public memberships = computed(() => this.localStorageService.getMemberships() ?? []);\r\n\r\n public switch(membershipId: string): void\r\n {\r\n this.authStore.setMembershipId(membershipId);\r\n }\r\n}","<div class=\"list-group\">\r\n <div class=\"list-group-item\">\r\n <h1>{{'alfenoryauthv2.switchmembership.title' | translate}}</h1>\r\n </div>\r\n <div vlass=\"list-group-item\">\r\n <p>{{'alfenoryauthv2.switchmembership.text' | translate}}</p>\r\n @for (membership of memberships(); track membership.id) {\r\n <div>\r\n <button class=\"btn btn-outline-primary\" (click)=\"switch(membership.id)\">{{membership.ug.name}}</button>\r\n </div>\r\n }\r\n </div>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class SwitchMembership {
|
|
3
|
+
private authStore;
|
|
4
|
+
private localStorageService;
|
|
5
|
+
memberships: import("@angular/core").Signal<import("../../models/auth.model").Membership[]>;
|
|
6
|
+
switch(membershipId: string): void;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwitchMembership, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwitchMembership, "alfenoryauthv2-ui-switch-membership", never, {}, {}, never, never, true, never>;
|
|
9
|
+
}
|