Files
pulse-signage/src/web/views/settings/rbac/list.hbs
T
2026-08-05 19:38:16 +01:00

87 lines
4.0 KiB
Handlebars

<div class="page-header">
<div>
<h2>Roles and permissions</h2>
<p>Define roles here, then assign those roles to users from either the role or users screen.</p>
</div>
</div>
<div class="row g-4">
<div class="col-12">
<div class="card card-outline card-primary admin-form-card" data-table-search-container data-table-pagination-card>
<div class="card-header">
<h3 class="card-title">Existing roles</h3>
<div class="card-tools d-flex flex-nowrap align-items-center gap-2">
<div class="input-group input-group-sm flex-shrink-1" style="width: min(14rem, 100%);">
<span class="input-group-text" aria-hidden="true"><i class="bi bi-search"></i></span>
<input type="search" class="form-control" placeholder="Search roles" aria-label="Search roles" data-table-search />
</div>
{{#if (hasPermission currentUser 'rbac.create')}}
<a class="btn btn-primary btn-sm" href="/rbac/new">Add role</a>
{{/if}}
</div>
</div>
<div class="card-body table-responsive p-0">
<table class="table table-striped w-100 mb-0 users-table" data-table-searchable>
<thead>
<tr>
<th data-table-sort-key="role">Role</th>
<th data-table-sort-key="description">Description</th>
<th data-table-sort-key="permissions">Permissions</th>
<th data-table-sort-key="users">Users</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{{#if roles.length}}
{{#each roles}}
<tr data-table-search-row>
<td data-label="Role">
<div class="user-cell">
<div>
{{name}}
</div>
</div>
</td>
<td data-label="Description" title="{{description}}">
{{#if description}}
<span class="subtle">{{truncateText description 80}}</span>
{{else}}
<span class="empty">No description provided.</span>
{{/if}}
</td>
<td data-label="Permissions">{{permission_count}}</td>
<td data-label="Users"><span class="chip">{{user_count}} user{{#if (gt user_count 1)}}s{{else}}{{/if}}{{#if (lt user_count 1)}}s{{/if}}</span></td>
<td data-label="Actions">
{{#if (anyPermission ../currentUser 'rbac.update' 'rbac.delete')}}
<div class="actions users-row-actions">
{{#if (hasPermission ../currentUser 'rbac.update')}}
<a class="btn btn-sm btn-primary" href="/rbac/{{id}}/edit">Edit</a>
{{/if}}
{{#if (hasPermission ../currentUser 'rbac.create')}}
<a class="btn btn-sm btn-secondary" href="/rbac/{{id}}/duplicate">Dupe</a>
{{/if}}
{{#if (hasPermission ../currentUser 'rbac.delete')}}
<form method="post" action="/rbac/{{id}}/delete" class="inline-form" data-confirm-message="Delete {{name}}?">
{{#if (gt user_count 0)}}
<button type="submit" class="btn btn-sm btn-outline-danger" disabled>Delete</button>
{{else}}
<button type="submit" class="btn btn-sm btn-danger">Delete</button>
{{/if}}
</form>
{{/if}}
</div>
{{/if}}
</td>
</tr>
{{/each}}
{{else}}
<tr data-table-search-empty-default><td colspan="5" class="empty">No roles found.</td></tr>
{{/if}}
</tbody>
</table>
</div>
{{> table-pagination pagination=pagination basePath="/rbac" alwaysShow=true}}
</div>
</div>
</div>