This commit is contained in:
2025-12-26 17:55:00 -07:00
parent ae1fb10898
commit 0140c5b39b
35 changed files with 1160 additions and 513 deletions

View File

@@ -0,0 +1,47 @@
import type { APIRoute } from 'astro';
import { db } from '../../../db';
import { organizations, members } from '../../../db/schema';
import { eq } from 'drizzle-orm';
export const POST: APIRoute = async ({ request, locals, redirect }) => {
const user = locals.user;
if (!user) {
return redirect('/login');
}
const formData = await request.formData();
const organizationId = formData.get('organizationId') as string;
const name = formData.get('name') as string;
if (!organizationId || !name || name.trim().length === 0) {
return new Response('Organization ID and name are required', { status: 400 });
}
try {
// Verify user is admin/owner of this organization
const membership = await db.select()
.from(members)
.where(eq(members.userId, user.id))
.get();
if (!membership || membership.organizationId !== organizationId) {
return new Response('Not authorized', { status: 403 });
}
const isAdmin = membership.role === 'owner' || membership.role === 'admin';
if (!isAdmin) {
return new Response('Only owners and admins can update organization settings', { status: 403 });
}
// Update organization name
await db.update(organizations)
.set({ name: name.trim() })
.where(eq(organizations.id, organizationId))
.run();
return redirect('/dashboard/team/settings?success=org-name');
} catch (error) {
console.error('Error updating organization name:', error);
return new Response('Failed to update organization name', { status: 500 });
}
};