New features user management Google Calendar integration
This commit is contained in:
61
src/routes/[orgSlug]/settings/+page.server.ts
Normal file
61
src/routes/[orgSlug]/settings/+page.server.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
import type { PageServerLoad } from './$types';
|
||||
|
||||
export const load: PageServerLoad = async ({ parent, locals }) => {
|
||||
const { org, userRole } = await parent();
|
||||
|
||||
// Only admins and owners can access settings
|
||||
if (userRole !== 'owner' && userRole !== 'admin') {
|
||||
redirect(303, `/${(org as any).slug}`);
|
||||
}
|
||||
|
||||
const orgId = (org as any).id;
|
||||
|
||||
// Get org members with profiles
|
||||
const { data: members } = await locals.supabase
|
||||
.from('org_members')
|
||||
.select(`
|
||||
id,
|
||||
user_id,
|
||||
role,
|
||||
role_id,
|
||||
created_at,
|
||||
profiles:user_id (
|
||||
id,
|
||||
email,
|
||||
full_name,
|
||||
avatar_url
|
||||
)
|
||||
`)
|
||||
.eq('org_id', orgId);
|
||||
|
||||
// Get org roles
|
||||
const { data: roles } = await locals.supabase
|
||||
.from('org_roles')
|
||||
.select('*')
|
||||
.eq('org_id', orgId)
|
||||
.order('position');
|
||||
|
||||
// Get pending invites
|
||||
const { data: invites } = await locals.supabase
|
||||
.from('org_invites')
|
||||
.select('*')
|
||||
.eq('org_id', orgId)
|
||||
.is('accepted_at', null)
|
||||
.gt('expires_at', new Date().toISOString());
|
||||
|
||||
// Get org Google Calendar connection
|
||||
const { data: orgCalendar } = await locals.supabase
|
||||
.from('org_google_calendars')
|
||||
.select('*')
|
||||
.eq('org_id', orgId)
|
||||
.single();
|
||||
|
||||
return {
|
||||
members: members ?? [],
|
||||
roles: roles ?? [],
|
||||
invites: invites ?? [],
|
||||
orgCalendar,
|
||||
userRole
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user