alfenory-authv2-ui 0.0.5 → 0.0.7

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.
@@ -118,10 +118,11 @@ class LocalStorageService extends BasicLocalStorageService {
118
118
  return this.getString(LocalStorageKeys.currentMembership) ?? null;
119
119
  }
120
120
  getHeaderWithAuth() {
121
- let header = new HttpHeaders();
122
- header = header.set('Authorization', 'Bearer ' + this.getAuthToken());
123
- const param = new HttpParams();
124
- return { headers: header, params: param };
121
+ let headers = new HttpHeaders();
122
+ headers = headers.set('Authorization', 'Bearer ' + this.getAuthToken());
123
+ const params = new HttpParams();
124
+ console.log({ headers, params });
125
+ return { headers, params };
125
126
  }
126
127
  removeAll() {
127
128
  this.removeKey(LocalStorageKeys.userId);
@@ -140,24 +141,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
140
141
  class AuthService {
141
142
  localstorageService = inject(LocalStorageService);
142
143
  connectionService = inject(ConnectionService);
143
- doLogin(username, password) {
144
- return this.connectionService.post('v1/auth/users/login', { username: username, password: password }).pipe(catchError(() => {
145
- return of({ success: false });
146
- }));
147
- }
148
144
  checkIfValid() {
149
145
  return this.connectionService.post('v1/auth/users/checkvalidsession', {}, this.localstorageService.getHeaderWithAuth()).pipe(catchError(() => {
150
146
  return of({ success: false });
151
147
  }));
152
148
  }
153
- getMemberships() {
154
- return this.connectionService.get('v1/auth/users/memberships', this.localstorageService.getHeaderWithAuth()).pipe(catchError(() => {
149
+ doLogin(username, password) {
150
+ return this.connectionService.post('v1/auth/users/login', { username: username, password: password }).pipe(catchError(() => {
155
151
  return of({ success: false });
156
152
  }));
157
153
  }
158
154
  doLogout() {
159
155
  return this.connectionService.get('v1/auth/users/logout', this.localstorageService.getHeaderWithAuth());
160
156
  }
157
+ getMemberships() {
158
+ return this.connectionService.get('v1/auth/users/memberships', this.localstorageService.getHeaderWithAuth()).pipe(catchError(() => {
159
+ return of({ success: false });
160
+ }));
161
+ }
161
162
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
162
163
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AuthService, providedIn: 'root' });
163
164
  }
@@ -186,7 +187,7 @@ const AuthStore = signalStore({ providedIn: 'root' }, withState({
186
187
  return router.navigate(['/auth/logout']);
187
188
  }
188
189
  if (memberships.length === 1) {
189
- return this.setMembershipId(memberships[0].id);
190
+ return this.setMembershipId(memberships[0]);
190
191
  }
191
192
  else {
192
193
  return router.navigate(['/auth/switch-membership']);
@@ -198,8 +199,7 @@ const AuthStore = signalStore({ providedIn: 'root' }, withState({
198
199
  authservice.doLogin(username, password).subscribe((val) => {
199
200
  if (val.success && val.data) {
200
201
  patchState(store, { loading: false, isAuthenticated: true });
201
- localstorageService.setAuthToken(val.data.id);
202
- localstorageService.setUserId(val.data.userId);
202
+ localstorageService.setAuthToken(val.data);
203
203
  this.loadMemberships();
204
204
  }
205
205
  else {
@@ -207,8 +207,9 @@ const AuthStore = signalStore({ providedIn: 'root' }, withState({
207
207
  }
208
208
  });
209
209
  },
210
- setMembershipId(membershipId) {
211
- localstorageService.setCurrentMembershipId(membershipId);
210
+ setMembershipId(membership) {
211
+ localstorageService.setCurrentMembershipId(membership.id);
212
+ localstorageService.setUserId(membership.user_id);
212
213
  return router.navigate(['/dashboard']);
213
214
  },
214
215
  checkValid() {
@@ -299,15 +300,15 @@ class SwitchMembership {
299
300
  authStore = inject(AuthStore);
300
301
  localStorageService = inject(LocalStorageService);
301
302
  memberships = computed(() => this.localStorageService.getMemberships() ?? []);
302
- switch(membershipId) {
303
- this.authStore.setMembershipId(membershipId);
303
+ switch(membership) {
304
+ this.authStore.setMembershipId(membership);
304
305
  }
305
306
  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
+ 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)\">{{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
  }
308
309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SwitchMembership, decorators: [{
309
310
  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
+ 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)\">{{membership.ug.name}}</button>\r\n </div>\r\n }\r\n </div>\r\n</div>" }]
311
312
  }] });
312
313
 
313
314
  /**
@@ -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/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/users/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/users/checkvalidsession',\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/users/memberships',\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/users/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>{{'alfenoryauthv2.login.header' | 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 {{'alfenoryauthv2.login.loginerror' | translate}}\r\n } \r\n @if (errorType() === 2) {\r\n {{'alfenoryauthv2.login.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\">{{'alfenoryauthv2.login.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\">{{'alfenoryauthv2.login.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 {{'alfenoryauthv2.login.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>{{'alfenoryauthv2.logout.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'alfenoryauthv2.logout.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'alfenoryauthv2.logout.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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"}
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 headers = new HttpHeaders();\r\n headers = headers.set('Authorization', 'Bearer ' + this.getAuthToken());\r\n const params = new HttpParams();\r\n console.log({headers, params});\r\n return {headers, params};\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 checkIfValid(): Observable<BasicResponse> {\r\n return this.connectionService.post<BasicResponse>( \r\n 'v1/auth/users/checkvalidsession',\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 doLogin(username: string, password: string): Observable<LoginResponse> {\r\n return this.connectionService.post<LoginResponse>(\r\n 'v1/auth/users/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 doLogout(): Observable<BasicResponse> {\r\n return this.connectionService.get<BasicResponse>(\r\n 'v1/auth/users/logout',\r\n this.localstorageService.getHeaderWithAuth()\r\n ); \r\n }\r\n\r\n getMemberships(): Observable<MembershipResponse> {\r\n return this.connectionService.get<MembershipResponse>(\r\n 'v1/auth/users/memberships',\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","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\nimport { Membership } from '../models/auth.model';\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]);\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);\r\n this.loadMemberships(); \r\n } else {\r\n patchState(store, {loading: false, loginError: true}); \r\n } \r\n });\r\n },\r\n setMembershipId(membership: Membership) {\r\n localstorageService.setCurrentMembershipId(membership.id);\r\n localstorageService.setUserId(membership.user_id);\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>{{'alfenoryauthv2.login.header' | 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 {{'alfenoryauthv2.login.loginerror' | translate}}\r\n } \r\n @if (errorType() === 2) {\r\n {{'alfenoryauthv2.login.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\">{{'alfenoryauthv2.login.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\">{{'alfenoryauthv2.login.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 {{'alfenoryauthv2.login.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>{{'alfenoryauthv2.logout.logout' | translate}}</h1>\r\n </div>\r\n <div class=\"card-body\">\r\n <p>{{'alfenoryauthv2.logout.success_logouttext' | translate}}</p>\r\n <a href=\"/auth/login\">{{ 'alfenoryauthv2.logout.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\nimport { Membership } from \"../../models/auth.model\";\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(membership: Membership): void\r\n {\r\n this.authStore.setMembershipId(membership);\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)\">{{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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"}
@@ -1,3 +1,4 @@
1
+ import { Membership } from '../models/auth.model';
1
2
  export declare const AuthStore: import("@angular/core").Type<{
2
3
  loading: import("@angular/core").Signal<boolean>;
3
4
  isAuthenticated: import("@angular/core").Signal<boolean>;
@@ -5,7 +6,7 @@ export declare const AuthStore: import("@angular/core").Type<{
5
6
  sessionRunoutError: import("@angular/core").Signal<boolean>;
6
7
  loadMemberships: () => void;
7
8
  login: (username: string, password: string) => void;
8
- setMembershipId: (membershipId: string) => Promise<boolean>;
9
+ setMembershipId: (membership: Membership) => Promise<boolean>;
9
10
  checkValid: () => import("rxjs").Observable<boolean>;
10
11
  logout: () => void;
11
12
  } & import("@ngrx/signals").StateSource<{
@@ -1,9 +1,10 @@
1
+ import { Membership } from "../../models/auth.model";
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class SwitchMembership {
3
4
  private authStore;
4
5
  private localStorageService;
5
- memberships: import("@angular/core").Signal<import("../../models/auth.model").Membership[]>;
6
- switch(membershipId: string): void;
6
+ memberships: import("@angular/core").Signal<Membership[]>;
7
+ switch(membership: Membership): void;
7
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SwitchMembership, never>;
8
9
  static ɵcmp: i0.ɵɵComponentDeclaration<SwitchMembership, "alfenoryauthv2-ui-switch-membership", never, {}, {}, never, never, true, never>;
9
10
  }
@@ -1,13 +1,6 @@
1
1
  import { BasicResponse } from "./basic.model";
2
- export interface LoginData {
3
- id: string;
4
- userId: string;
5
- validUntil: {
6
- date: string;
7
- };
8
- }
9
2
  export interface LoginResponse extends BasicResponse {
10
- data?: LoginData;
3
+ data?: string;
11
4
  }
12
5
  export interface Usergroup {
13
6
  id: string;
@@ -18,6 +11,7 @@ export interface Membership {
18
11
  role_id: string;
19
12
  usergroup_id: string;
20
13
  ug: Usergroup;
14
+ user_id: string;
21
15
  }
22
16
  export interface MembershipResponse extends BasicResponse {
23
17
  data?: Membership[];
@@ -7,10 +7,10 @@ import * as i0 from "@angular/core";
7
7
  export declare class AuthService {
8
8
  localstorageService: LocalStorageService;
9
9
  connectionService: ConnectionService;
10
- doLogin(username: string, password: string): Observable<LoginResponse>;
11
10
  checkIfValid(): Observable<BasicResponse>;
12
- getMemberships(): Observable<MembershipResponse>;
11
+ doLogin(username: string, password: string): Observable<LoginResponse>;
13
12
  doLogout(): Observable<BasicResponse>;
13
+ getMemberships(): Observable<MembershipResponse>;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
15
15
  static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
16
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alfenory-authv2-ui",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.4",
6
6
  "@angular/core": "^19.2.4",