>
</pngx-page-header>
-@if (users) {
+@if (canViewUsers && users) {
<h4 class="d-flex">
<ng-container i18n>Users</ng-container>
<button type="button" class="btn btn-sm btn-outline-primary ms-4" (click)="editUser()" *pngxIfPermissions="{ action: PermissionAction.Add, type: PermissionType.User }">
</ul>
}
-@if (groups) {
+@if (canViewGroups && groups) {
<h4 class="mt-4 d-flex">
<ng-container i18n>Groups</ng-container>
<button type="button" class="btn btn-sm btn-outline-primary ms-4" (click)="editGroup()" *pngxIfPermissions="{ action: PermissionAction.Add, type: PermissionType.Group }">
</ul>
}
-@if (!users || !groups) {
+@if ((canViewUsers && !users) || (canViewGroups && !groups)) {
<div>
<div class="spinner-border spinner-border-sm fw-normal ms-2 me-auto" role="status"></div>
<div class="visually-hidden" i18n>Loading...</div>
import { Group } from 'src/app/data/group'
import { User } from 'src/app/data/user'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
-import { PermissionsService } from 'src/app/services/permissions.service'
+import {
+ PermissionAction,
+ PermissionType,
+ PermissionsService,
+} from 'src/app/services/permissions.service'
import { GroupService } from 'src/app/services/rest/group.service'
import { UserService } from 'src/app/services/rest/user.service'
import { SettingsService } from 'src/app/services/settings.service'
unsubscribeNotifier: Subject<any> = new Subject()
+ public get canViewUsers(): boolean {
+ return this.permissionsService.currentUserCan(
+ PermissionAction.View,
+ PermissionType.User
+ )
+ }
+
+ public get canViewGroups(): boolean {
+ return this.permissionsService.currentUserCan(
+ PermissionAction.View,
+ PermissionType.Group
+ )
+ }
+
ngOnInit(): void {
- this.usersService
- .listAll(null, null, { full_perms: true })
- .pipe(first(), takeUntil(this.unsubscribeNotifier))
- .subscribe({
- next: (r) => {
- this.users = r.results
- },
- error: (e) => {
- this.toastService.showError($localize`Error retrieving users`, e)
- },
- })
+ if (this.canViewUsers) {
+ this.usersService
+ .listAll(null, null, { full_perms: true })
+ .pipe(first(), takeUntil(this.unsubscribeNotifier))
+ .subscribe({
+ next: (r) => {
+ this.users = r.results
+ },
+ error: (e) => {
+ this.toastService.showError($localize`Error retrieving users`, e)
+ },
+ })
+ }
- this.groupsService
- .listAll(null, null, { full_perms: true })
- .pipe(first(), takeUntil(this.unsubscribeNotifier))
- .subscribe({
- next: (r) => {
- this.groups = r.results
- },
- error: (e) => {
- this.toastService.showError($localize`Error retrieving groups`, e)
- },
- })
+ if (this.canViewGroups) {
+ this.groupsService
+ .listAll(null, null, { full_perms: true })
+ .pipe(first(), takeUntil(this.unsubscribeNotifier))
+ .subscribe({
+ next: (r) => {
+ this.groups = r.results
+ },
+ error: (e) => {
+ this.toastService.showError($localize`Error retrieving groups`, e)
+ },
+ })
+ }
}
ngOnDestroy() {