@@ -139,8 +139,15 @@ export async function inviteMember(input: {
139139} ) {
140140 const session = await requireAdminSession ( ) ;
141141
142- const parsed = inviteMemberSchema . parse ( input ) ;
143- const email = parsed . email . toLowerCase ( ) ;
142+ const parsed = inviteMemberSchema . safeParse ( input ) ;
143+ if ( ! parsed . success ) {
144+ return {
145+ success : false as const ,
146+ error : parsed . error . issues [ 0 ] ?. message ?? "Invalid invitation details" ,
147+ } ;
148+ }
149+
150+ const email = parsed . data . email . toLowerCase ( ) ;
144151
145152 const existingUser = await db
146153 . select ( { id : user . id } )
@@ -149,7 +156,10 @@ export async function inviteMember(input: {
149156 . limit ( 1 ) ;
150157
151158 if ( existingUser . length > 0 ) {
152- throw new Error ( "A member with this email already exists" ) ;
159+ return {
160+ success : false as const ,
161+ error : "A member with this email already exists" ,
162+ } ;
153163 }
154164
155165 await db
@@ -186,7 +196,7 @@ export async function inviteMember(input: {
186196 await db . insert ( memberInvitations ) . values ( {
187197 id : randomUUID ( ) ,
188198 email,
189- role : parsed . role ,
199+ role : parsed . data . role ,
190200 tokenHash : hashInviteToken ( token ) ,
191201 status : "pending" ,
192202 invitedByUserId : session . user . id ,
@@ -196,12 +206,12 @@ export async function inviteMember(input: {
196206 const emailSent = await sendMemberInviteEmail ( {
197207 to : email ,
198208 inviterName : session . user . name ,
199- role : parsed . role ,
209+ role : parsed . data . role ,
200210 inviteUrl,
201211 } ) ;
202212
203213 revalidatePath ( "/dashboard/settings" ) ;
204- return { success : true , inviteUrl, emailSent } ;
214+ return { success : true as const , inviteUrl, emailSent } ;
205215}
206216
207217export async function revokeInvitation ( invitationId : string ) {
0 commit comments