Skip to content

Commit

Permalink
role assignment, slight visual changes to role display
Browse files Browse the repository at this point in the history
  • Loading branch information
c0repwn3r committed Feb 1, 2024
1 parent 766c2ad commit 701409f
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 16 deletions.
9 changes: 9 additions & 0 deletions src/routes/dashboard/vaccs/[id]/roster/+page.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,22 @@ export const load: PageServerLoad = async ({ fetch, cookies, params }) => {

let vaccs = await prisma.vacc.findMany();

let all_roles = await prisma.role.findMany();

altered_roster = altered_roster.sort((a, b) => {
if (a.name < b.name) return -1;
else if (a.name > b.name) return 1;
else return 0;
});

return {
load_error: false,
home_users: altered_roster,
vaccs: vaccs,
user: user,
roles: user_roles,
form: await superValidate(formSchema),
all_roles: all_roles,
};
};

Expand Down
53 changes: 53 additions & 0 deletions src/routes/dashboard/vaccs/[id]/roster/data-table-actions.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,41 @@
export let user: User;
let cert_issue_open = false;
async function toggleRole(
cid: string,
existing_roles: string[],
new_role: string,
) {
let new_roles = [];
if (existing_roles.includes(new_role)) {
for (let item of existing_roles) {
if (item != new_role) {
new_roles.push(item);
}
}
} else {
new_roles = existing_roles;
new_roles.push(new_role);
}
let data = new URLSearchParams();
data.set("user", cid);
data.set("roles", new_roles.join(","));
let resp = await fetch("?/set_roles", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: data.toString(),
});
if (!resp.ok) {
throw new Error(
"server returned error response, see console for details",
);
}
await invalidateAll();
}
</script>

<DropdownMenu.Root>
Expand Down Expand Up @@ -47,6 +82,24 @@
Issue certificate
</DropdownMenu.Item>
{/if}
{#if can($page.data.roles, $page.data.vacc_id, $page.data.user.vaccId, `vacc.${$page.data.vacc_id}.role.assign`)}
<DropdownMenu.Sub>
<DropdownMenu.SubTrigger>Toggle Roles</DropdownMenu.SubTrigger>
<DropdownMenu.SubContent>
<DropdownMenu.Label>Toggle Roles</DropdownMenu.Label>
<DropdownMenu.Separator />
{#each $page.data.all_roles as role}
<DropdownMenu.CheckboxItem
on:click={async () => {
await toggleRole(user.id, user.roleIds, role.id);
}}
checked={user.roleIds.includes(role.id)}>
{role.name}
</DropdownMenu.CheckboxItem>
{/each}
</DropdownMenu.SubContent>
</DropdownMenu.Sub>
{/if}
</DropdownMenu.Content>
</DropdownMenu.Root>

Expand Down
34 changes: 18 additions & 16 deletions src/routes/dashboard/vaccs/[id]/roster/data-table-user.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,21 @@
export let user: User;
</script>

{user.name}
{#each user.roleIds as role}
{#if role === ROLE_DEVELOPER_ID}
<Badge class="bg-fuchsia-500">Developer</Badge>
{:else if role === ROLE_DIVISION_DIRECTOR_ID}
<Badge class="bg-red-500">Division Director</Badge>
{:else if role === ROLE_DIVISION_STAFF_ID}
<Badge class="bg-orange-500">Division Staff</Badge>
{:else if role === ROLE_VACC_DIRECTOR_ID}
<Badge class="bg-emerald-500">vACC Director</Badge>
{:else if role === ROLE_VACC_STAFF_ID}
<Badge class="bg-green-500">vACC Staff</Badge>
{:else if role === ROLE_MENTOR_ID}
<Badge class="bg-sky-500">Mentor</Badge>
{/if}
{/each}
<div class="space-x-2">
{user.name}
{#each user.roleIds as role}
{#if role === ROLE_DEVELOPER_ID}
<Badge class="bg-fuchsia-500">Developer</Badge>
{:else if role === ROLE_DIVISION_DIRECTOR_ID}
<Badge class="bg-red-500">Division Director</Badge>
{:else if role === ROLE_DIVISION_STAFF_ID}
<Badge class="bg-orange-500">Division Staff</Badge>
{:else if role === ROLE_VACC_DIRECTOR_ID}
<Badge class="bg-emerald-500">vACC Director</Badge>
{:else if role === ROLE_VACC_STAFF_ID}
<Badge class="bg-green-500">vACC Staff</Badge>
{:else if role === ROLE_MENTOR_ID}
<Badge class="bg-sky-500">Mentor</Badge>
{/if}
{/each}
</div>

0 comments on commit 701409f

Please sign in to comment.