mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-06-02 13:14:58 -04:00
105 lines
5.1 KiB
HTML
105 lines
5.1 KiB
HTML
<pngx-page-header title="Users & Groups" i18n-title>
|
|
</pngx-page-header>
|
|
|
|
@if (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 }">
|
|
<svg class="sidebaricon me-1" fill="currentColor">
|
|
<use xlink:href="assets/bootstrap-icons.svg#plus-circle" />
|
|
</svg>
|
|
<ng-container i18n>Add User</ng-container>
|
|
</button>
|
|
</h4>
|
|
<ul class="list-group">
|
|
<li class="list-group-item">
|
|
<div class="row">
|
|
<div class="col" i18n>Username</div>
|
|
<div class="col" i18n>Name</div>
|
|
<div class="col" i18n>Groups</div>
|
|
<div class="col" i18n>Actions</div>
|
|
</div>
|
|
</li>
|
|
@for (user of users; track user) {
|
|
<li class="list-group-item">
|
|
<div class="row">
|
|
<div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editUser(user)" [disabled]="!permissionsService.currentUserCan(PermissionAction.Change, PermissionType.User)">{{user.username}}</button></div>
|
|
<div class="col d-flex align-items-center">{{user.first_name}} {{user.last_name}}</div>
|
|
<div class="col d-flex align-items-center">{{user.groups?.map(getGroupName, this).join(', ')}}</div>
|
|
<div class="col">
|
|
<div class="btn-group">
|
|
<button class="btn btn-sm btn-outline-secondary" type="button" (click)="editUser(user)" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.User }">
|
|
<svg class="buttonicon-sm" fill="currentColor">
|
|
<use xlink:href="assets/bootstrap-icons.svg#pencil" />
|
|
</svg> <ng-container i18n>Edit</ng-container>
|
|
</button>
|
|
<button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteUser(user)" *pngxIfPermissions="{ action: PermissionAction.Delete, type: PermissionType.User }">
|
|
<svg class="buttonicon-sm" fill="currentColor">
|
|
<use xlink:href="assets/bootstrap-icons.svg#trash" />
|
|
</svg> <ng-container i18n>Delete</ng-container>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
}
|
|
</ul>
|
|
}
|
|
|
|
@if (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 }">
|
|
<svg class="sidebaricon me-1" fill="currentColor">
|
|
<use xlink:href="assets/bootstrap-icons.svg#plus-circle" />
|
|
</svg>
|
|
<ng-container i18n>Add Group</ng-container>
|
|
</button>
|
|
</h4>
|
|
@if (groups.length > 0) {
|
|
<ul class="list-group">
|
|
<li class="list-group-item">
|
|
<div class="row">
|
|
<div class="col" i18n>Name</div>
|
|
<div class="col"></div>
|
|
<div class="col"></div>
|
|
<div class="col" i18n>Actions</div>
|
|
</div>
|
|
</li>
|
|
@for (group of groups; track group) {
|
|
<li class="list-group-item">
|
|
<div class="row">
|
|
<div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editGroup(group)" [disabled]="!permissionsService.currentUserCan(PermissionAction.Change, PermissionType.Group)">{{group.name}}</button></div>
|
|
<div class="col"></div>
|
|
<div class="col"></div>
|
|
<div class="col">
|
|
<div class="btn-group">
|
|
<button class="btn btn-sm btn-outline-secondary" type="button" (click)="editGroup(group)" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.Group }">
|
|
<svg class="buttonicon-sm" fill="currentColor">
|
|
<use xlink:href="assets/bootstrap-icons.svg#pencil" />
|
|
</svg> <ng-container i18n>Edit</ng-container>
|
|
</button>
|
|
<button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteGroup(group)" *pngxIfPermissions="{ action: PermissionAction.Delete, type: PermissionType.Group }">
|
|
<svg class="buttonicon-sm" fill="currentColor">
|
|
<use xlink:href="assets/bootstrap-icons.svg#trash" />
|
|
</svg> <ng-container i18n>Delete</ng-container>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
}
|
|
@if (groups.length === 0) {
|
|
<li class="list-group-item" i18n>No groups defined</li>
|
|
}
|
|
</ul>
|
|
}
|
|
}
|
|
|
|
@if (!users || !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>
|
|
</div>
|
|
}
|