From a9c8fbb1fd1d6b30b25720b1509eb1f91280b1ca Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Mon, 7 Aug 2023 06:18:30 +0000 Subject: [PATCH] CLASSROOMIO-T-100: Select only courses belonging to current org and current user is a member CLASSROOMIO-T-100: Update condition for fetchCourses CLASSROOMIO-T-100: Select only courses belonging to current org and current user is a member Co-authored-by: Rotimi Best Merge-request: CLASSROOMIO-MR-35 Merged-by: Best Admin --- src/lib/components/Courses/api.js | 11 +++++--- .../components/NewCourseModal/index.svelte | 15 ++++++----- src/routes/+layout.js | 2 -- src/routes/org/[slug]/courses/+page.svelte | 25 ++++++------------- 4 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/lib/components/Courses/api.js b/src/lib/components/Courses/api.js index 467788d9..7107fff8 100644 --- a/src/lib/components/Courses/api.js +++ b/src/lib/components/Courses/api.js @@ -1,16 +1,19 @@ import { supabase } from '$lib/utils/functions/supabase'; -export async function fetchCourses(profileId) { - if (!profileId) return; +export async function fetchCourses(profileId, orgId) { + if (!orgId || !profileId) return; + // Gets courses for a particular organisation where the current logged in user is a groupmember const { data: allCourses } = await supabase - .rpc('get_courses') + .rpc('get_courses', { + org_id_arg: orgId + }) .eq('profile_id', profileId); console.log(`allCourses`, allCourses); if (!Array.isArray(allCourses)) { return { - allCourses: [], + allCourses: [] }; } diff --git a/src/lib/components/Courses/components/NewCourseModal/index.svelte b/src/lib/components/Courses/components/NewCourseModal/index.svelte index f8d4f00e..d52aee21 100644 --- a/src/lib/components/Courses/components/NewCourseModal/index.svelte +++ b/src/lib/components/Courses/components/NewCourseModal/index.svelte @@ -12,12 +12,11 @@ import { currentOrg } from '$lib/utils/store/org'; let errors = { - emails: '', + emails: '' }; async function createCourse(e) { - const { hasError, fieldErrors, students, tutors } = - validateForm($createCourseModal); + const { hasError, fieldErrors, students, tutors } = validateForm($createCourseModal); errors = fieldErrors; if (hasError) return; @@ -38,7 +37,7 @@ .insert({ title, description, - group_id, + group_id }) .select(); console.log(`newCourse`, newCourse); @@ -52,7 +51,7 @@ profile_id: $profile.id, email: $profile.email, group_id, - role_id: ROLE.TUTOR, + role_id: ROLE.TUTOR }); let membersStack = []; @@ -62,7 +61,7 @@ membersStack.push({ email: student, group_id, - role_id: ROLE.STUDENT, + role_id: ROLE.STUDENT }); } @@ -70,7 +69,7 @@ membersStack.push({ email: tutor, group_id, - role_id: ROLE.TUTOR, + role_id: ROLE.TUTOR }); } @@ -95,7 +94,7 @@ { - console.log('url', url.hostname); - if (url.hostname === 'classroomio.com') { throw redirect(301, 'https://about.classroomio.com'); } diff --git a/src/routes/org/[slug]/courses/+page.svelte b/src/routes/org/[slug]/courses/+page.svelte index beeb28f4..69e31727 100644 --- a/src/routes/org/[slug]/courses/+page.svelte +++ b/src/routes/org/[slug]/courses/+page.svelte @@ -6,12 +6,9 @@ import Courses from '$lib/components/Courses/index.svelte'; import NewCourseModal from '$lib/components/Courses/components/NewCourseModal/index.svelte'; import PrimaryButton from '$lib/components/PrimaryButton/index.svelte'; - import { - courses, - createCourseModal, - courseMetaDeta, - } from '$lib/components/Courses/store'; + import { courses, createCourseModal, courseMetaDeta } from '$lib/components/Courses/store'; import { setProfileIdOfGroupMember } from '$lib/utils/services/courses'; + import { currentOrg } from '$lib/utils/store/org.js'; export let data; let { allCourses, cantFetch } = data; @@ -22,16 +19,13 @@ $createCourseModal.open = true; } - async function getCourses(userId) { - if (cantFetch && typeof cantFetch === 'boolean' && !allCourses.length) { + async function getCourses(userId, orgId) { + if (cantFetch && typeof cantFetch === 'boolean' && !allCourses.length && orgId) { $courseMetaDeta.isLoading = true; - const updatedProfile = await setProfileIdOfGroupMember( - $profile.email, - userId - ); + const updatedProfile = await setProfileIdOfGroupMember($profile.email, userId); console.log(`updatedProfile`, updatedProfile); - const coursesResult = await fetchCourses(userId); + const coursesResult = await fetchCourses(userId, orgId); console.log(`coursesResult`, coursesResult); $courseMetaDeta.isLoading = false; @@ -46,7 +40,7 @@ courses.set(allCourses); }); - $: getCourses($profile.id); + $: getCourses($profile.id, $currentOrg.id); @@ -57,10 +51,7 @@

Courses

- ($createCourseModal.open = true)} - /> + ($createCourseModal.open = true)} />