Save worktree changes

This commit is contained in:
2026-07-25 02:29:19 +01:00
parent 8d3b7d557b
commit db9d718cd8
170 changed files with 11719 additions and 3414 deletions
+133
View File
@@ -0,0 +1,133 @@
<div class="page-header">
<div>
<h2>Edit role - {{role.name}}</h2>
<p>Choose which permissions and users this role receives.</p>
</div>
</div>
<form method="post" action="/rbac/{{role.id}}" id="role-edit-form" data-async-save data-async-save-close-url="/rbac">
<input type="hidden" name="permissions_present" value="1" />
<input type="hidden" name="users_present" value="1" />
<div class="row g-4">
<div class="col-12 col-xl-4 d-flex flex-column gap-4">
<div class="card card-outline card-primary admin-form-card">
<div class="card-header">
<h3 class="card-title">Role details</h3>
</div>
<div class="card-body">
<div class="mb-3">
<label for="role-name-edit" class="form-label">Role Name</label>
<input id="role-name-edit" name="name" class="form-control" value="{{role.name}}" required />
</div>
<div class="mb-0">
<label for="role-description-edit" class="form-label">Description</label>
<textarea id="role-description-edit" name="description" class="form-control" rows="5">{{role.description}}</textarea>
</div>
</div>
<div class="card-footer d-flex justify-content-end gap-2 flex-wrap">
<div class="btn-group" role="group" aria-label="Role actions">
{{{saveActionButtons formId="role-edit-form" saveLabel="Save" saveAndCloseLabel="Save and Close" saveAndCloseValue="close" showSaveAndNew=false}}}
</div>
{{#unless role.user_count}}
<button type="submit" class="btn btn-danger" form="role-delete-form">Delete</button>
{{/unless}}
</div>
</div>
<div class="card card-outline card-secondary admin-form-card">
<div class="card-header">
<h3 class="card-title">Users</h3>
</div>
<div class="card-body p-0">
<div class="px-3 pt-3">
<p class="text-body-secondary mb-3">Choose the users who should belong to this role.</p>
</div>
{{#if users.length}}
<div class="table-responsive">
<table class="table table-sm align-middle mb-0 w-100">
<thead>
<tr>
<th style="width: 1%" scope="col">Select</th>
<th scope="col">Name</th>
<th scope="col">Username</th>
<th scope="col">Roles</th>
</tr>
</thead>
<tbody>
{{#each users}}
<tr>
<td>
<input class="form-check-input" type="checkbox" name="user_ids[]" value="{{id}}" {{#if isSelected}}checked{{/if}} />
</td>
<td>{{name}}</td>
<td class="text-body-secondary">{{username}}</td>
<td class="text-body-secondary">{{#if roleNames}}{{roleNames}}{{else}}No roles assigned{{/if}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
{{else}}
<div class="px-3 pb-3">
<div class="alert alert-warning mb-0">Create at least one user before assigning this role.</div>
</div>
{{/if}}
</div>
</div>
</div>
<div class="col-12 col-xl-8 d-flex flex-column gap-4">
<div class="card card-outline card-secondary admin-form-card">
<div class="card-header">
<h3 class="card-title">Permissions</h3>
</div>
<div class="card-body">
<p class="text-body-secondary mb-3">Each section below is a resource. Pick the actions this role should have for that resource.</p>
{{#if permissionGroups.length}}
<div class="accordion" id="role-permissions-accordion">
{{#each permissionGroups}}
<div class="accordion-item">
<h2 class="accordion-header" id="heading-{{id}}">
<button class="accordion-button {{#unless @first}}collapsed{{/unless}}" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-{{id}}" aria-expanded="{{#if @first}}true{{else}}false{{/if}}" aria-controls="collapse-{{id}}">
<span>{{title}}</span>
{{#if categoryName}}
<span class="badge text-bg-secondary ms-2">{{categoryName}}</span>
{{/if}}
</button>
</h2>
<div id="collapse-{{id}}" class="accordion-collapse collapse {{#if @first}}show{{/if}}" aria-labelledby="heading-{{id}}" data-bs-parent="#role-permissions-accordion">
<div class="accordion-body">
<div class="row g-3">
{{#each permissions}}
<div class="col-12 col-md-6">
<label class="form-check card card-outline card-secondary position-relative p-3 h-100 mb-0">
<input class="form-check-input position-absolute top-0 end-0 m-3" type="checkbox" name="permission_keys[]" value="{{permission_key}}" data-permission-key="{{permission_key}}" {{#if isSelected}}checked{{/if}} />
<span class="form-check-label pe-4">
<strong>{{actionLabel}}</strong>
<span class="d-block text-body-secondary small">{{#if description}}{{description}}{{else}}No description provided.{{/if}}</span>
</span>
</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{/each}}
</div>
{{else}}
<div class="alert alert-warning mb-0">No permissions are available.</div>
{{/if}}
</div>
<div class="card-footer d-flex justify-content-end">
<div class="btn-group" role="group" aria-label="Permission actions">
{{{saveActionButtons formId="role-edit-form" saveLabel="Save" saveAndCloseLabel="Save and Close" saveAndCloseValue="close" showSaveAndNew=false}}}
</div>
</div>
</div>
</div>
</div>
</form>
<form method="post" action="/rbac/{{role.id}}/delete" id="role-delete-form" class="d-none" data-confirm-message="Delete {{role.name}}?"></form>