Appearance
Roles Management Page
- File: src/pages/private/admin/roles/index.svelte
Overview
The Roles Management page provides an interface for administrators to manage user roles and permissions within the system. It allows for creating, reading, updating, and deleting roles, along with managing associated permissions.
Data Structures
Role Interface
ts
interface Role {
name: string;
notes: string;
id?: string;
permissions?: string[];
}Core Functions
1. Role Management
svelte
// Fetch roles and permissions
async function getRoles() {
const { data, error } = await q<{ roles: any; permissions: any }>(`
query {
roles: tenantRoles {
items {
id, name, notes
permissions {
permissionId
}
}
}
permissions {
items {
id, name, notes, active
}
}
}
`);
return processRoleData(data);
}
// Create new role
async function createRole(role) {
const { data, error } = await create<{ ret: any }>(
"createTenantRole",
"CreateTenantRole",
role
);
return handleResponse(data, error);
}
// Update existing role
async function updateRole(role) {
const { data, error } = await update<{ ret: any }>(
"updateTenantRole",
"UpdateTenantRole",
role
);
return handleResponse(data, error);
}
// Delete role
async function deleteRole(id) {
const { data, error } = await delete2<{ ret: any }>(
"deleteTenantRole",
id
);
return handleResponse(data, error);
}Event Handlers
1. Role Operations
svelte
// Save role (create/update)
async function saveRole({ detail }) {
const operation = activeRole ? updateRole : createRole;
const ret = await operation({
...detail,
id: activeRole?.id
});
if (!ret.success) {
showError(ret.message);
return;
}
showModal = false;
activeRole = null;
await refresh();
}
// Delete role
async function doDelete() {
const ret = await deleteRole(activeRole.id);
if (!ret.success) {
showError(ret.message);
return;
}
activeRole = null;
showDeleteModal = false;
await refresh();
}