{ "version": 3, "sources": ["src/app/core/models/user-role.enum.ts", "src/app/shared/directives/calculate-roles.directive.ts", "src/app/shared/models/user-language.model.ts", "src/app/shared/models/current-user.model.ts", "src/app/shared/services/me.service.ts"], "sourcesContent": ["export enum UserRole {\n User = 0,\n WidgetEditor = 1,\n TenantAdmin = 2,\n GroupAdmin = 3,\n SuperAdmin = 4,\n}\n", "import {\n Directive,\n Input,\n ElementRef,\n inject,\n DestroyRef, OnInit,\n Renderer2,\n} from '@angular/core';\nimport { TranslateService } from '../services/translate.service';\nimport LanguageService from '../services/language.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { UserRole } from '@core-models/user-role.enum';\n\n@Directive({\n selector: '[vlcCalculateUserRole]',\n standalone: true,\n})\nexport class CalculateUserRoleDirective implements OnInit {\n @Input('vlcCalculateUserRole') permissionScope: UserRole = UserRole.User;\n private translateService = inject(TranslateService);\n private languageService = inject(LanguageService);\n private destroyRef = inject(DestroyRef);\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n this.switch();\n this.languageService.onLanguageChange$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.switch();\n });\n }\n\n private roleTranslationMap: { [key in UserRole]: string } = {\n [UserRole.User]: 'vlc:Admin:Management.Settings.User',\n [UserRole.WidgetEditor]: 'vlc:Admin:Management.Settings.Widget.Editor',\n [UserRole.TenantAdmin]: 'vlc:Admin:Management.Settings.Tenant.Admin',\n [UserRole.GroupAdmin]: 'vlc:Admin:Management.Settings.Group.Admin',\n [UserRole.SuperAdmin]: 'vlc:Admin:Management.Settings.Super.Admin',\n };\n\n switch() {\n const userRoleKey = this.roleTranslationMap[this.permissionScope] || 'Unknown';\n const userRole = this.translateService.translateInstant(userRoleKey);\n this.renderer.setProperty(this.el.nativeElement, 'innerText', userRole);\n }\n}\n", "import { BaseModel } from \"@core-models/base.model\";\n\nexport class UserLanguage extends BaseModel {\n ShortCode: string = '';\n ISOCode: string = '';\n Title: string = '';\n IsDefault: boolean = false;\n}\n", "import { UserRole } from '@core-models/user-role.enum';\nimport { TenantSettingsModel } from '@modules/settings/models/tenants-settings.model';\nimport { UserLanguage } from './user-language.model';\n\nexport class CurrentUser {\n Id: string = '';\n Name: string = '';\n Surname?: string;\n MailAddress?: string;\n JobTitle?: string;\n DisplayName?: string;\n Department?: string;\n CompanyName?: string;\n Country?: string;\n City?: string;\n State?: string;\n PostalCode?: string;\n StreetAddress?: string;\n IsActive?: boolean;\n TelephoneNumber?: string;\n Mobile?: string;\n FaxNumber?: string;\n ManagerId?: string;\n JoinDate?: string;\n PermissionScope: UserRole = UserRole.User;\n ProfileImageUri?: string;\n TenantId?: string;\n TenantName?: string;\n FullName: string = '';\n Language: UserLanguage = new UserLanguage();\n AuthId: string = '';\n Office: string = '';\n TenantSettings!: TenantSettingsModel;\n}\n", "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n firstValueFrom,\n retry,\n timer,\n} from 'rxjs';\nimport { CurrentUser } from '@shared-models/current-user.model';\nimport LanguageService from './language.service';\nimport { environment } from '@environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MeService {\n baseUrl: string = environment.BaseUri;\n userEndpoint = `${this.baseUrl}/api/user/me`;\n tenantLanguagesEndpoint = `${this.baseUrl}/api/language/GetTenantLanguages`;\n private _currentUserSubject = new BehaviorSubject(\n new CurrentUser()\n );\n public currentUser$: Observable =\n this._currentUserSubject.asObservable();\n\n constructor(\n private http: HttpClient,\n private languageService: LanguageService\n ) {\n this.fetchAndSetUser();\n }\n\n get currentUser() {\n return this._currentUserSubject.value;\n }\n\n me() {\n return this.http.get(this.userEndpoint);\n }\n\n fetchAndSetUser() {\n console.debug('Fetching user data..');\n\n this.me()\n .pipe(\n retry({\n count: 3,\n delay: (retryCount) => {\n if (retryCount >= 3) {\n throw new Error('User data is null or undefined.');\n }\n console.debug(\n `Retrying to fetch user data after 5 seconds... Retry count: ${\n retryCount + 1\n }`\n );\n return timer(5000);\n },\n })\n )\n .subscribe({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n next: (response: any) => {\n if (response) {\n const user = response.ObjectResult as CurrentUser;\n this.handleUser(user);\n } else {\n console.error('Unexpected response format.');\n }\n },\n error: (error) => {\n console.error('Exceeded maximum retry attempts.', error);\n },\n });\n }\n\n async handleUser(user: CurrentUser) {\n this._currentUserSubject.next(user);\n this.handleUserLanguage(user);\n }\n\n async handleUserLanguage(user: CurrentUser) {\n if (!this.languageService.getLanguageFromLocalStorage()) {\n if (user.Language.ISOCode) {\n this.languageService.setCurrentLanguage(user.Language.ISOCode);\n } else {\n const tenantLanguage = await this.getTenantLanguage();\n if (tenantLanguage) {\n this.languageService.setCurrentLanguage(tenantLanguage);\n }\n }\n }\n }\n\n async getTenantLanguage(): Promise {\n const result = await firstValueFrom(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.http.get(this.tenantLanguagesEndpoint)\n );\n\n if (result.ObjectResult?.TenantLanguageId) {\n const tenantLanguageId = result.ObjectResult?.TenantLanguageId;\n const tenantLanguage = result.Results?.find(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (l: any) => l.Id == tenantLanguageId\n );\n if (tenantLanguage) {\n return tenantLanguage.ISOCode;\n }\n }\n\n return undefined;\n }\n}\n"], "mappings": "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", "names": ["UserRole"] }