@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
1 lines • 11 kB
Source Map (JSON)
{"version":3,"file":"c8y-ngx-components-application-access-user-application-access-user-details-wrapper.mjs","sources":["../../application-access/user/application-access-user-details-wrapper/application-access-user-details-wrapper.component.ts","../../application-access/user/application-access-user-details-wrapper/application-access-user-details-wrapper.component.html","../../application-access/user/application-access-user-details-wrapper/c8y-ngx-components-application-access-user-application-access-user-details-wrapper.ts"],"sourcesContent":["import { Component, computed, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IUser, UserService } from '@c8y/client';\nimport {\n C8yTranslateDirective,\n C8yTranslatePipe,\n ContextRouteService,\n Permissions,\n LoadingComponent,\n AlertService,\n BreadcrumbComponent,\n BreadcrumbItemComponent\n} from '@c8y/ngx-components';\nimport { ApplicationAccessListComponent } from '@c8y/ngx-components/application-access/list';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\n@Component({\n selector: 'c8y-application-access-user-details-wrapper',\n templateUrl: './application-access-user-details-wrapper.component.html',\n imports: [\n C8yTranslatePipe,\n C8yTranslateDirective,\n ApplicationAccessListComponent,\n ReactiveFormsModule,\n LoadingComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent\n ]\n})\nexport class ApplicationAccessUserDetailsWrapperComponent implements OnInit, OnDestroy {\n userWithOwner = signal<{ user: IUser; owner: IUser | null } | null>(null);\n hasAppManagement = computed(() => {\n const userWithOwner = this.userWithOwner();\n if (!userWithOwner) {\n return false;\n }\n return this.hasApplicationManagementRoles(userWithOwner.user);\n });\n formGroup: ReturnType<typeof this.initForm>;\n private contextService = inject(ContextRouteService);\n private activatedRoute = inject(ActivatedRoute);\n private userService = inject(UserService);\n private formBuilder = inject(FormBuilder);\n private alertService = inject(AlertService);\n private router = inject(Router);\n\n async ngOnInit(): Promise<void> {\n const data = this.contextService.getContextData(this.activatedRoute);\n let user = data.contextData as IUser;\n\n const { data: refreshedUser } = await this.userService.detail(user.id);\n user = refreshedUser;\n let owner: IUser | null = null;\n if (user.owner) {\n try {\n const ownerResponse = await this.userService.detail(user.owner);\n owner = ownerResponse.data;\n } catch (e) {\n // proceed without owner\n }\n }\n\n this.userWithOwner.set({ user, owner });\n\n this.formGroup = this.initForm(user);\n }\n\n initForm(user: IUser) {\n const currentApplicationOfUser = user.applications || [];\n const form = this.formBuilder.group({\n applications: [currentApplicationOfUser]\n });\n\n const hasApplicationManagementRoles = this.hasApplicationManagementRoles(user);\n const isExternalUser = this.userService.isExternalUser(user);\n if (hasApplicationManagementRoles || isExternalUser) {\n form.controls.applications.disable();\n }\n if (isExternalUser) {\n this.alertService.warning(\n gettext('You cannot edit the user since it is managed via your authorization server.')\n );\n }\n\n return form;\n }\n\n async save() {\n const user = this.userWithOwner().user;\n const applications = this.formGroup.value.applications.map(app => ({\n id: app.id,\n type: app.type\n }));\n try {\n await this.userService.update({\n id: user.id,\n applications: applications\n });\n this.alertService.success(gettext(\"User's application access changed.\"));\n this.formGroup.markAsPristine();\n } catch (e) {\n this.alertService.danger(gettext(\"Failed to update user's application access.\"), e);\n }\n }\n\n cancel() {\n this.router.navigate(['users']);\n }\n\n ngOnDestroy(): void {\n // remove SSO related alert once navigating away\n this.alertService.clearAll();\n }\n\n private hasApplicationManagementRoles(user: IUser): boolean {\n return this.userService.hasAnyRole(user, [\n Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN,\n Permissions.ROLE_APPLICATION_MANAGEMENT_READ\n ]);\n }\n}\n","<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-accounts'\"\n [label]=\"'Accounts' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-accounts'\"\n path=\"#users\"\n [label]=\"'Users' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Application access' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n @if (formGroup) {\n <form [formGroup]=\"formGroup\">\n @if (hasAppManagement()) {\n <div\n class=\"alert alert-info\"\n translate\n >\n This user is assigned a global role with \"Application management\" permission.\n Therefore all applications are accessible.\n </div>\n }\n <c8y-application-access-list\n formControlName=\"applications\"\n [userWithOwner]=\"userWithOwner()\"\n [allSelected]=\"hasAppManagement()\"\n ></c8y-application-access-list>\n </form>\n } @else {\n <c8y-loading></c8y-loading>\n }\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Cancel' | translate\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save' | translate\"\n type=\"button\"\n (click)=\"save()\"\n [disabled]=\"hasAppManagement() || formGroup?.invalid || formGroup?.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}