chore: check permission only after org is loaded

This commit is contained in:
Rotimi Best
2025-09-09 13:12:56 +01:00
parent 05fc61330c
commit 7a77bd6c79
4 changed files with 18 additions and 12 deletions
+2 -1
View File
@@ -20,5 +20,6 @@
"editor.formatOnSave": true, "editor.formatOnSave": true,
"[svelte]": { "[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode" "editor.defaultFormatter": "svelte.svelte-vscode"
} },
"vitest.disableWorkspaceWarning": true
} }
@@ -52,13 +52,14 @@
$: onCourseIdChange(courseId); $: onCourseIdChange(courseId);
$: { $: {
console.log('isOrgAdmin', $isOrgAdmin);
const user = $group.people.find((person) => person.profile_id === $profile.id); const user = $group.people.find((person) => person.profile_id === $profile.id);
if (user) { if (user) {
$globalStore.isStudent = user.role_id === 3; $globalStore.isStudent = user.role_id === 3;
filterPollsByStatus($globalStore.isStudent); filterPollsByStatus($globalStore.isStudent);
} else if (!$isOrgAdmin && $profile.id && $group.people.length) { } else if ($isOrgAdmin === false && $profile.id && $group.people.length) {
// Current User doesn't have permission to view // Current User doesn't h ave permission to view
isPermitted = false; isPermitted = false;
} }
} }
@@ -76,7 +77,7 @@
<Modal open={!isPermitted} width="w-96" modalHeading={$t('course.not_permitted.header')}> <Modal open={!isPermitted} width="w-96" modalHeading={$t('course.not_permitted.header')}>
<div> <div>
<p class="dark:text-white text-md text-center"> <p class="text-md text-center dark:text-white">
{$t('course.not_permitted.body')} {$t('course.not_permitted.body')}
</p> </p>
@@ -134,13 +134,13 @@
$: fetchTeam($currentOrg.id); $: fetchTeam($currentOrg.id);
</script> </script>
<Grid class="border rounded border-gray-200 dark:border-neutral-600 w-full mt-5 relative"> <Grid class="relative mt-5 w-full rounded border border-gray-200 dark:border-neutral-600">
<Row class="py-7 border-bottom-c"> <Row class="border-bottom-c py-7">
<Column sm={2} md={2} lg={4} class="text-lg" <Column sm={2} md={2} lg={4} class="text-lg"
><SectionTitle>{$t('course.navItem.people.teams.add')}</SectionTitle></Column ><SectionTitle>{$t('course.navItem.people.teams.add')}</SectionTitle></Column
> >
<Column sm={2} md={6} lg={8}> <Column sm={2} md={6} lg={8}>
<p class="text-md text-gray-500 dark:text-white mb-5"> <p class="text-md mb-5 text-gray-500 dark:text-white">
{$t('course.navItem.people.teams.add_team')} {$t('course.navItem.people.teams.add_team')}
</p> </p>
@@ -174,7 +174,7 @@
</Column> </Column>
</Row> </Row>
<Row class="py-7 border-bottom-c"> <Row class="border-bottom-c py-7">
<Column sm={2} md={2} lg={4} class="text-lg" <Column sm={2} md={2} lg={4} class="text-lg"
><SectionTitle>{$t('course.navItem.people.teams.members')}</SectionTitle></Column ><SectionTitle>{$t('course.navItem.people.teams.members')}</SectionTitle></Column
> >
@@ -183,9 +183,9 @@
<Moon /> <Moon />
{:else} {:else}
{#each $orgTeam as teamMember} {#each $orgTeam as teamMember}
<div class="flex justify-between items-center mb-5"> <div class="mb-5 flex items-center justify-between">
<div class="flex"> <div class="flex">
<p class="text-sm text-gray-500 dark:text-white mr-3"> <p class="mr-3 text-sm text-gray-500 dark:text-white">
{teamMember.email} {teamMember.email}
</p> </p>
<TextChip value={$t(teamMember.role)} className="text-xs mr-3" size="sm" /> <TextChip value={$t(teamMember.role)} className="text-xs mr-3" size="sm" />
+6 -2
View File
@@ -3,11 +3,11 @@ import { browser, dev } from '$app/environment';
import { derived, writable } from 'svelte/store'; import { derived, writable } from 'svelte/store';
import { PLAN } from 'shared/src/plans/constants'; import { PLAN } from 'shared/src/plans/constants';
import { PUBLIC_IS_SELFHOSTED } from '$env/static/public';
import { ROLE } from '$lib/utils/constants/roles'; import { ROLE } from '$lib/utils/constants/roles';
import { STEPS } from '../constants/quiz'; import { STEPS } from '../constants/quiz';
import type { UserLessonDataType } from '$lib/utils/types'; import type { UserLessonDataType } from '$lib/utils/types';
import type { Writable } from 'svelte/store'; import type { Writable } from 'svelte/store';
import { PUBLIC_IS_SELFHOSTED } from '$env/static/public';
// Trigger build // Trigger build
export const defaultCurrentOrgState: CurrentOrg = { export const defaultCurrentOrgState: CurrentOrg = {
@@ -33,7 +33,11 @@ export const orgs = writable<CurrentOrg[]>([]);
export const currentOrg: Writable<CurrentOrg> = writable(defaultCurrentOrgState); export const currentOrg: Writable<CurrentOrg> = writable(defaultCurrentOrgState);
export const orgAudience = writable<OrgAudience[]>([]); export const orgAudience = writable<OrgAudience[]>([]);
export const orgTeam = writable<OrgTeamMember[]>([]); export const orgTeam = writable<OrgTeamMember[]>([]);
export const isOrgAdmin = derived(currentOrg, ($currentOrg) => $currentOrg.role_id === ROLE.ADMIN); export const isOrgAdmin = derived(currentOrg, ($currentOrg) => {
if ($currentOrg.role_id === 0) return null;
return $currentOrg.role_id === ROLE.ADMIN;
});
const getActivePlan = (org: CurrentOrg) => { const getActivePlan = (org: CurrentOrg) => {
return org.organization_plan.find((p) => p.is_active); return org.organization_plan.find((p) => p.is_active);