68 lines
2.3 KiB
Plaintext
68 lines
2.3 KiB
Plaintext
---
|
|
import DashboardLayout from '../../../layouts/DashboardLayout.astro';
|
|
import { Icon } from 'astro-icon/components';
|
|
import { db } from '../../../db';
|
|
import { members } from '../../../db/schema';
|
|
import { eq } from 'drizzle-orm';
|
|
|
|
const user = Astro.locals.user;
|
|
if (!user) return Astro.redirect('/login');
|
|
|
|
const userMembership = await db.select()
|
|
.from(members)
|
|
.where(eq(members.userId, user.id))
|
|
.get();
|
|
|
|
if (!userMembership) return Astro.redirect('/dashboard');
|
|
|
|
const isAdmin = userMembership.role === 'owner' || userMembership.role === 'admin';
|
|
if (!isAdmin) return Astro.redirect('/dashboard/team');
|
|
---
|
|
|
|
<DashboardLayout title="Invite Team Member - Zamaan">
|
|
<div class="max-w-2xl mx-auto">
|
|
<h1 class="text-3xl font-bold mb-6">Invite Team Member</h1>
|
|
|
|
<form method="POST" action="/api/team/invite" class="card bg-base-100 shadow-xl border border-base-200">
|
|
<div class="card-body">
|
|
<div class="alert alert-info mb-4">
|
|
<Icon name="heroicons:information-circle" class="w-6 h-6" />
|
|
<span>The user must already have an account. They'll be added to your organization.</span>
|
|
</div>
|
|
|
|
<div class="form-control">
|
|
<label class="label" for="email">
|
|
<span class="label-text">Email Address</span>
|
|
</label>
|
|
<input
|
|
type="email"
|
|
id="email"
|
|
name="email"
|
|
placeholder="user@example.com"
|
|
class="input input-bordered"
|
|
required
|
|
/>
|
|
</div>
|
|
|
|
<div class="form-control">
|
|
<label class="label" for="role">
|
|
<span class="label-text">Role</span>
|
|
</label>
|
|
<select id="role" name="role" class="select select-bordered" required>
|
|
<option value="member">Member</option>
|
|
<option value="admin">Admin</option>
|
|
</select>
|
|
<label class="label">
|
|
<span class="label-text-alt">Members can track time. Admins can manage team and clients.</span>
|
|
</label>
|
|
</div>
|
|
|
|
<div class="card-actions justify-end mt-6">
|
|
<a href="/dashboard/team" class="btn btn-ghost">Cancel</a>
|
|
<button type="submit" class="btn btn-primary">Invite Member</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</DashboardLayout>
|