11"use server" ;
22import { db } from "@/db" ;
3+ import { createClient } from "@/lib/utils/supabase/server" ;
34import { FormStep } from "@/lib/types/questions" ;
45import { FormFields } from "@/components/forms/applications/columns" ;
56import { sendEmail } from "@/lib/utils/forms/email" ;
@@ -11,7 +12,22 @@ export async function getForms() {
1112 return db . forms . findMany ( ) ;
1213}
1314
15+ async function requireAdmin ( ) {
16+ const supabase = createClient ( ) ;
17+ const { data, error } = await supabase . auth . getUser ( ) ;
18+ if ( error || ! data . user ) {
19+ throw new Error ( "Unauthorized" ) ;
20+ }
21+ const role = await db . roles . findUnique ( {
22+ where : { id : data . user . id } ,
23+ } ) ;
24+ if ( ! role || role . roles ?. split ( "," ) [ 0 ] !== "admin" ) {
25+ throw new Error ( "Unauthorized" ) ;
26+ }
27+ }
28+
1429export async function createForm ( data : { title : string ; description : string } ) {
30+ await requireAdmin ( ) ;
1531 return db . forms . create ( { data : { ...data , config : { } , questions : [ ] } } ) ;
1632}
1733
@@ -37,6 +53,7 @@ export async function updateForm(
3753 questions : object [ ] ;
3854 } ,
3955) {
56+ await requireAdmin ( ) ;
4057 return db . forms . update ( { where : { id } , data } ) ;
4158}
4259
@@ -168,6 +185,7 @@ export async function updateSubmissionField(
168185 value : any ,
169186 cta : boolean = false ,
170187) {
188+ await requireAdmin ( ) ;
171189 if ( tableName === "applications" ) {
172190 await db [ "applications" ] . update ( {
173191 where : { id : submissionId } ,
@@ -199,6 +217,7 @@ export async function sendStatusEmailToUser(
199217 submissionId : string ,
200218 value : string ,
201219) {
220+ await requireAdmin ( ) ;
202221 const submission = await db . submissions . findFirst ( {
203222 where : {
204223 id : submissionId ,
@@ -218,6 +237,7 @@ export async function sendStatusEmailToUser(
218237}
219238
220239export async function getAdminMembers ( ) {
240+ await requireAdmin ( ) ;
221241 const res = await db . roles . findMany ( {
222242 where : {
223243 roles : {
0 commit comments