@rolatech/angular-auth 20.3.0-beta.4 → 20.3.1-beta.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-auth.mjs","sources":["../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.ts","../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.html","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.ts","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.html","../../../../packages/angular-auth/src/lib/auth-context.store.ts","../../../../packages/angular-auth/src/lib/auth.store.ts","../../../../packages/angular-auth/src/lib/access/role.constants.ts","../../../../packages/angular-auth/src/lib/components/agent-access-menu/agent-access-menu.component.ts","../../../../packages/angular-auth/src/lib/services/auth.service.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.html","../../../../packages/angular-auth/src/lib/interfaces/auth.interface.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.html","../../../../packages/angular-auth/src/lib/guards/auth.guard.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.html","../../../../packages/angular-auth/src/lib/guards/auth-dialog.guard.ts","../../../../packages/angular-auth/src/lib/access/access.utils.ts","../../../../packages/angular-auth/src/lib/guards/access.guard.ts","../../../../packages/angular-auth/src/lib/guards/landing-redirect.guard.ts","../../../../packages/angular-auth/src/lib/guards/role.guard.ts","../../../../packages/angular-auth/src/lib/guards/permission.guard.ts","../../../../packages/angular-auth/src/lib/services/auth-user.service.ts","../../../../packages/angular-auth/src/lib/services/auth-agent.service.ts","../../../../packages/angular-auth/src/lib/services/storage.service.ts","../../../../packages/angular-auth/src/lib/interceptors/error.interceptor.ts","../../../../packages/angular-auth/src/lib/interceptors/auth.interceptor.ts","../../../../packages/angular-auth/src/provider.ts","../../../../packages/angular-auth/src/lib/auth.routes.ts","../../../../packages/angular-auth/src/lib/navigation/navigation.tokens.ts","../../../../packages/angular-auth/src/lib/navigation/app-navigation.service.ts","../../../../packages/angular-auth/src/lib/routing/shell-routing.ts","../../../../packages/angular-auth/src/rolatech-angular-auth.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-forbidden',\n templateUrl: './forbidden.component.html',\n styleUrls: ['./forbidden.component.scss'],\n})\nexport class ForbiddenComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-unauthorized',\n templateUrl: './unauthorized.component.html',\n styleUrls: ['./unauthorized.component.scss'],\n})\nexport class UnauthorizedComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n","import { Injectable, computed, signal } from '@angular/core';\n\ntype AuthContextState = {\n appId: string | null;\n orgId: string | null;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class AuthContextStore {\n private readonly state = signal<AuthContextState>({\n appId: null,\n orgId: null,\n });\n\n readonly appId = computed(() => this.state().appId);\n readonly orgId = computed(() => this.state().orgId);\n\n setContext(appId: string | null, orgId: string | null): void {\n this.state.set({ appId, orgId });\n }\n\n setAppId(appId: string | null): void {\n this.state.update((state) => ({ ...state, appId }));\n }\n\n setOrgId(orgId: string | null): void {\n this.state.update((state) => ({ ...state, orgId }));\n }\n\n clear(): void {\n this.state.set({ appId: null, orgId: null });\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { User } from './interfaces/auth.interface';\nimport { AppMembershipResponse, MeContextResponse, OrgMembershipResponse } from './interfaces/me.interface';\n\ntype AuthState = {\n userId: string;\n user: User | null;\n roles: string[];\n username: string | null;\n platformRoles: string[];\n applications: AppMembershipResponse[];\n organizations: OrgMembershipResponse[];\n permissions: string[];\n authenticated: boolean | null;\n loaded: boolean;\n};\n@Injectable({ providedIn: 'root' })\nexport class AuthStore {\n private _state = signal<AuthState>({\n userId: '',\n user: null,\n roles: [],\n username: null,\n platformRoles: [],\n applications: [],\n organizations: [],\n permissions: [],\n authenticated: false,\n loaded: false,\n });\n userId = computed(() => this._state().userId);\n user = computed(() => this._state().user);\n roles = computed(() => this._state().roles);\n username = computed(() => this._state().username);\n platformRoles = computed(() => this._state().platformRoles);\n applications = computed(() => this._state().applications);\n organizations = computed(() => this._state().organizations);\n permissions = computed(() => this._state().permissions);\n authenticated = computed(() => this._state().authenticated);\n loaded = computed(() => this._state().loaded);\n me = computed<MeContextResponse | null>(() => {\n if (!this.loaded() || !this.authenticated()) {\n return null;\n }\n\n return {\n userId: this.userId(),\n username: this.username() ?? this.user()?.username ?? '',\n platformRoles: this.platformRoles(),\n applications: this.applications(),\n organizations: this.organizations(),\n permissions: this.permissions(),\n };\n });\n primaryApplication = computed(() => this.applications()[0] ?? null);\n primaryOrganization = computed(() => this.organizations()[0] ?? null);\n\n update(data: any) {\n this._state.update((state) => {\n state.authenticated = data.authenticated;\n state.userId = data.userId ?? state.userId;\n state.roles = data.roles ?? state.roles;\n state.loaded = data.loaded ?? state.loaded;\n state.user = data.user ?? state.user;\n state.username = data.username ?? state.username;\n state.platformRoles = data.platformRoles ?? state.platformRoles;\n state.applications = data.applications ?? state.applications;\n state.organizations = data.organizations ?? state.organizations;\n state.permissions = data.permissions ?? state.permissions;\n return { ...state };\n });\n }\n clear() {\n this._state.set({\n userId: '',\n user: null,\n roles: [],\n username: null,\n platformRoles: [],\n applications: [],\n organizations: [],\n permissions: [],\n authenticated: false,\n loaded: true,\n });\n }\n resetLoading() {\n this._state.update((state) => ({ ...state, loaded: false }));\n }\n updateAuthenticated(authenticated: boolean) {\n this._state.update((state) => {\n state.authenticated = authenticated;\n return { ...state };\n });\n }\n updateUser(user: User) {\n this._state.update((state) => {\n state.user = user;\n state.username = user.username;\n return { ...state };\n });\n }\n updateContext(context: MeContextResponse) {\n this._state.update((state) => ({\n ...state,\n userId: context.userId,\n username: context.username,\n platformRoles: context.platformRoles ?? [],\n applications: context.applications ?? [],\n organizations: context.organizations ?? [],\n permissions: context.permissions ?? [],\n }));\n }\n updateEmail(email: string) {\n this._state.update((state) => {\n if (state.user) {\n state.user = { ...state.user, email };\n }\n return { ...state };\n });\n }\n hasAnyRole(...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n const roleSet = new Set(this.roles());\n return roles.some((role) => roleSet.has(role));\n }\n hasPlatformRole(...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n const roleSet = new Set(this.platformRoles().length ? this.platformRoles() : this.roles());\n return roles.some((role) => roleSet.has(role));\n }\n hasApplicationRole(appId: string | null, ...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n return this.applications().some((membership) => {\n if (appId && membership.appId !== appId) {\n return false;\n }\n\n const roleSet = new Set(membership.roles);\n return roles.some((role) => roleSet.has(role));\n });\n }\n hasOrganizationRole(appId: string | null, orgId: string | null, ...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n return this.organizations().some((membership) => {\n if (appId && membership.appId !== appId) {\n return false;\n }\n\n if (orgId && membership.orgId !== orgId) {\n return false;\n }\n\n const roleSet = new Set(membership.roles);\n return roles.some((role) => roleSet.has(role));\n });\n }\n hasPermission(permission: string): boolean {\n return this.permissions().includes(permission);\n }\n}\n","export const PLATFORM_ADMIN_ROLES = ['PLATFORM_ADMIN', 'ROLE_PLATFORM_ADMIN'] as const;\n\nexport const APPLICATION_OWNER_ROLES = ['APPLICATION_OWNER', 'APP_OWNER', 'ROLE_APPLICATION_OWNER', 'ROLE_APP_OWNER'] as const;\n\nexport const APPLICATION_ADMIN_ROLES = ['APPLICATION_ADMIN', 'APP_ADMIN', 'ROLE_APPLICATION_ADMIN', 'ROLE_APP_ADMIN'] as const;\n\nexport const ORGANIZATION_OWNER_ROLES = ['ORGANIZATION_OWNER', 'ORG_OWNER', 'ROLE_ORGANIZATION_OWNER', 'ROLE_ORG_OWNER'] as const;\n\nexport const ORGANIZATION_ADMIN_ROLES = ['ORGANIZATION_ADMIN', 'ORG_ADMIN', 'ROLE_ORGANIZATION_ADMIN', 'ROLE_ORG_ADMIN'] as const;\n\nexport const ORGANIZATION_MEMBER_ROLES = ['ORGANIZATION_MEMBER', 'ORG_MEMBER', 'ROLE_ORGANIZATION_MEMBER', 'ROLE_ORG_MEMBER'] as const;\n\nexport const ORGANIZATION_STAFF_ROLES = ['ORGANIZATION_STAFF', 'ORG_STAFF', 'ROLE_ORGANIZATION_STAFF', 'ROLE_ORG_STAFF'] as const;\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RouterLink } from '@angular/router';\nimport { OnboardingApplicantService, OnboardingApplicationResponse, OnboardingProgress, OnboardingStatus } from '@rolatech/angular-services';\nimport { catchError, of, switchMap } from 'rxjs';\nimport { AuthContextStore } from '../../auth-context.store';\nimport { AuthStore } from '../../auth.store';\nimport { ORGANIZATION_ADMIN_ROLES, ORGANIZATION_MEMBER_ROLES, ORGANIZATION_OWNER_ROLES } from '../../access/role.constants';\n\ninterface AgentMenuEntry {\n icon: string;\n label: string;\n routerLink: string | any[];\n}\n\n@Component({\n selector: 'rolatech-agent-access-menu',\n imports: [MatMenuModule, MatIconModule, RouterLink],\n template: `\n @if (entry(); as item) {\n <a mat-menu-item [routerLink]=\"item.routerLink\" class=\"px-6 flex items-center cursor-pointer\">\n <mat-icon>{{ item.icon }}</mat-icon>\n <span class=\"flex items-center pl-1\">{{ item.label }}</span>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AgentAccessMenuComponent {\n readonly applicationCode = input('primecasa');\n readonly applyRouterLink = input<string | any[]>('/agents');\n readonly dashboardRouterLink = input<string | any[]>('/organization');\n readonly showApplyAction = input(true);\n readonly dashboardLabel = input('Agent dashboard');\n\n private readonly authStore = inject(AuthStore);\n private readonly authContextStore = inject(AuthContextStore);\n private readonly onboardingApplicantService = inject(OnboardingApplicantService);\n\n private readonly mine = toSignal(\n toObservable(\n computed(() => ({\n authenticated: this.authStore.authenticated(),\n loaded: this.authStore.loaded(),\n applicationCode: this.applicationCode(),\n })),\n ).pipe(\n switchMap(({ authenticated, loaded, applicationCode }) => {\n if (!loaded || !authenticated || !applicationCode) {\n return of<OnboardingApplicationResponse[] | null>(null);\n }\n\n return this.onboardingApplicantService.listMine(applicationCode).pipe(\n catchError(() => of<OnboardingApplicationResponse[]>([])),\n );\n }),\n ),\n { initialValue: null },\n );\n\n readonly latestApplication = computed<OnboardingApplicationResponse | null>(() => {\n const applications = this.mine();\n\n if (!applications?.length) {\n return null;\n }\n\n return [...applications].sort((left, right) => this.toTimestamp(right) - this.toTimestamp(left))[0] ?? null;\n });\n\n readonly hasDashboardAccess = computed(() => {\n this.authStore.loaded();\n\n const appId =\n this.authContextStore.appId() ?? this.authStore.primaryApplication()?.appId ?? this.authStore.primaryOrganization()?.appId ?? null;\n\n return this.authStore.hasOrganizationRole(\n appId,\n null,\n ...ORGANIZATION_OWNER_ROLES,\n ...ORGANIZATION_ADMIN_ROLES,\n ...ORGANIZATION_MEMBER_ROLES,\n );\n });\n\n readonly entry = computed<AgentMenuEntry | null>(() => {\n if (this.hasDashboardAccess()) {\n return {\n icon: 'storefront',\n label: this.dashboardLabel(),\n routerLink: this.dashboardRouterLink(),\n };\n }\n\n const application = this.latestApplication();\n\n if (application) {\n return {\n icon: 'assignment',\n label: this.applicationLabel(application.status),\n routerLink: this.applicationRouterLink(application),\n };\n }\n\n if (!this.showApplyAction()) {\n return null;\n }\n\n return {\n icon: 'badge',\n label: 'Apply as agent',\n routerLink: this.applyRouterLink(),\n };\n });\n\n private applicationLabel(status: OnboardingStatus): string {\n switch (status) {\n case 'APPROVED':\n return 'Agent application approved';\n case 'FAILED':\n return 'Agent application result';\n case 'NEED_MORE_INFO':\n return 'Agent application updates';\n case 'SUBMITTED':\n case 'IN_REVIEW':\n return 'Agent application review';\n default:\n return 'Continue agent application';\n }\n }\n\n private applicationRouterLink(application: OnboardingApplicationResponse): string[] {\n const route = this.canOpenReview(application) ? 'review' : 'form';\n return ['/agents', application.id, route];\n }\n\n private canOpenReview(application: OnboardingApplicationResponse): boolean {\n const progress = application.progress;\n\n if (progress && !this.isFormComplete(progress)) {\n return false;\n }\n\n return application.status !== 'DRAFT' || this.isFormComplete(progress);\n }\n\n private isFormComplete(progress?: OnboardingProgress): boolean {\n return Boolean(\n progress?.profileCompleted && progress.qualificationCompleted && progress.financialCompleted && progress.bankingCompleted,\n );\n }\n\n private toTimestamp(application: OnboardingApplicationResponse): number {\n return Date.parse(application.updatedAt ?? application.createdAt ?? '') || 0;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, forkJoin, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { PasswordChange, APP_CONFIG, PasswordResetConfirmRequest, ApiResponse } from '@rolatech/angular-common';\nimport { IntrospectResponse, User } from '../interfaces/auth.interface';\nimport { AuthStore } from '../auth.store';\nimport { AuthContextStore } from '../auth-context.store';\nimport { MeContextResponse } from '../interfaces/me.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n authStore = inject(AuthStore);\n authContextStore = inject(AuthContextStore);\n authenticated = this.authStore.authenticated;\n userId = this.authStore.userId;\n user = this.authStore.user;\n roles = this.authStore.roles;\n meContext = this.authStore.me;\n platformRoles = this.authStore.platformRoles;\n applications = this.authStore.applications;\n organizations = this.authStore.organizations;\n permissions = this.authStore.permissions;\n loaded = this.authStore.loaded;\n private pendingIntrospect$?: Observable<IntrospectResponse>;\n\n public introspect(force = false): Observable<IntrospectResponse> {\n if (!force && this.authStore.loaded()) {\n return of(this.currentSession());\n }\n\n if (!force && this.pendingIntrospect$) {\n return this.pendingIntrospect$;\n }\n\n const request$ = this.http\n .get<IntrospectResponse>(`${this.environment.baseUrl}/auth/introspect`, {\n withCredentials: true,\n })\n .pipe(\n switchMap((res) => {\n if (!res.authenticated) {\n this.authStore.clear();\n this.authContextStore.clear();\n return of(res);\n }\n\n return forkJoin({\n user: this.me().pipe(catchError(() => of(null))),\n context: this.getMeContext().pipe(catchError(() => of(this.emptyContext(res)))),\n }).pipe(\n map(({ user, context }) => {\n this.authStore.update({\n authenticated: true,\n userId: res.userId,\n roles: res.roles ?? [],\n loaded: true,\n user,\n username: context.username ?? res.username ?? user?.username ?? null,\n platformRoles: context.platformRoles?.length ? context.platformRoles : (res.roles ?? []),\n applications: context.applications ?? [],\n organizations: context.organizations ?? [],\n permissions: context.permissions ?? [],\n });\n this.syncContext(context);\n return res;\n }),\n );\n }),\n catchError((error) => {\n this.authStore.clear();\n this.authContextStore.clear();\n return throwError(() => error);\n }),\n finalize(() => {\n this.pendingIntrospect$ = undefined;\n }),\n shareReplay(1),\n );\n\n this.pendingIntrospect$ = request$;\n return request$;\n }\n\n ensureLoaded(force = false): Observable<IntrospectResponse> {\n return this.introspect(force);\n }\n getMeContext(): Observable<MeContextResponse> {\n return this.http\n .get<ApiResponse<MeContextResponse>>(`${this.environment.baseUrl}/auth/me/context`)\n .pipe(map((res) => res.data));\n }\n me(): Observable<User | null> {\n return this.http\n .get<ApiResponse<User>>(`${this.environment.baseUrl}/auth/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateUser(res.data);\n return res.data;\n }),\n );\n }\n wechatLogin(code: string, state: string) {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/login?code=${code}&state=${state}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n wechatDisconnect() {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/disconnect`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n requestFaceIdDetect() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id`, {\n withCredentials: true,\n });\n }\n faceIdStatus() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me`, {\n withCredentials: true,\n });\n }\n faceIdStatusByToken(token: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me/by`, {\n params: { token: token },\n withCredentials: true,\n });\n }\n wechatStatus(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/wechat/status/by`, {\n params: options,\n withCredentials: true,\n });\n }\n login(data: any) {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/login`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.resetLoading();\n return res.data;\n }),\n );\n }\n signup(data: any): Observable<any> {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/signup`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.resetLoading();\n return res;\n }),\n );\n }\n logout() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/logout`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.clear();\n this.authContextStore.clear();\n return res;\n }),\n );\n }\n requestPasswordReset(email: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset-request`, { email });\n }\n validatePasswordRestToken(token: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/password/reset-tokens/${token}`);\n }\n resetPassword(data: PasswordResetConfirmRequest) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset`, data);\n }\n changePassword(data: PasswordChange) {\n return this.http\n .put<any>(`${this.environment.baseUrl}/auth/users/password`, data, {\n withCredentials: true,\n })\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.resetLoading();\n }),\n );\n }\n lookup(account: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/lookup`,\n {\n account,\n next,\n },\n { withCredentials: false },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n );\n }\n challenge(username: string, password: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/challenge`,\n {\n username,\n password,\n next,\n },\n { withCredentials: true },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.resetLoading();\n }),\n );\n }\n hasAnyRole(...roles: string[]): boolean {\n return this.authStore.hasAnyRole(...roles);\n }\n hasPlatformRole(...roles: string[]): boolean {\n return this.authStore.hasPlatformRole(...roles);\n }\n hasApplicationRole(appId: string | null, ...roles: string[]): boolean {\n return this.authStore.hasApplicationRole(appId, ...roles);\n }\n hasOrganizationRole(appId: string | null, orgId: string | null, ...roles: string[]): boolean {\n return this.authStore.hasOrganizationRole(appId, orgId, ...roles);\n }\n hasPermission(permission: string): boolean {\n return this.authStore.hasPermission(permission);\n }\n\n private emptyContext(res: IntrospectResponse): MeContextResponse {\n return {\n userId: res.userId,\n username: res.username ?? '',\n platformRoles: [],\n applications: [],\n organizations: [],\n permissions: [],\n };\n }\n\n private syncContext(context: MeContextResponse): void {\n if (this.authContextStore.appId() || this.authContextStore.orgId()) {\n return;\n }\n\n const primaryOrganization = context.organizations[0] ?? null;\n if (primaryOrganization) {\n this.authContextStore.setContext(primaryOrganization.appId, primaryOrganization.orgId);\n return;\n }\n\n const primaryApplication = context.applications[0] ?? null;\n if (primaryApplication) {\n this.authContextStore.setAppId(primaryApplication.appId);\n }\n }\n\n private currentSession(): IntrospectResponse {\n return {\n authenticated: !!this.authStore.authenticated(),\n userId: this.authStore.userId(),\n roles: this.authStore.roles(),\n username: this.authStore.username() ?? this.authStore.user()?.username,\n };\n }\n}\n","import { Component, DoCheck, ElementRef, HostListener, OnDestroy, Renderer2, inject, output } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { SnackBarService } from '@rolatech/angular-services';\nimport QRCode from 'qrcode';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthService } from '../../services/auth.service';\nimport { SpinnerComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-faceid-detect-dialog',\n templateUrl: './faceid-detect-dialog.component.html',\n styleUrls: ['./faceid-detect-dialog.component.scss'],\n imports: [SpinnerComponent, MatButtonModule],\n})\nexport class FaceidDetectDialogComponent implements OnDestroy {\n dialogRef = inject(MatDialogRef);\n environment = inject(APP_CONFIG);\n data = inject(MAT_DIALOG_DATA);\n authService = inject(AuthService);\n snackBarService = inject(SnackBarService);\n output = output<any>();\n loading = false;\n qrcodeUrl = '';\n verified = false;\n interval;\n constructor() {\n this.request();\n }\n ngOnDestroy(): void {\n clearInterval(this.interval);\n }\n request() {\n this.loading = true;\n this.authService.requestFaceIdDetect().subscribe({\n next: ({ data }) => {\n this.genQRCode(data.url);\n this.loop();\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n cancel() {\n clearInterval(this.interval);\n this.dialogRef.close(this.verified);\n }\n loop() {\n this.loading = false;\n this.interval = setInterval(() => {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n if (res.data.verified) {\n clearInterval(this.interval);\n this.dialogRef.close(true);\n }\n },\n });\n }, 2000);\n }\n async genQRCode(url: string) {\n try {\n this.qrcodeUrl = await QRCode.toDataURL(url);\n } catch (err) {\n console.error(err);\n }\n }\n}\n","<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n","export interface User {\n id: string;\n name: string;\n firstName: string;\n lastName: string;\n username: string;\n avatar: string;\n phone: string;\n email: string;\n bio: string;\n roles: Role[];\n gender: string;\n}\nexport interface Role {\n name: string;\n}\n\nexport interface PasswordChange {\n oldPassword: string;\n newPassword: string;\n ne2Password: string;\n}\nexport enum UserStatus {\n ACTIVE = '正常',\n AWAITING = '审核中',\n DELETED = '已删除',\n}\nexport interface IntrospectResponse {\n authenticated: boolean;\n userId: string;\n roles: string[];\n username?: string;\n}\nexport interface Address {\n id: string;\n name: string;\n phone: string;\n email: string;\n type: AddressType;\n country: string;\n province: string;\n city: string;\n district: string;\n street: string;\n detail: string;\n latitude: string;\n longitude: string;\n userId: string;\n}\nexport enum AddressType {\n HOME = '住宅地址',\n WORK = '工作地址',\n BILLING = '账单地址',\n SHIPPING = '购物地址',\n OTHER = '其他',\n}\n","import { Component, DoCheck, model, OnInit, output } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { AddressType } from '../../interfaces/auth.interface';\n\n@Component({\n selector: 'rolatech-address',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './address.component.html',\n styleUrl: './address.component.scss',\n})\nexport class AddressComponent implements OnInit, DoCheck {\n addressType = AddressType;\n enumKeys = Object.keys(this.addressType).filter((key) => isNaN(Number(key)));\n address = model<any>();\n output = output<any>();\n\n ngOnInit(): void {}\n\n ngDoCheck(): void {\n this.output.emit(this.address());\n }\n}\n","<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\nexport const AuthGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const router = inject(Router);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n const isSignInPage = state.url.includes('/signin');\n\n return authService.ensureLoaded().pipe(\n map(({ roles, authenticated }) => {\n const routeRoles = route.data['roles'];\n const passRoled = routeRoles ? roles?.some((r) => routeRoles.indexOf(r) >= 0) : true;\n if (authenticated && !passRoled) {\n router.navigate(['/forbidden']);\n return false;\n }\n\n if (authenticated) {\n if (isSignInPage) {\n window.location.href = continueUrl || environment.myaccountUrl;\n return false; // Prevent rendering the Sign-in page\n }\n // 1. If 'continue' parameter exists, redirect to it immediately\n if (isContinue && continueUrl) {\n window.location.href = continueUrl;\n return false;\n }\n // 2. If already at the accounts domain and NO continue URL, redirect to default account page\n if (window.location.href.includes(environment.accountsUrl)) {\n window.location.href = environment.myaccountUrl;\n return false;\n }\n // 3. Otherwise, if the user is already where they need to be, allow navigation\n return true;\n } else {\n // CASE: Not logged in\n if (isSignInPage) {\n return true; // Allow guest to see the Sign-in page\n }\n\n // Redirection for UNAUTHENTICATED users\n const currentUrl = encodeURIComponent(window.location.href);\n window.location.href = `${environment.accountsUrl}/signin?continue=${currentUrl}`;\n return false;\n }\n }),\n );\n};\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-auth-dialog',\n imports: [CommonModule, MatDialogModule],\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent {\n dialogRef = inject(MatDialogRef);\n}\n","<p>auth-dialog works!</p>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, UrlTree } from '@angular/router';\nimport { APP_CONFIG, WINDOW } from '@rolatech/angular-common';\nimport { last, map, Observable, of, switchMap, take } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { DialogService } from '@rolatech/angular-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthDialogComponent } from '../components/auth-dialog/auth-dialog.component';\n\nexport const AuthDialogGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const dialog = inject(MatDialog);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n return authService.introspect().pipe(\n map(({ roles, authenticated }) => {\n if (!authenticated) {\n if (window.location.href.includes(environment.accountsUrl) && !isContinue) {\n window.location.href = environment.myaccountUrl;\n }\n if (isContinue) {\n window.location.href = continueUrl;\n }\n } else {\n const dialogRef = dialog.open(AuthDialogComponent, {\n data: {},\n });\n dialogRef.afterClosed().subscribe((result) => {});\n return true;\n }\n return authenticated;\n }),\n );\n};\n","import { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { RouteAccessPolicy } from './route-access-policy';\n\nexport function matchesRouteAccessPolicy(\n authStore: AuthStore,\n authContextStore: AuthContextStore,\n policy?: RouteAccessPolicy,\n): boolean {\n if (!policy) {\n return true;\n }\n\n if (policy.authenticated !== undefined && authStore.authenticated() !== policy.authenticated) {\n return false;\n }\n\n const appId = authContextStore.appId() ?? authStore.primaryApplication()?.appId ?? authStore.primaryOrganization()?.appId ?? null;\n const orgId = authContextStore.orgId() ?? authStore.primaryOrganization()?.orgId ?? null;\n const groupMatches: boolean[] = [];\n\n if (policy.anyRole?.length) {\n groupMatches.push(authStore.hasAnyRole(...policy.anyRole));\n }\n\n if (policy.anyPlatformRole?.length) {\n groupMatches.push(authStore.hasPlatformRole(...policy.anyPlatformRole));\n }\n\n if (policy.anyApplicationRole?.length) {\n groupMatches.push(authStore.hasApplicationRole(appId, ...policy.anyApplicationRole));\n }\n\n if (policy.anyOrganizationRole?.length) {\n groupMatches.push(authStore.hasOrganizationRole(appId, orgId, ...policy.anyOrganizationRole));\n }\n\n if (policy.anyPermission?.length) {\n groupMatches.push(policy.anyPermission.some((permission) => authStore.hasPermission(permission)));\n }\n\n if (!groupMatches.length) {\n return true;\n }\n\n return groupMatches.some(Boolean);\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, CanMatchFn, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { matchesRouteAccessPolicy } from '../access/access.utils';\nimport { RouteAccessPolicy } from '../access/route-access-policy';\nimport { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { AuthService } from '../services/auth.service';\n\nexport function accessGuard(policy: RouteAccessPolicy, fallbackUrl = '/forbidden'): CanActivateFn {\n return () => {\n const router = inject(Router);\n const authService = inject(AuthService);\n const authStore = inject(AuthStore);\n const authContextStore = inject(AuthContextStore);\n\n return authService.ensureLoaded().pipe(\n map(() => (matchesRouteAccessPolicy(authStore, authContextStore, policy) ? true : router.parseUrl(fallbackUrl))),\n );\n };\n}\n\nexport function accessMatchGuard(policy: RouteAccessPolicy, fallbackUrl = '/forbidden'): CanMatchFn {\n return () => {\n const router = inject(Router);\n const authService = inject(AuthService);\n const authStore = inject(AuthStore);\n const authContextStore = inject(AuthContextStore);\n\n return authService.ensureLoaded().pipe(\n map(() => (matchesRouteAccessPolicy(authStore, authContextStore, policy) ? true : router.parseUrl(fallbackUrl))),\n );\n };\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport {\n APPLICATION_ADMIN_ROLES,\n APPLICATION_OWNER_ROLES,\n ORGANIZATION_ADMIN_ROLES,\n ORGANIZATION_MEMBER_ROLES,\n ORGANIZATION_OWNER_ROLES,\n ORGANIZATION_STAFF_ROLES,\n PLATFORM_ADMIN_ROLES,\n} from '../access/role.constants';\nimport { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { AuthService } from '../services/auth.service';\n\nexport interface LandingRedirectTarget {\n platform?: string;\n application?: string;\n organization?: string;\n forbidden?: string;\n}\n\nexport function landingRedirectGuard(targets: LandingRedirectTarget = {}): CanActivateFn {\n const resolvedTargets = {\n platform: targets.platform ?? '/platform',\n application: targets.application ?? '/app',\n organization: targets.organization ?? '/organization',\n forbidden: targets.forbidden ?? '/forbidden',\n };\n\n return () => {\n const router = inject(Router);\n const authService = inject(AuthService);\n const authStore = inject(AuthStore);\n const authContextStore = inject(AuthContextStore);\n\n return authService.ensureLoaded().pipe(\n map(() => {\n const appId = authContextStore.appId() ?? authStore.primaryApplication()?.appId ?? authStore.primaryOrganization()?.appId ?? null;\n const orgId = authContextStore.orgId() ?? authStore.primaryOrganization()?.orgId ?? null;\n\n if (authStore.hasPlatformRole(...PLATFORM_ADMIN_ROLES)) {\n return router.parseUrl(resolvedTargets.platform);\n }\n\n if (authStore.hasApplicationRole(appId, ...APPLICATION_OWNER_ROLES, ...APPLICATION_ADMIN_ROLES)) {\n return router.parseUrl(resolvedTargets.application);\n }\n\n if (\n authStore.hasOrganizationRole(\n appId,\n orgId,\n ...ORGANIZATION_OWNER_ROLES,\n ...ORGANIZATION_ADMIN_ROLES,\n ...ORGANIZATION_MEMBER_ROLES,\n ...ORGANIZATION_STAFF_ROLES,\n )\n ) {\n return router.parseUrl(resolvedTargets.organization);\n }\n\n return router.parseUrl(resolvedTargets.forbidden);\n }),\n );\n };\n}\n","import { filter } from 'rxjs/operators';\nimport { PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { isPlatformBrowser } from '@angular/common';\nimport { APP_CONFIG } from '@rolatech/angular-common';\n\nexport const RoleGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const snackBar = inject(MatSnackBar);\n const router = inject(Router);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n const routeRoles = route.data['roles'];\n // if (!routeRoles) {\n // return of(false);\n // }\n return authService.ensureLoaded().pipe(\n filter((res) => res.roles !== null && res.roles.length > 0),\n map(({ roles }) => {\n const authed = roles.some((r) => routeRoles?.indexOf(r) >= 0);\n if (!authed) {\n router.navigate(['/forbidden']);\n }\n return authed;\n }),\n );\n};\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const PermissionGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n\n // if (!isPlatformBrowser(platformId)) {\n // return of(false);\n // }\n\n return of(false);\n};\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiResponse, APP_CONFIG } from '@rolatech/angular-common';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { User } from '../interfaces/auth.interface';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthUserService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n private userSubject: BehaviorSubject<User | null> = new BehaviorSubject<User | null>(JSON.parse('null'));\n public userInfo$: Observable<User | null> = this.userSubject.asObservable();\n updateUserInfo(userInfo: User | null) {\n this.userSubject.next(userInfo);\n }\n findAll(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users`, {\n params: options,\n withCredentials: true,\n });\n }\n get(id: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${id}`, {\n withCredentials: true,\n });\n }\n findOne(userId: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${userId}`, {\n withCredentials: true,\n });\n }\n me() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n getPublicUserInfo(id: string): Observable<any> {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/${id}/info/public`, {\n withCredentials: false,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n findPublicInfoByIds(ids: Array<string>) {\n const params = { ids: ids.join(',') };\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/by`, {\n params: params,\n });\n }\n sendSMSCode(countryCode: string, phone: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/verification/phone/start`, { countryCode, phone });\n }\n verifyEmailByToken(token: string): Observable<boolean> {\n return this.http\n .post<ApiResponse<boolean> | boolean>(\n `${this.environment.baseUrl}/auth/users/verification/email`,\n {},\n {\n params: { token },\n withCredentials: true,\n },\n )\n .pipe(\n map((response) => {\n if (typeof response === 'boolean') {\n return response;\n }\n\n return Boolean(response.data);\n }),\n );\n }\n findByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info`, {\n params: { username },\n withCredentials: true,\n });\n }\n findUserInfoByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info/by`, {\n params: { username },\n withCredentials: true,\n });\n }\n findPublicInfoByRole(role: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/public/by`, {\n params: { role: role },\n withCredentials: false,\n });\n }\n changeUsername(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/username`,\n { username },\n {\n withCredentials: true,\n },\n );\n }\n changeName(name: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/me`,\n { name },\n {\n withCredentials: true,\n },\n );\n }\n createUserByAdmin(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/by/admin`, data, {\n withCredentials: true,\n });\n }\n update(data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/me`, data, {\n withCredentials: true,\n });\n }\n uploadAvatar(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/avatar`, data, {\n withCredentials: true,\n });\n }\n changePhone(phone: any, code: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/phone`,\n { phone, code },\n {\n withCredentials: true,\n },\n );\n }\n follow(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/following/${username}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n unfollow(username: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, {\n withCredentials: true,\n });\n }\n listFollowingByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following`);\n }\n listFollowersByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/followers`);\n }\n checkIfFollowingSomeone(username: string, target: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following/${target}`);\n }\n isFollowing(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, { withCredentials: true });\n }\n friendships(ids: string[]): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/friendships`, { ids: ids }, { withCredentials: true });\n }\n followersStats(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/followers/stats/by`, { params: { username: username } });\n }\n // Address;\n addAddress(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/addresses`, data, { withCredentials: true });\n }\n updateAddress(id: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, data, { withCredentials: true });\n }\n findAllAddress(options: any): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses`, { params: options, withCredentials: true });\n }\n getAddress(id: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n deleteAddressById(id: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { Observable } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthAgentService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n baseUrl = `${this.environment.baseUrl}/auth/agents`;\n\n public findAllApplications(options: any): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications`, {\n params: options,\n withCredentials: true,\n });\n }\n public getApplication(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}`, {\n withCredentials: true,\n });\n }\n public myApplication(): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/me`, {\n withCredentials: true,\n });\n }\n public apply(data: any): Observable<any> {\n return this.http.post<any>(`${this.baseUrl}/applications`, data, {\n withCredentials: true,\n });\n }\n public approve(id: string): Observable<any> {\n return this.http.put<any>(\n `${this.baseUrl}/applications/${id}/approve`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n public reject(id: any, data: any): Observable<any> {\n return this.http.put<any>(`${this.baseUrl}/applications/${id}/reject`, data, {\n withCredentials: true,\n });\n }\n public findRejections(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}/rejections`, {\n withCredentials: true,\n });\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nclass LocalStorage implements Storage {\n [name: string]: any;\n readonly length = 0;\n clear(): void {}\n getItem(key: string): string | null {\n return null;\n }\n key(index: number): string | null {\n return null;\n }\n removeItem(key: string): void {}\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService implements Storage {\n private storage: Storage;\n platformId = inject(PLATFORM_ID);\n\n constructor() {\n this.storage = new LocalStorage();\n\n if (isPlatformBrowser(this.platformId)) {\n this.storage = localStorage;\n }\n }\n\n [name: string]: any;\n\n length = 0;\n\n clear(): void {\n this.storage.clear();\n }\n\n getItem(key: string): string | null {\n return this.storage.getItem(key);\n }\n\n key(index: number): string | null {\n return this.storage.key(index);\n }\n\n removeItem(key: string): void {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string): void {\n return this.storage.setItem(key, value);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\nimport { BehaviorSubject, catchError, Observable, of, throwError } from 'rxjs';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n tokenSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\n isRefreshingToken = false;\n authService = inject(AuthService);\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError((error) => {\n if (error instanceof HttpErrorResponse) {\n switch (error.status) {\n case 400:\n return this.hand400Error(error);\n case 401:\n return this.hand401Error(error);\n case 403:\n return this.hand403Error(error);\n case 404:\n return this.hand404Error(error);\n case 429:\n return this.hand429Error(error);\n default:\n return this.handleDefaultError(error);\n }\n } else {\n return throwError(() => error);\n }\n }),\n );\n }\n private hand400Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand401Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand403Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand404Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n /**\n *\n * @param error SMS code sent too many\n * @returns\n */\n private hand429Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private handleDefaultError(error: HttpErrorResponse) {\n return throwError(() => new Error('System error'));\n }\n}\n","import { catchError, filter, map, switchMap, take } from 'rxjs/operators';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { NEVER, Observable, throwError } from 'rxjs';\n\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n authService = inject(AuthService);\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const authRequest = request.clone({\n headers: request.headers.append('Client-Id', this.environment.clientId),\n });\n return next.handle(authRequest).pipe(\n map((res) => {\n // if (res instanceof HttpResponse && isPlatformBrowser(this.platformId)) {\n // // window.location.href = res.headers.get('Location') as string;\n // }\n return res;\n }),\n catchError((error: any) => {\n if (isPlatformBrowser(this.platformId)) {\n if (error.url?.includes('auth/introspect')) {\n // if (window.location.origin !== `${this.environment.accountsUrl}`) {\n // window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n // return NEVER;\n // }\n }\n if (error instanceof HttpErrorResponse && error.error.code === 'G401') {\n window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n return NEVER;\n }\n }\n return throwError(() => error.error || error.message);\n }),\n );\n }\n addClientIdHeader(request: HttpRequest<any>) {\n return request.clone({\n setHeaders: {\n 'Client-id': this.environment.clientId,\n },\n });\n }\n addCookieHeader(request: HttpRequest<any>, cookie: string) {\n return request.clone({\n setHeaders: {\n Cookie: cookie,\n 'Client-id': this.environment.clientId,\n },\n });\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { EnvironmentProviders, InjectionToken, PLATFORM_ID, Provider, APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\nimport { firstValueFrom, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ErrorInterceptor, AuthInterceptor } from './lib/interceptors';\nimport { AuthService } from './lib/services/auth.service';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport enum AuthMethod {\n Password = 'PASSWORD',\n OTP = 'OTP',\n Google = 'GOOGLE',\n WeChat = 'WECHAT',\n}\n\nexport const AUTH_METHODS = new InjectionToken<AuthMethod[]>('AUTH_METHODS');\n\nexport interface AuthConfig {\n methods: AuthMethod[];\n autoLoadSession?: boolean;\n}\n\nexport function provideAngularAuth(config?: AuthConfig): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n {\n provide: AUTH_METHODS,\n useValue: config?.methods,\n },\n\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: () => {\n const authService = inject(AuthService);\n const platformId = inject(PLATFORM_ID);\n\n return () => {\n if (config?.autoLoadSession === false || !isPlatformBrowser(platformId)) {\n return Promise.resolve();\n }\n\n return firstValueFrom(authService.ensureLoaded().pipe(catchError(() => of(null))));\n };\n },\n },\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Routes } from '@angular/router';\nimport { UnauthorizedComponent } from './components/unauthorized/unauthorized.component';\nimport { ForbiddenComponent } from './components/forbidden/forbidden.component';\n\nexport const authRoutes: Routes = [\n {\n path: 'unauthorized',\n component: UnauthorizedComponent,\n },\n {\n path: 'forbidden',\n component: ForbiddenComponent,\n },\n];\n","import { EnvironmentProviders, InjectionToken, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { NavLink } from '@rolatech/angular-common';\nimport { RouteAccessPolicy } from '../access/route-access-policy';\n\nexport interface RoleNavigationLink extends NavLink {\n order?: number;\n access?: RouteAccessPolicy;\n children?: RoleNavigationLink[];\n}\n\nexport const ROLE_NAVIGATION_LINKS = new InjectionToken<RoleNavigationLink[]>('ROLE_NAVIGATION_LINKS');\n\nexport function provideRoleNavigation(links: RoleNavigationLink[]): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: ROLE_NAVIGATION_LINKS,\n useValue: links,\n multi: true,\n },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n","import { computed, inject, Injectable } from '@angular/core';\nimport { NavLink } from '@rolatech/angular-common';\nimport { matchesRouteAccessPolicy } from '../access/access.utils';\nimport { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { ROLE_NAVIGATION_LINKS, RoleNavigationLink } from './navigation.tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class AppNavigationService {\n private readonly authStore = inject(AuthStore);\n private readonly authContextStore = inject(AuthContextStore);\n private readonly linkGroups = inject(ROLE_NAVIGATION_LINKS, { optional: true }) ?? [];\n\n readonly links = computed<NavLink[]>(() => {\n this.authStore.authenticated();\n this.authStore.loaded();\n this.authContextStore.appId();\n this.authContextStore.orgId();\n\n return this.linkGroups\n .flat()\n .sort((left, right) => (left.order ?? 0) - (right.order ?? 0))\n .map((link) => this.toNavLink(link))\n .filter((link): link is NavLink => link !== null);\n });\n\n private toNavLink(link: RoleNavigationLink): NavLink | null {\n if (link.visible === false || !matchesRouteAccessPolicy(this.authStore, this.authContextStore, link.access)) {\n return null;\n }\n\n const children = link.children\n ?.map((child) => this.toNavLink(child))\n .filter((child): child is NavLink => child !== null);\n\n if (link.children?.length && !children?.length) {\n return null;\n }\n\n return {\n ...link,\n children,\n };\n }\n}\n","import { EnvironmentProviders, InjectionToken, Provider, Type, inject, makeEnvironmentProviders } from '@angular/core';\nimport { Route, ROUTES, RouterFeatures, Routes, provideRouter } from '@angular/router';\nimport { AuthGuard } from '../guards/auth.guard';\nimport { provideRoleNavigation, RoleNavigationLink } from '../navigation/navigation.tokens';\n\nexport const ROLE_SHELL_CHILD_ROUTES = new InjectionToken<Routes>('ROLE_SHELL_CHILD_ROUTES');\n\nexport interface RoleAwareShellRouterConfig {\n shellComponent: Type<unknown>;\n shellChildren?: Routes;\n topLevelRoutes?: Routes;\n fallbackRoute?: Route;\n shellCanActivate?: Route['canActivate'];\n shellCanActivateChild?: Route['canActivateChild'];\n shellData?: Route['data'];\n}\n\nexport interface RoleAwareFeatureConfig {\n routes?: Routes;\n navigation?: RoleNavigationLink[];\n}\n\nexport interface RoleAwareShellConfig extends RoleAwareShellRouterConfig {\n navigation?: RoleNavigationLink[];\n}\n\nexport interface RoleAwareConsoleShellConfig extends RoleAwareShellConfig {}\n\nexport function provideRoleShellRoutes(routes: Routes): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: ROLE_SHELL_CHILD_ROUTES,\n useValue: routes,\n multi: true,\n },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\nexport function provideRoleAwareFeature(config: RoleAwareFeatureConfig): EnvironmentProviders {\n const providers: Array<Provider | EnvironmentProviders> = [];\n\n if (config.routes?.length) {\n providers.push(provideRoleShellRoutes(config.routes));\n }\n\n if (config.navigation?.length) {\n providers.push(provideRoleNavigation(config.navigation));\n }\n\n return makeEnvironmentProviders(providers);\n}\n\nexport function provideRoleAwareShellRouter(\n config: RoleAwareShellRouterConfig,\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n const providers: Array<Provider | EnvironmentProviders> = [\n provideRouter([], ...features),\n {\n provide: ROUTES,\n multi: true,\n useFactory: (): Routes => {\n const contributedRoutes = inject(ROLE_SHELL_CHILD_ROUTES, { optional: true }) ?? [];\n\n return [\n ...(config.topLevelRoutes ?? []),\n {\n path: '',\n component: config.shellComponent,\n canActivate: config.shellCanActivate,\n canActivateChild: config.shellCanActivateChild,\n data: config.shellData,\n children: [...(config.shellChildren ?? []), ...contributedRoutes.flat()],\n },\n ...(config.fallbackRoute ? [config.fallbackRoute] : []),\n ];\n },\n },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\nexport function provideRoleAwareShell(config: RoleAwareShellConfig, ...features: RouterFeatures[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideRoleAwareShellRouter(config, ...features),\n ...(config.navigation?.length ? [provideRoleNavigation(config.navigation)] : []),\n ]);\n}\n\nexport function provideRoleAwareConsoleShell(\n config: RoleAwareConsoleShellConfig,\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n return provideRoleAwareShell(\n {\n ...config,\n shellCanActivate: config.shellCanActivate ?? [AuthGuard],\n shellCanActivateChild: config.shellCanActivateChild ?? [AuthGuard],\n },\n ...features,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["switchMap","catchError","i2","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rolatech-angular-auth.mjs","sources":["../../../../packages/angular-auth/src/lib/auth-context.store.ts","../../../../packages/angular-auth/src/lib/auth.store.ts","../../../../packages/angular-auth/src/lib/routing/access-denied.utils.ts","../../../../packages/angular-auth/src/lib/services/auth.service.ts","../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.ts","../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.html","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.ts","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.html","../../../../packages/angular-auth/src/lib/access/role.constants.ts","../../../../packages/angular-auth/src/lib/components/agent-access-menu/agent-access-menu.component.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.html","../../../../packages/angular-auth/src/lib/interfaces/auth.interface.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.html","../../../../packages/angular-auth/src/lib/guards/auth.guard.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.html","../../../../packages/angular-auth/src/lib/guards/auth-dialog.guard.ts","../../../../packages/angular-auth/src/lib/access/access.utils.ts","../../../../packages/angular-auth/src/lib/guards/access.guard.ts","../../../../packages/angular-auth/src/lib/guards/landing-redirect.guard.ts","../../../../packages/angular-auth/src/lib/guards/role.guard.ts","../../../../packages/angular-auth/src/lib/guards/permission.guard.ts","../../../../packages/angular-auth/src/lib/services/auth-user.service.ts","../../../../packages/angular-auth/src/lib/services/auth-agent.service.ts","../../../../packages/angular-auth/src/lib/services/storage.service.ts","../../../../packages/angular-auth/src/lib/interceptors/error.interceptor.ts","../../../../packages/angular-auth/src/lib/interceptors/auth.interceptor.ts","../../../../packages/angular-auth/src/provider.ts","../../../../packages/angular-auth/src/lib/auth.routes.ts","../../../../packages/angular-auth/src/lib/navigation/navigation.tokens.ts","../../../../packages/angular-auth/src/lib/navigation/app-navigation.service.ts","../../../../packages/angular-auth/src/lib/routing/shell-routing.ts","../../../../packages/angular-auth/src/rolatech-angular-auth.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\n\ntype AuthContextState = {\n appId: string | null;\n orgId: string | null;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class AuthContextStore {\n private readonly state = signal<AuthContextState>({\n appId: null,\n orgId: null,\n });\n\n readonly appId = computed(() => this.state().appId);\n readonly orgId = computed(() => this.state().orgId);\n\n setContext(appId: string | null, orgId: string | null): void {\n this.state.set({ appId, orgId });\n }\n\n setAppId(appId: string | null): void {\n this.state.update((state) => ({ ...state, appId }));\n }\n\n setOrgId(orgId: string | null): void {\n this.state.update((state) => ({ ...state, orgId }));\n }\n\n clear(): void {\n this.state.set({ appId: null, orgId: null });\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { User } from './interfaces/auth.interface';\nimport { AppMembershipResponse, MeContextResponse, OrgMembershipResponse } from './interfaces/me.interface';\n\ntype AuthState = {\n userId: string;\n user: User | null;\n roles: string[];\n username: string | null;\n platformRoles: string[];\n applications: AppMembershipResponse[];\n organizations: OrgMembershipResponse[];\n permissions: string[];\n authenticated: boolean | null;\n loaded: boolean;\n};\n@Injectable({ providedIn: 'root' })\nexport class AuthStore {\n private _state = signal<AuthState>({\n userId: '',\n user: null,\n roles: [],\n username: null,\n platformRoles: [],\n applications: [],\n organizations: [],\n permissions: [],\n authenticated: false,\n loaded: false,\n });\n userId = computed(() => this._state().userId);\n user = computed(() => this._state().user);\n roles = computed(() => this._state().roles);\n username = computed(() => this._state().username);\n platformRoles = computed(() => this._state().platformRoles);\n applications = computed(() => this._state().applications);\n organizations = computed(() => this._state().organizations);\n permissions = computed(() => this._state().permissions);\n authenticated = computed(() => this._state().authenticated);\n loaded = computed(() => this._state().loaded);\n me = computed<MeContextResponse | null>(() => {\n if (!this.loaded() || !this.authenticated()) {\n return null;\n }\n\n return {\n userId: this.userId(),\n username: this.username() ?? this.user()?.username ?? '',\n platformRoles: this.platformRoles(),\n applications: this.applications(),\n organizations: this.organizations(),\n permissions: this.permissions(),\n };\n });\n primaryApplication = computed(() => this.applications()[0] ?? null);\n primaryOrganization = computed(() => this.organizations()[0] ?? null);\n\n update(data: any) {\n this._state.update((state) => {\n state.authenticated = data.authenticated;\n state.userId = data.userId ?? state.userId;\n state.roles = data.roles ?? state.roles;\n state.loaded = data.loaded ?? state.loaded;\n state.user = data.user ?? state.user;\n state.username = data.username ?? state.username;\n state.platformRoles = data.platformRoles ?? state.platformRoles;\n state.applications = data.applications ?? state.applications;\n state.organizations = data.organizations ?? state.organizations;\n state.permissions = data.permissions ?? state.permissions;\n return { ...state };\n });\n }\n clear() {\n this._state.set({\n userId: '',\n user: null,\n roles: [],\n username: null,\n platformRoles: [],\n applications: [],\n organizations: [],\n permissions: [],\n authenticated: false,\n loaded: true,\n });\n }\n resetLoading() {\n this._state.update((state) => ({ ...state, loaded: false }));\n }\n updateAuthenticated(authenticated: boolean) {\n this._state.update((state) => {\n state.authenticated = authenticated;\n return { ...state };\n });\n }\n updateUser(user: User) {\n this._state.update((state) => {\n state.user = user;\n state.username = user.username;\n return { ...state };\n });\n }\n updateContext(context: MeContextResponse) {\n this._state.update((state) => ({\n ...state,\n userId: context.userId,\n username: context.username,\n platformRoles: context.platformRoles ?? [],\n applications: context.applications ?? [],\n organizations: context.organizations ?? [],\n permissions: context.permissions ?? [],\n }));\n }\n updateEmail(email: string) {\n this._state.update((state) => {\n if (state.user) {\n state.user = { ...state.user, email };\n }\n return { ...state };\n });\n }\n hasAnyRole(...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n const roleSet = new Set(this.roles());\n return roles.some((role) => roleSet.has(role));\n }\n hasPlatformRole(...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n const roleSet = new Set(this.platformRoles().length ? this.platformRoles() : this.roles());\n return roles.some((role) => roleSet.has(role));\n }\n hasApplicationRole(appId: string | null, ...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n return this.applications().some((membership) => {\n if (appId && membership.appId !== appId) {\n return false;\n }\n\n const roleSet = new Set(membership.roles);\n return roles.some((role) => roleSet.has(role));\n });\n }\n hasOrganizationRole(appId: string | null, orgId: string | null, ...roles: string[]): boolean {\n if (!roles.length) {\n return false;\n }\n\n return this.organizations().some((membership) => {\n if (appId && membership.appId !== appId) {\n return false;\n }\n\n if (orgId && membership.orgId !== orgId) {\n return false;\n }\n\n const roleSet = new Set(membership.roles);\n return roles.some((role) => roleSet.has(role));\n });\n }\n hasPermission(permission: string): boolean {\n return this.permissions().includes(permission);\n }\n}\n","import { Router, UrlTree } from '@angular/router';\n\nconst LAST_ALLOWED_URL_KEY = 'rolatech.auth.last-allowed-url';\n\nfunction normalizeUrl(url?: string | null): string | null {\n if (!url) {\n return null;\n }\n\n if (url.startsWith('http://') || url.startsWith('https://')) {\n try {\n const parsed = new URL(url);\n return `${parsed.pathname}${parsed.search}${parsed.hash}` || '/';\n } catch {\n return null;\n }\n }\n\n return url.startsWith('/') ? url : `/${url}`;\n}\n\nfunction isAccessBoundaryUrl(url: string): boolean {\n return url.startsWith('/forbidden') || url.startsWith('/unauthorized');\n}\n\nexport function rememberAllowedUrl(url?: string | null): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n const normalizedUrl = normalizeUrl(url);\n if (!normalizedUrl || isAccessBoundaryUrl(normalizedUrl)) {\n return;\n }\n\n window.sessionStorage.setItem(LAST_ALLOWED_URL_KEY, normalizedUrl);\n}\n\nexport function readLastAllowedUrl(): string | null {\n if (typeof window === 'undefined') {\n return null;\n }\n\n const value = normalizeUrl(window.sessionStorage.getItem(LAST_ALLOWED_URL_KEY));\n if (!value || isAccessBoundaryUrl(value)) {\n return null;\n }\n\n return value;\n}\n\nexport function createForbiddenUrlTree(router: Router, deniedUrl?: string | null, reason = 'forbidden'): UrlTree {\n const queryParams: Record<string, string> = {\n reason,\n };\n\n const normalizedDeniedUrl = normalizeUrl(deniedUrl);\n if (normalizedDeniedUrl) {\n queryParams['denied'] = normalizedDeniedUrl;\n }\n\n const fallbackUrl = readLastAllowedUrl();\n if (fallbackUrl) {\n queryParams['fallback'] = fallbackUrl;\n }\n\n return router.createUrlTree(['/forbidden'], { queryParams });\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, forkJoin, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { PasswordChange, APP_CONFIG, PasswordResetConfirmRequest, ApiResponse } from '@rolatech/angular-common';\nimport { IntrospectResponse, User } from '../interfaces/auth.interface';\nimport { AuthStore } from '../auth.store';\nimport { AuthContextStore } from '../auth-context.store';\nimport { MeContextResponse } from '../interfaces/me.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n authStore = inject(AuthStore);\n authContextStore = inject(AuthContextStore);\n authenticated = this.authStore.authenticated;\n userId = this.authStore.userId;\n user = this.authStore.user;\n roles = this.authStore.roles;\n meContext = this.authStore.me;\n platformRoles = this.authStore.platformRoles;\n applications = this.authStore.applications;\n organizations = this.authStore.organizations;\n permissions = this.authStore.permissions;\n loaded = this.authStore.loaded;\n private pendingIntrospect$?: Observable<IntrospectResponse>;\n\n public introspect(force = false): Observable<IntrospectResponse> {\n if (!force && this.authStore.loaded()) {\n return of(this.currentSession());\n }\n\n if (!force && this.pendingIntrospect$) {\n return this.pendingIntrospect$;\n }\n\n const request$ = this.http\n .get<IntrospectResponse>(`${this.environment.baseUrl}/auth/introspect`, {\n withCredentials: true,\n })\n .pipe(\n switchMap((res) => {\n if (!res.authenticated) {\n this.authStore.clear();\n this.authContextStore.clear();\n return of(res);\n }\n\n return forkJoin({\n user: this.me().pipe(catchError(() => of(null))),\n context: this.getMeContext().pipe(catchError(() => of(this.emptyContext(res)))),\n }).pipe(\n map(({ user, context }) => {\n this.authStore.update({\n authenticated: true,\n userId: res.userId,\n roles: res.roles ?? [],\n loaded: true,\n user,\n username: context.username ?? res.username ?? user?.username ?? null,\n platformRoles: context.platformRoles?.length ? context.platformRoles : (res.roles ?? []),\n applications: context.applications ?? [],\n organizations: context.organizations ?? [],\n permissions: context.permissions ?? [],\n });\n this.syncContext(context);\n return res;\n }),\n );\n }),\n catchError((error) => {\n this.authStore.clear();\n this.authContextStore.clear();\n return throwError(() => error);\n }),\n finalize(() => {\n this.pendingIntrospect$ = undefined;\n }),\n shareReplay(1),\n );\n\n this.pendingIntrospect$ = request$;\n return request$;\n }\n\n ensureLoaded(force = false): Observable<IntrospectResponse> {\n return this.introspect(force);\n }\n getMeContext(): Observable<MeContextResponse> {\n return this.http\n .get<ApiResponse<MeContextResponse>>(`${this.environment.baseUrl}/auth/me/context`)\n .pipe(map((res) => res.data));\n }\n me(): Observable<User | null> {\n return this.http\n .get<ApiResponse<User>>(`${this.environment.baseUrl}/auth/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateUser(res.data);\n return res.data;\n }),\n );\n }\n wechatLogin(code: string, state: string) {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/login?code=${code}&state=${state}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n wechatDisconnect() {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/disconnect`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n requestFaceIdDetect() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id`, {\n withCredentials: true,\n });\n }\n faceIdStatus() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me`, {\n withCredentials: true,\n });\n }\n faceIdStatusByToken(token: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me/by`, {\n params: { token: token },\n withCredentials: true,\n });\n }\n wechatStatus(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/wechat/status/by`, {\n params: options,\n withCredentials: true,\n });\n }\n login(data: any) {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/login`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.resetLoading();\n return res.data;\n }),\n );\n }\n signup(data: any): Observable<any> {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/signup`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.resetLoading();\n return res;\n }),\n );\n }\n logout() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/logout`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.clear();\n this.authContextStore.clear();\n return res;\n }),\n );\n }\n requestPasswordReset(email: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset-request`, { email });\n }\n validatePasswordRestToken(token: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/password/reset-tokens/${token}`);\n }\n resetPassword(data: PasswordResetConfirmRequest) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset`, data);\n }\n changePassword(data: PasswordChange) {\n return this.http\n .put<any>(`${this.environment.baseUrl}/auth/users/password`, data, {\n withCredentials: true,\n })\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.resetLoading();\n }),\n );\n }\n lookup(account: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/lookup`,\n {\n account,\n next,\n },\n { withCredentials: false },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n );\n }\n challenge(username: string, password: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/challenge`,\n {\n username,\n password,\n next,\n },\n { withCredentials: true },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.resetLoading();\n }),\n );\n }\n hasAnyRole(...roles: string[]): boolean {\n return this.authStore.hasAnyRole(...roles);\n }\n hasPlatformRole(...roles: string[]): boolean {\n return this.authStore.hasPlatformRole(...roles);\n }\n hasApplicationRole(appId: string | null, ...roles: string[]): boolean {\n return this.authStore.hasApplicationRole(appId, ...roles);\n }\n hasOrganizationRole(appId: string | null, orgId: string | null, ...roles: string[]): boolean {\n return this.authStore.hasOrganizationRole(appId, orgId, ...roles);\n }\n hasPermission(permission: string): boolean {\n return this.authStore.hasPermission(permission);\n }\n\n private emptyContext(res: IntrospectResponse): MeContextResponse {\n return {\n userId: res.userId,\n username: res.username ?? '',\n platformRoles: [],\n applications: [],\n organizations: [],\n permissions: [],\n };\n }\n\n private syncContext(context: MeContextResponse): void {\n if (this.authContextStore.appId() || this.authContextStore.orgId()) {\n return;\n }\n\n const primaryOrganization = context.organizations[0] ?? null;\n if (primaryOrganization) {\n this.authContextStore.setContext(primaryOrganization.appId, primaryOrganization.orgId);\n return;\n }\n\n const primaryApplication = context.applications[0] ?? null;\n if (primaryApplication) {\n this.authContextStore.setAppId(primaryApplication.appId);\n }\n }\n\n private currentSession(): IntrospectResponse {\n return {\n authenticated: !!this.authStore.authenticated(),\n userId: this.authStore.userId(),\n roles: this.authStore.roles(),\n username: this.authStore.username() ?? this.authStore.user()?.username,\n };\n }\n}\n","import { Location } from '@angular/common';\nimport { Component, computed, inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { catchError, of } from 'rxjs';\nimport { AuthContextStore } from '../../auth-context.store';\nimport { AuthStore } from '../../auth.store';\nimport { readLastAllowedUrl } from '../../routing/access-denied.utils';\nimport { AuthService } from '../../services/auth.service';\n\n@Component({\n selector: 'rolatech-forbidden',\n imports: [MatButtonModule, MatProgressSpinnerModule],\n templateUrl: './forbidden.component.html',\n styleUrl: './forbidden.component.scss',\n})\nexport class ForbiddenComponent {\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly location = inject(Location);\n private readonly authService = inject(AuthService);\n private readonly authStore = inject(AuthStore);\n private readonly authContextStore = inject(AuthContextStore);\n private readonly environment = inject(APP_CONFIG);\n\n readonly switchingAccount = signal(false);\n readonly deniedUrl = this.normalizeRoute(this.route.snapshot.queryParamMap.get('denied'));\n readonly fallbackUrl = this.resolveFallbackUrl();\n readonly authenticated = this.authStore.authenticated;\n readonly accountLabel = computed(() => this.authStore.username() ?? this.authStore.user()?.email ?? 'this account');\n\n goBackOrFallback(): void {\n if (this.fallbackUrl) {\n this.router.navigateByUrl(this.fallbackUrl);\n return;\n }\n\n this.location.back();\n }\n\n signOutAndSwitchAccount(): void {\n const signInUrl = this.buildSignInUrl();\n this.switchingAccount.set(true);\n\n this.authService\n .logout()\n .pipe(\n catchError(() => {\n this.authStore.clear();\n this.authContextStore.clear();\n return of(null);\n }),\n )\n .subscribe({\n next: () => {\n window.location.href = signInUrl;\n },\n error: () => {\n window.location.href = signInUrl;\n },\n });\n }\n\n goToSignIn(): void {\n window.location.href = this.buildSignInUrl();\n }\n\n private buildSignInUrl(): string {\n const continueUrl = this.buildContinueUrl();\n return `${this.environment.accountsUrl}/signin?continue=${encodeURIComponent(continueUrl)}`;\n }\n\n private buildContinueUrl(): string {\n if (typeof window === 'undefined') {\n return this.environment.myaccountUrl;\n }\n\n const target = this.deniedUrl || this.fallbackUrl || '/';\n return new URL(target, window.location.origin).toString();\n }\n\n private resolveFallbackUrl(): string | null {\n const queryFallback = this.normalizeRoute(this.route.snapshot.queryParamMap.get('fallback'));\n const storedFallback = this.normalizeRoute(readLastAllowedUrl());\n const fallback = queryFallback || storedFallback;\n\n if (!fallback || fallback === this.deniedUrl || fallback.startsWith('/forbidden')) {\n return null;\n }\n\n return fallback;\n }\n\n private normalizeRoute(url?: string | null): string | null {\n if (!url) {\n return null;\n }\n\n return url.startsWith('/') ? url : `/${url}`;\n }\n}\n","<section class=\"forbidden-page\">\n <article class=\"forbidden-page__card\">\n <span class=\"forbidden-page__eyebrow\">403</span>\n <h1 class=\"forbidden-page__title\">This account cannot open that page</h1>\n\n @if (authenticated()) {\n <p class=\"forbidden-page__description\">\n You are signed in as <strong>{{ accountLabel() }}</strong>, but that account does not have permission to view this route.\n </p>\n } @else {\n <p class=\"forbidden-page__description\">You do not have permission to open this route with the current session.</p>\n }\n\n @if (deniedUrl) {\n <div class=\"forbidden-page__route\">\n <span class=\"forbidden-page__route-label\">Attempted page</span>\n <code class=\"forbidden-page__route-value\">{{ deniedUrl }}</code>\n </div>\n }\n\n <p class=\"forbidden-page__hint\">\n Return to a page that still works for this account, or sign out and continue with the correct account to retry access.\n </p>\n\n <div class=\"forbidden-page__actions\">\n <button mat-stroked-button type=\"button\" (click)=\"goBackOrFallback()\">\n {{ fallbackUrl ? 'Back to allowed page' : 'Go back' }}\n </button>\n\n @if (authenticated()) {\n <button mat-flat-button type=\"button\" (click)=\"signOutAndSwitchAccount()\" [disabled]=\"switchingAccount()\">\n @if (switchingAccount()) {\n <mat-progress-spinner diameter=\"18\" mode=\"indeterminate\"></mat-progress-spinner>\n }\n <span>{{ switchingAccount() ? 'Switching account...' : 'Sign out and switch account' }}</span>\n </button>\n } @else {\n <button mat-flat-button type=\"button\" (click)=\"goToSignIn()\">Sign in</button>\n }\n </div>\n\n <p class=\"forbidden-page__support\">\n If this should be available for the current account, ask an administrator to review the role or permission assignment.\n </p>\n </article>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-unauthorized',\n templateUrl: './unauthorized.component.html',\n styleUrls: ['./unauthorized.component.scss'],\n})\nexport class UnauthorizedComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n","export const PLATFORM_ADMIN_ROLES = ['PLATFORM_ADMIN', 'ROLE_PLATFORM_ADMIN'] as const;\n\nexport const APPLICATION_OWNER_ROLES = ['APPLICATION_OWNER', 'APP_OWNER', 'ROLE_APPLICATION_OWNER', 'ROLE_APP_OWNER'] as const;\n\nexport const APPLICATION_ADMIN_ROLES = ['APPLICATION_ADMIN', 'APP_ADMIN', 'ROLE_APPLICATION_ADMIN', 'ROLE_APP_ADMIN'] as const;\n\nexport const ORGANIZATION_OWNER_ROLES = ['ORGANIZATION_OWNER', 'ORG_OWNER', 'ROLE_ORGANIZATION_OWNER', 'ROLE_ORG_OWNER'] as const;\n\nexport const ORGANIZATION_ADMIN_ROLES = ['ORGANIZATION_ADMIN', 'ORG_ADMIN', 'ROLE_ORGANIZATION_ADMIN', 'ROLE_ORG_ADMIN'] as const;\n\nexport const ORGANIZATION_MEMBER_ROLES = ['ORGANIZATION_MEMBER', 'ORG_MEMBER', 'ROLE_ORGANIZATION_MEMBER', 'ROLE_ORG_MEMBER'] as const;\n\nexport const ORGANIZATION_STAFF_ROLES = ['ORGANIZATION_STAFF', 'ORG_STAFF', 'ROLE_ORGANIZATION_STAFF', 'ROLE_ORG_STAFF'] as const;\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RouterLink } from '@angular/router';\nimport { OnboardingApplicantService, OnboardingApplicationResponse, OnboardingProgress, OnboardingStatus } from '@rolatech/angular-services';\nimport { catchError, of, switchMap } from 'rxjs';\nimport { AuthContextStore } from '../../auth-context.store';\nimport { AuthStore } from '../../auth.store';\nimport { ORGANIZATION_ADMIN_ROLES, ORGANIZATION_MEMBER_ROLES, ORGANIZATION_OWNER_ROLES } from '../../access/role.constants';\n\ninterface AgentMenuEntry {\n icon: string;\n label: string;\n routerLink: string | any[];\n}\n\n@Component({\n selector: 'rolatech-agent-access-menu',\n imports: [MatMenuModule, MatIconModule, RouterLink],\n template: `\n @if (entry(); as item) {\n <a mat-menu-item [routerLink]=\"item.routerLink\" class=\"px-6 flex items-center cursor-pointer\">\n <mat-icon>{{ item.icon }}</mat-icon>\n <span class=\"flex items-center pl-1\">{{ item.label }}</span>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AgentAccessMenuComponent {\n readonly applicationCode = input('primecasa');\n readonly applyRouterLink = input<string | any[]>('/agents');\n readonly dashboardRouterLink = input<string | any[]>('/organization');\n readonly showApplyAction = input(true);\n readonly dashboardLabel = input('Agent dashboard');\n\n private readonly authStore = inject(AuthStore);\n private readonly authContextStore = inject(AuthContextStore);\n private readonly onboardingApplicantService = inject(OnboardingApplicantService);\n\n private readonly mine = toSignal(\n toObservable(\n computed(() => ({\n authenticated: this.authStore.authenticated(),\n loaded: this.authStore.loaded(),\n applicationCode: this.applicationCode(),\n })),\n ).pipe(\n switchMap(({ authenticated, loaded, applicationCode }) => {\n if (!loaded || !authenticated || !applicationCode) {\n return of<OnboardingApplicationResponse[] | null>(null);\n }\n\n return this.onboardingApplicantService.listMine(applicationCode).pipe(\n catchError(() => of<OnboardingApplicationResponse[]>([])),\n );\n }),\n ),\n { initialValue: null },\n );\n\n readonly latestApplication = computed<OnboardingApplicationResponse | null>(() => {\n const applications = this.mine();\n\n if (!applications?.length) {\n return null;\n }\n\n return [...applications].sort((left, right) => this.toTimestamp(right) - this.toTimestamp(left))[0] ?? null;\n });\n\n readonly hasDashboardAccess = computed(() => {\n this.authStore.loaded();\n\n const appId =\n this.authContextStore.appId() ?? this.authStore.primaryApplication()?.appId ?? this.authStore.primaryOrganization()?.appId ?? null;\n\n return this.authStore.hasOrganizationRole(\n appId,\n null,\n ...ORGANIZATION_OWNER_ROLES,\n ...ORGANIZATION_ADMIN_ROLES,\n ...ORGANIZATION_MEMBER_ROLES,\n );\n });\n\n readonly entry = computed<AgentMenuEntry | null>(() => {\n if (this.hasDashboardAccess()) {\n return {\n icon: 'storefront',\n label: this.dashboardLabel(),\n routerLink: this.dashboardRouterLink(),\n };\n }\n\n const application = this.latestApplication();\n\n if (application) {\n return {\n icon: 'assignment',\n label: this.applicationLabel(application.status),\n routerLink: this.applicationRouterLink(application),\n };\n }\n\n if (!this.showApplyAction()) {\n return null;\n }\n\n return {\n icon: 'badge',\n label: 'Apply as agent',\n routerLink: this.applyRouterLink(),\n };\n });\n\n private applicationLabel(status: OnboardingStatus): string {\n switch (status) {\n case 'APPROVED':\n return 'Agent application approved';\n case 'FAILED':\n return 'Agent application result';\n case 'NEED_MORE_INFO':\n return 'Agent application updates';\n case 'SUBMITTED':\n case 'IN_REVIEW':\n return 'Agent application review';\n default:\n return 'Continue agent application';\n }\n }\n\n private applicationRouterLink(application: OnboardingApplicationResponse): string[] {\n const route = this.canOpenReview(application) ? 'review' : 'form';\n return ['/agents', application.id, route];\n }\n\n private canOpenReview(application: OnboardingApplicationResponse): boolean {\n const progress = application.progress;\n\n if (progress && !this.isFormComplete(progress)) {\n return false;\n }\n\n return application.status !== 'DRAFT' || this.isFormComplete(progress);\n }\n\n private isFormComplete(progress?: OnboardingProgress): boolean {\n return Boolean(\n progress?.profileCompleted && progress.qualificationCompleted && progress.financialCompleted && progress.bankingCompleted,\n );\n }\n\n private toTimestamp(application: OnboardingApplicationResponse): number {\n return Date.parse(application.updatedAt ?? application.createdAt ?? '') || 0;\n }\n}\n","import { Component, DoCheck, ElementRef, HostListener, OnDestroy, Renderer2, inject, output } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { SnackBarService } from '@rolatech/angular-services';\nimport QRCode from 'qrcode';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthService } from '../../services/auth.service';\nimport { SpinnerComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-faceid-detect-dialog',\n templateUrl: './faceid-detect-dialog.component.html',\n styleUrls: ['./faceid-detect-dialog.component.scss'],\n imports: [SpinnerComponent, MatButtonModule],\n})\nexport class FaceidDetectDialogComponent implements OnDestroy {\n dialogRef = inject(MatDialogRef);\n environment = inject(APP_CONFIG);\n data = inject(MAT_DIALOG_DATA);\n authService = inject(AuthService);\n snackBarService = inject(SnackBarService);\n output = output<any>();\n loading = false;\n qrcodeUrl = '';\n verified = false;\n interval;\n constructor() {\n this.request();\n }\n ngOnDestroy(): void {\n clearInterval(this.interval);\n }\n request() {\n this.loading = true;\n this.authService.requestFaceIdDetect().subscribe({\n next: ({ data }) => {\n this.genQRCode(data.url);\n this.loop();\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n cancel() {\n clearInterval(this.interval);\n this.dialogRef.close(this.verified);\n }\n loop() {\n this.loading = false;\n this.interval = setInterval(() => {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n if (res.data.verified) {\n clearInterval(this.interval);\n this.dialogRef.close(true);\n }\n },\n });\n }, 2000);\n }\n async genQRCode(url: string) {\n try {\n this.qrcodeUrl = await QRCode.toDataURL(url);\n } catch (err) {\n console.error(err);\n }\n }\n}\n","<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n","export interface User {\n id: string;\n name: string;\n firstName: string;\n lastName: string;\n username: string;\n avatar: string;\n phone: string;\n email: string;\n bio: string;\n roles: Role[];\n gender: string;\n}\nexport interface Role {\n name: string;\n}\n\nexport interface PasswordChange {\n oldPassword: string;\n newPassword: string;\n ne2Password: string;\n}\nexport enum UserStatus {\n ACTIVE = '正常',\n AWAITING = '审核中',\n DELETED = '已删除',\n}\nexport interface IntrospectResponse {\n authenticated: boolean;\n userId: string;\n roles: string[];\n username?: string;\n}\nexport interface Address {\n id: string;\n name: string;\n phone: string;\n email: string;\n type: AddressType;\n country: string;\n province: string;\n city: string;\n district: string;\n street: string;\n detail: string;\n latitude: string;\n longitude: string;\n userId: string;\n}\nexport enum AddressType {\n HOME = '住宅地址',\n WORK = '工作地址',\n BILLING = '账单地址',\n SHIPPING = '购物地址',\n OTHER = '其他',\n}\n","import { Component, DoCheck, model, OnInit, output } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { AddressType } from '../../interfaces/auth.interface';\n\n@Component({\n selector: 'rolatech-address',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './address.component.html',\n styleUrl: './address.component.scss',\n})\nexport class AddressComponent implements OnInit, DoCheck {\n addressType = AddressType;\n enumKeys = Object.keys(this.addressType).filter((key) => isNaN(Number(key)));\n address = model<any>();\n output = output<any>();\n\n ngOnInit(): void {}\n\n ngDoCheck(): void {\n this.output.emit(this.address());\n }\n}\n","<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { map, Observable, of } from 'rxjs';\nimport { createForbiddenUrlTree, rememberAllowedUrl } from '../routing/access-denied.utils';\nimport { AuthService } from '../services/auth.service';\n\nexport const AuthGuard: CanActivateFn = (route, state): Observable<boolean | ReturnType<Router['parseUrl']>> => {\n const authService = inject(AuthService);\n const router = inject(Router);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n const isSignInPage = state.url.includes('/signin');\n\n return authService.ensureLoaded().pipe(\n map(({ roles, authenticated }) => {\n const routeRoles = route.data['roles'];\n const passRoled = routeRoles ? roles?.some((r) => routeRoles.indexOf(r) >= 0) : true;\n if (authenticated && !passRoled) {\n return createForbiddenUrlTree(router, state.url, 'role');\n }\n\n if (authenticated) {\n if (isSignInPage) {\n window.location.href = continueUrl || environment.myaccountUrl;\n return false; // Prevent rendering the Sign-in page\n }\n // 1. If 'continue' parameter exists, redirect to it immediately\n if (isContinue && continueUrl) {\n window.location.href = continueUrl;\n return false;\n }\n // 2. If already at the accounts domain and NO continue URL, redirect to default account page\n if (window.location.href.includes(environment.accountsUrl)) {\n window.location.href = environment.myaccountUrl;\n return false;\n }\n // 3. Otherwise, if the user is already where they need to be, allow navigation\n rememberAllowedUrl(state.url);\n return true;\n } else {\n // CASE: Not logged in\n if (isSignInPage) {\n return true; // Allow guest to see the Sign-in page\n }\n\n // Redirection for UNAUTHENTICATED users\n const currentUrl = encodeURIComponent(window.location.href);\n window.location.href = `${environment.accountsUrl}/signin?continue=${currentUrl}`;\n return false;\n }\n }),\n );\n};\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-auth-dialog',\n imports: [CommonModule, MatDialogModule],\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent {\n dialogRef = inject(MatDialogRef);\n}\n","<p>auth-dialog works!</p>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, UrlTree } from '@angular/router';\nimport { APP_CONFIG, WINDOW } from '@rolatech/angular-common';\nimport { last, map, Observable, of, switchMap, take } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { DialogService } from '@rolatech/angular-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthDialogComponent } from '../components/auth-dialog/auth-dialog.component';\n\nexport const AuthDialogGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const dialog = inject(MatDialog);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n return authService.introspect().pipe(\n map(({ roles, authenticated }) => {\n if (!authenticated) {\n if (window.location.href.includes(environment.accountsUrl) && !isContinue) {\n window.location.href = environment.myaccountUrl;\n }\n if (isContinue) {\n window.location.href = continueUrl;\n }\n } else {\n const dialogRef = dialog.open(AuthDialogComponent, {\n data: {},\n });\n dialogRef.afterClosed().subscribe((result) => {});\n return true;\n }\n return authenticated;\n }),\n );\n};\n","import { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { RouteAccessPolicy } from './route-access-policy';\n\nexport function matchesRouteAccessPolicy(\n authStore: AuthStore,\n authContextStore: AuthContextStore,\n policy?: RouteAccessPolicy,\n): boolean {\n if (!policy) {\n return true;\n }\n\n if (policy.authenticated !== undefined && authStore.authenticated() !== policy.authenticated) {\n return false;\n }\n\n const appId = authContextStore.appId() ?? authStore.primaryApplication()?.appId ?? authStore.primaryOrganization()?.appId ?? null;\n const orgId = authContextStore.orgId() ?? authStore.primaryOrganization()?.orgId ?? null;\n const groupMatches: boolean[] = [];\n\n if (policy.anyRole?.length) {\n groupMatches.push(authStore.hasAnyRole(...policy.anyRole));\n }\n\n if (policy.anyPlatformRole?.length) {\n groupMatches.push(authStore.hasPlatformRole(...policy.anyPlatformRole));\n }\n\n if (policy.anyApplicationRole?.length) {\n groupMatches.push(authStore.hasApplicationRole(appId, ...policy.anyApplicationRole));\n }\n\n if (policy.anyOrganizationRole?.length) {\n groupMatches.push(authStore.hasOrganizationRole(appId, orgId, ...policy.anyOrganizationRole));\n }\n\n if (policy.anyPermission?.length) {\n groupMatches.push(policy.anyPermission.some((permission) => authStore.hasPermission(permission)));\n }\n\n if (!groupMatches.length) {\n return true;\n }\n\n return groupMatches.some(Boolean);\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, CanMatchFn, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { matchesRouteAccessPolicy } from '../access/access.utils';\nimport { RouteAccessPolicy } from '../access/route-access-policy';\nimport { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { AuthService } from '../services/auth.service';\nimport { createForbiddenUrlTree, rememberAllowedUrl } from '../routing/access-denied.utils';\n\nexport function accessGuard(policy: RouteAccessPolicy, fallbackUrl = '/forbidden'): CanActivateFn {\n return (_route, state) => {\n const router = inject(Router);\n const authService = inject(AuthService);\n const authStore = inject(AuthStore);\n const authContextStore = inject(AuthContextStore);\n\n return authService.ensureLoaded().pipe(\n map(() => {\n if (matchesRouteAccessPolicy(authStore, authContextStore, policy)) {\n rememberAllowedUrl(state.url);\n return true;\n }\n\n return fallbackUrl === '/forbidden' ? createForbiddenUrlTree(router, state.url, 'policy') : router.parseUrl(fallbackUrl);\n }),\n );\n };\n}\n\nexport function accessMatchGuard(policy: RouteAccessPolicy, fallbackUrl = '/forbidden'): CanMatchFn {\n return (_route, segments) => {\n const router = inject(Router);\n const authService = inject(AuthService);\n const authStore = inject(AuthStore);\n const authContextStore = inject(AuthContextStore);\n const attemptedUrl = segments.length ? `/${segments.map((segment) => segment.path).join('/')}` : router.url;\n\n return authService.ensureLoaded().pipe(\n map(() => {\n if (matchesRouteAccessPolicy(authStore, authContextStore, policy)) {\n rememberAllowedUrl(router.url);\n return true;\n }\n\n return fallbackUrl === '/forbidden' ? createForbiddenUrlTree(router, attemptedUrl, 'policy') : router.parseUrl(fallbackUrl);\n }),\n );\n };\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport {\n APPLICATION_ADMIN_ROLES,\n APPLICATION_OWNER_ROLES,\n ORGANIZATION_ADMIN_ROLES,\n ORGANIZATION_MEMBER_ROLES,\n ORGANIZATION_OWNER_ROLES,\n ORGANIZATION_STAFF_ROLES,\n PLATFORM_ADMIN_ROLES,\n} from '../access/role.constants';\nimport { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { AuthService } from '../services/auth.service';\n\nexport interface LandingRedirectTarget {\n platform?: string;\n application?: string;\n organization?: string;\n forbidden?: string;\n}\n\nexport function landingRedirectGuard(targets: LandingRedirectTarget = {}): CanActivateFn {\n const resolvedTargets = {\n platform: targets.platform ?? '/platform',\n application: targets.application ?? '/app',\n organization: targets.organization ?? '/organization',\n forbidden: targets.forbidden ?? '/forbidden',\n };\n\n return () => {\n const router = inject(Router);\n const authService = inject(AuthService);\n const authStore = inject(AuthStore);\n const authContextStore = inject(AuthContextStore);\n\n return authService.ensureLoaded().pipe(\n map(() => {\n const appId = authContextStore.appId() ?? authStore.primaryApplication()?.appId ?? authStore.primaryOrganization()?.appId ?? null;\n const orgId = authContextStore.orgId() ?? authStore.primaryOrganization()?.orgId ?? null;\n\n if (authStore.hasPlatformRole(...PLATFORM_ADMIN_ROLES)) {\n return router.parseUrl(resolvedTargets.platform);\n }\n\n if (authStore.hasApplicationRole(appId, ...APPLICATION_OWNER_ROLES, ...APPLICATION_ADMIN_ROLES)) {\n return router.parseUrl(resolvedTargets.application);\n }\n\n if (\n authStore.hasOrganizationRole(\n appId,\n orgId,\n ...ORGANIZATION_OWNER_ROLES,\n ...ORGANIZATION_ADMIN_ROLES,\n ...ORGANIZATION_MEMBER_ROLES,\n ...ORGANIZATION_STAFF_ROLES,\n )\n ) {\n return router.parseUrl(resolvedTargets.organization);\n }\n\n return router.parseUrl(resolvedTargets.forbidden);\n }),\n );\n };\n}\n","import { PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport { createForbiddenUrlTree, rememberAllowedUrl } from '../routing/access-denied.utils';\n\nexport const RoleGuard: CanActivateFn = (route, state): Observable<boolean | ReturnType<Router['parseUrl']>> => {\n const authService = inject(AuthService);\n const platformId = inject(PLATFORM_ID);\n const router = inject(Router);\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n const routeRoles = route.data['roles'];\n return authService.ensureLoaded().pipe(\n map(({ roles }) => {\n const authed = routeRoles ? (roles ?? []).some((role) => routeRoles.indexOf(role) >= 0) : true;\n if (authed) {\n rememberAllowedUrl(state.url);\n return true;\n }\n\n return createForbiddenUrlTree(router, state.url, 'role');\n }),\n );\n};\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const PermissionGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n\n // if (!isPlatformBrowser(platformId)) {\n // return of(false);\n // }\n\n return of(false);\n};\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ApiResponse, APP_CONFIG } from '@rolatech/angular-common';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { User } from '../interfaces/auth.interface';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthUserService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n private userSubject: BehaviorSubject<User | null> = new BehaviorSubject<User | null>(JSON.parse('null'));\n public userInfo$: Observable<User | null> = this.userSubject.asObservable();\n updateUserInfo(userInfo: User | null) {\n this.userSubject.next(userInfo);\n }\n findAll(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users`, {\n params: options,\n withCredentials: true,\n });\n }\n get(id: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${id}`, {\n withCredentials: true,\n });\n }\n findOne(userId: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${userId}`, {\n withCredentials: true,\n });\n }\n me() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n getPublicUserInfo(id: string): Observable<any> {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/${id}/info/public`, {\n withCredentials: false,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n findPublicInfoByIds(ids: Array<string>) {\n const params = { ids: ids.join(',') };\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/by`, {\n params: params,\n });\n }\n sendSMSCode(countryCode: string, phone: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/verification/phone/start`, { countryCode, phone });\n }\n verifyEmailByToken(token: string): Observable<boolean> {\n return this.http\n .post<ApiResponse<boolean> | boolean>(\n `${this.environment.baseUrl}/auth/users/verification/email`,\n {},\n {\n params: { token },\n withCredentials: true,\n },\n )\n .pipe(\n map((response) => {\n if (typeof response === 'boolean') {\n return response;\n }\n\n return Boolean(response.data);\n }),\n );\n }\n findByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info`, {\n params: { username },\n withCredentials: true,\n });\n }\n findUserInfoByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info/by`, {\n params: { username },\n withCredentials: true,\n });\n }\n findPublicInfoByRole(role: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/public/by`, {\n params: { role: role },\n withCredentials: false,\n });\n }\n changeUsername(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/username`,\n { username },\n {\n withCredentials: true,\n },\n );\n }\n changeName(name: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/me`,\n { name },\n {\n withCredentials: true,\n },\n );\n }\n createUserByAdmin(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/by/admin`, data, {\n withCredentials: true,\n });\n }\n update(data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/me`, data, {\n withCredentials: true,\n });\n }\n uploadAvatar(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/avatar`, data, {\n withCredentials: true,\n });\n }\n changePhone(phone: any, code: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/phone`,\n { phone, code },\n {\n withCredentials: true,\n },\n );\n }\n follow(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/following/${username}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n unfollow(username: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, {\n withCredentials: true,\n });\n }\n listFollowingByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following`);\n }\n listFollowersByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/followers`);\n }\n checkIfFollowingSomeone(username: string, target: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following/${target}`);\n }\n isFollowing(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, { withCredentials: true });\n }\n friendships(ids: string[]): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/friendships`, { ids: ids }, { withCredentials: true });\n }\n followersStats(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/followers/stats/by`, { params: { username: username } });\n }\n // Address;\n addAddress(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/addresses`, data, { withCredentials: true });\n }\n updateAddress(id: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, data, { withCredentials: true });\n }\n findAllAddress(options: any): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses`, { params: options, withCredentials: true });\n }\n getAddress(id: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n deleteAddressById(id: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { Observable } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthAgentService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n baseUrl = `${this.environment.baseUrl}/auth/agents`;\n\n public findAllApplications(options: any): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications`, {\n params: options,\n withCredentials: true,\n });\n }\n public getApplication(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}`, {\n withCredentials: true,\n });\n }\n public myApplication(): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/me`, {\n withCredentials: true,\n });\n }\n public apply(data: any): Observable<any> {\n return this.http.post<any>(`${this.baseUrl}/applications`, data, {\n withCredentials: true,\n });\n }\n public approve(id: string): Observable<any> {\n return this.http.put<any>(\n `${this.baseUrl}/applications/${id}/approve`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n public reject(id: any, data: any): Observable<any> {\n return this.http.put<any>(`${this.baseUrl}/applications/${id}/reject`, data, {\n withCredentials: true,\n });\n }\n public findRejections(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}/rejections`, {\n withCredentials: true,\n });\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nclass LocalStorage implements Storage {\n [name: string]: any;\n readonly length = 0;\n clear(): void {}\n getItem(key: string): string | null {\n return null;\n }\n key(index: number): string | null {\n return null;\n }\n removeItem(key: string): void {}\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService implements Storage {\n private storage: Storage;\n platformId = inject(PLATFORM_ID);\n\n constructor() {\n this.storage = new LocalStorage();\n\n if (isPlatformBrowser(this.platformId)) {\n this.storage = localStorage;\n }\n }\n\n [name: string]: any;\n\n length = 0;\n\n clear(): void {\n this.storage.clear();\n }\n\n getItem(key: string): string | null {\n return this.storage.getItem(key);\n }\n\n key(index: number): string | null {\n return this.storage.key(index);\n }\n\n removeItem(key: string): void {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string): void {\n return this.storage.setItem(key, value);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\nimport { BehaviorSubject, catchError, Observable, of, throwError } from 'rxjs';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n tokenSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\n isRefreshingToken = false;\n authService = inject(AuthService);\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError((error) => {\n if (error instanceof HttpErrorResponse) {\n switch (error.status) {\n case 400:\n return this.hand400Error(error);\n case 401:\n return this.hand401Error(error);\n case 403:\n return this.hand403Error(error);\n case 404:\n return this.hand404Error(error);\n case 429:\n return this.hand429Error(error);\n default:\n return this.handleDefaultError(error);\n }\n } else {\n return throwError(() => error);\n }\n }),\n );\n }\n private hand400Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand401Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand403Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand404Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n /**\n *\n * @param error SMS code sent too many\n * @returns\n */\n private hand429Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private handleDefaultError(error: HttpErrorResponse) {\n return throwError(() => new Error('System error'));\n }\n}\n","import { catchError, filter, map, switchMap, take } from 'rxjs/operators';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { NEVER, Observable, throwError } from 'rxjs';\n\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n authService = inject(AuthService);\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const authRequest = request.clone({\n headers: request.headers.append('Client-Id', this.environment.clientId),\n });\n return next.handle(authRequest).pipe(\n map((res) => {\n // if (res instanceof HttpResponse && isPlatformBrowser(this.platformId)) {\n // // window.location.href = res.headers.get('Location') as string;\n // }\n return res;\n }),\n catchError((error: any) => {\n if (isPlatformBrowser(this.platformId)) {\n if (error.url?.includes('auth/introspect')) {\n // if (window.location.origin !== `${this.environment.accountsUrl}`) {\n // window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n // return NEVER;\n // }\n }\n if (error instanceof HttpErrorResponse && error.error.code === 'G401') {\n window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n return NEVER;\n }\n }\n return throwError(() => error.error || error.message);\n }),\n );\n }\n addClientIdHeader(request: HttpRequest<any>) {\n return request.clone({\n setHeaders: {\n 'Client-id': this.environment.clientId,\n },\n });\n }\n addCookieHeader(request: HttpRequest<any>, cookie: string) {\n return request.clone({\n setHeaders: {\n Cookie: cookie,\n 'Client-id': this.environment.clientId,\n },\n });\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { EnvironmentProviders, InjectionToken, PLATFORM_ID, Provider, APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\nimport { firstValueFrom, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ErrorInterceptor, AuthInterceptor } from './lib/interceptors';\nimport { AuthService } from './lib/services/auth.service';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport enum AuthMethod {\n Password = 'PASSWORD',\n OTP = 'OTP',\n Google = 'GOOGLE',\n WeChat = 'WECHAT',\n}\n\nexport const AUTH_METHODS = new InjectionToken<AuthMethod[]>('AUTH_METHODS');\n\nexport interface AuthConfig {\n methods: AuthMethod[];\n autoLoadSession?: boolean;\n}\n\nexport function provideAngularAuth(config?: AuthConfig): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n {\n provide: AUTH_METHODS,\n useValue: config?.methods,\n },\n\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: () => {\n const authService = inject(AuthService);\n const platformId = inject(PLATFORM_ID);\n\n return () => {\n if (config?.autoLoadSession === false || !isPlatformBrowser(platformId)) {\n return Promise.resolve();\n }\n\n return firstValueFrom(authService.ensureLoaded().pipe(catchError(() => of(null))));\n };\n },\n },\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Routes } from '@angular/router';\nimport { UnauthorizedComponent } from './components/unauthorized/unauthorized.component';\nimport { ForbiddenComponent } from './components/forbidden/forbidden.component';\n\nexport const authRoutes: Routes = [\n {\n path: 'unauthorized',\n component: UnauthorizedComponent,\n },\n {\n path: 'forbidden',\n component: ForbiddenComponent,\n },\n];\n","import { EnvironmentProviders, InjectionToken, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { NavLink } from '@rolatech/angular-common';\nimport { RouteAccessPolicy } from '../access/route-access-policy';\n\nexport interface RoleNavigationLink extends NavLink {\n order?: number;\n access?: RouteAccessPolicy;\n children?: RoleNavigationLink[];\n}\n\nexport const ROLE_NAVIGATION_LINKS = new InjectionToken<RoleNavigationLink[]>('ROLE_NAVIGATION_LINKS');\n\nexport function provideRoleNavigation(links: RoleNavigationLink[]): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: ROLE_NAVIGATION_LINKS,\n useValue: links,\n multi: true,\n },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n","import { computed, inject, Injectable } from '@angular/core';\nimport { NavLink } from '@rolatech/angular-common';\nimport { matchesRouteAccessPolicy } from '../access/access.utils';\nimport { AuthContextStore } from '../auth-context.store';\nimport { AuthStore } from '../auth.store';\nimport { ROLE_NAVIGATION_LINKS, RoleNavigationLink } from './navigation.tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class AppNavigationService {\n private readonly authStore = inject(AuthStore);\n private readonly authContextStore = inject(AuthContextStore);\n private readonly linkGroups = inject(ROLE_NAVIGATION_LINKS, { optional: true }) ?? [];\n\n readonly links = computed<NavLink[]>(() => {\n this.authStore.authenticated();\n this.authStore.loaded();\n this.authContextStore.appId();\n this.authContextStore.orgId();\n\n return this.linkGroups\n .flat()\n .sort((left, right) => (left.order ?? 0) - (right.order ?? 0))\n .map((link) => this.toNavLink(link))\n .filter((link): link is NavLink => link !== null);\n });\n\n private toNavLink(link: RoleNavigationLink): NavLink | null {\n if (link.visible === false || !matchesRouteAccessPolicy(this.authStore, this.authContextStore, link.access)) {\n return null;\n }\n\n const children = link.children\n ?.map((child) => this.toNavLink(child))\n .filter((child): child is NavLink => child !== null);\n\n if (link.children?.length && !children?.length) {\n return null;\n }\n\n return {\n ...link,\n children,\n };\n }\n}\n","import { EnvironmentProviders, InjectionToken, Provider, Type, inject, makeEnvironmentProviders } from '@angular/core';\nimport { Route, ROUTES, RouterFeatures, Routes, provideRouter } from '@angular/router';\nimport { AuthGuard } from '../guards/auth.guard';\nimport { provideRoleNavigation, RoleNavigationLink } from '../navigation/navigation.tokens';\n\nexport const ROLE_SHELL_CHILD_ROUTES = new InjectionToken<Routes>('ROLE_SHELL_CHILD_ROUTES');\n\nexport interface RoleAwareShellRouterConfig {\n shellComponent: Type<unknown>;\n shellChildren?: Routes;\n topLevelRoutes?: Routes;\n fallbackRoute?: Route;\n shellCanActivate?: Route['canActivate'];\n shellCanActivateChild?: Route['canActivateChild'];\n shellData?: Route['data'];\n}\n\nexport interface RoleAwareFeatureConfig {\n routes?: Routes;\n navigation?: RoleNavigationLink[];\n}\n\nexport interface RoleAwareShellConfig extends RoleAwareShellRouterConfig {\n navigation?: RoleNavigationLink[];\n}\n\nexport interface RoleAwareConsoleShellConfig extends RoleAwareShellConfig {}\n\nexport function provideRoleShellRoutes(routes: Routes): EnvironmentProviders {\n const providers: Provider[] = [\n {\n provide: ROLE_SHELL_CHILD_ROUTES,\n useValue: routes,\n multi: true,\n },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\nexport function provideRoleAwareFeature(config: RoleAwareFeatureConfig): EnvironmentProviders {\n const providers: Array<Provider | EnvironmentProviders> = [];\n\n if (config.routes?.length) {\n providers.push(provideRoleShellRoutes(config.routes));\n }\n\n if (config.navigation?.length) {\n providers.push(provideRoleNavigation(config.navigation));\n }\n\n return makeEnvironmentProviders(providers);\n}\n\nexport function provideRoleAwareShellRouter(\n config: RoleAwareShellRouterConfig,\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n const providers: Array<Provider | EnvironmentProviders> = [\n provideRouter([], ...features),\n {\n provide: ROUTES,\n multi: true,\n useFactory: (): Routes => {\n const contributedRoutes = inject(ROLE_SHELL_CHILD_ROUTES, { optional: true }) ?? [];\n\n return [\n ...(config.topLevelRoutes ?? []),\n {\n path: '',\n component: config.shellComponent,\n canActivate: config.shellCanActivate,\n canActivateChild: config.shellCanActivateChild,\n data: config.shellData,\n children: [...(config.shellChildren ?? []), ...contributedRoutes.flat()],\n },\n ...(config.fallbackRoute ? [config.fallbackRoute] : []),\n ];\n },\n },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\nexport function provideRoleAwareShell(config: RoleAwareShellConfig, ...features: RouterFeatures[]): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideRoleAwareShellRouter(config, ...features),\n ...(config.navigation?.length ? [provideRoleNavigation(config.navigation)] : []),\n ]);\n}\n\nexport function provideRoleAwareConsoleShell(\n config: RoleAwareConsoleShellConfig,\n ...features: RouterFeatures[]\n): EnvironmentProviders {\n return provideRoleAwareShell(\n {\n ...config,\n shellCanActivate: config.shellCanActivate ?? [AuthGuard],\n shellCanActivateChild: config.shellCanActivateChild ?? [AuthGuard],\n },\n ...features,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["catchError","switchMap","i1","i2","map"],"mappings":"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"}
|