11import { NextRequest , NextResponse } from "next/server" ;
2- import { adminAuth , adminDb } from "@/lib/firebase/admin" ;
2+ import { adminDb } from "@/lib/firebase/admin" ;
33import { Resend } from "resend" ;
44import { Timestamp } from "firebase-admin/firestore" ;
5+ import { getTokens } from "next-firebase-auth-edge" ;
6+ import { authConfig } from "@/lib/firebase/auth-edge" ;
57
68const APP_URL = process . env . NEXT_PUBLIC_APP_URL ?? "http://localhost:3000" ;
79const isDev = process . env . NODE_ENV === "development" ;
@@ -28,22 +30,17 @@ async function sendInviteEmail(to: string, signupLink: string) {
2830
2931export async function POST ( request : NextRequest ) {
3032 try {
31- const sessionCookie = request . cookies . get ( "__session" ) ?. value ;
32- if ( ! sessionCookie ) {
33- return NextResponse . json ( { error : "Unauthorized" } , { status : 401 } ) ;
34- }
35-
36- const decoded = await adminAuth . verifySessionCookie ( sessionCookie , true ) ;
37- const userDoc = await adminDb . collection ( "users" ) . doc ( decoded . uid ) . get ( ) ;
38- const userData = userDoc . data ( ) ;
33+ const tokens = await getTokens ( request . cookies , authConfig ) ;
34+ if ( ! tokens ) return NextResponse . json ( { error : "Unauthorized" } , { status : 401 } ) ;
3935
40- if ( ! userData || userData . role !== "admin" ) {
36+ const userDoc = await adminDb . collection ( "users" ) . doc ( tokens . decodedToken . uid ) . get ( ) ;
37+ if ( userDoc . data ( ) ?. role !== "admin" ) {
4138 return NextResponse . json ( { error : "Forbidden" } , { status : 403 } ) ;
4239 }
4340
44- const { email } = await request . json ( ) ;
45- if ( ! email ) {
46- return NextResponse . json ( { error : "Email required" } , { status : 400 } ) ;
41+ const { email, firstName , lastName } = await request . json ( ) ;
42+ if ( ! email || ! firstName || ! lastName ) {
43+ return NextResponse . json ( { error : "Email, firstName, and lastName are required" } , { status : 400 } ) ;
4744 }
4845
4946 const code = crypto . randomUUID ( ) ;
@@ -54,8 +51,10 @@ export async function POST(request: NextRequest) {
5451 await adminDb . collection ( "invitations" ) . doc ( code ) . set ( {
5552 code,
5653 email,
54+ firstName,
55+ lastName,
5756 sentAt : Timestamp . now ( ) ,
58- sentBy : decoded . uid ,
57+ sentBy : tokens . decodedToken . uid ,
5958 } ) ;
6059
6160 return NextResponse . json ( { ok : true } ) ;
0 commit comments