@@ -9,12 +9,15 @@ const adminSupabase = supabaseServiceKey ?
99 createClient ( supabaseUrl , supabaseServiceKey ) :
1010 null ;
1111
12- // List of authorized admin user IDs and usernames
13- const AUTHORIZED_ADMINS = [
14- 'f8adc96a-496f-412b-af15-20bd3cd66b3c' , // Original admin ID
15- 'Sparths' , // Admin username
16- 'sparths' , // Lowercase version
17- ] ;
12+ // Get admin list from environment variables
13+ const getAuthorizedAdmins = ( ) : string [ ] => {
14+ const adminList = process . env . AUTHORIZED_ADMINS ;
15+ if ( ! adminList ) {
16+ console . error ( 'AUTHORIZED_ADMINS environment variable not set' ) ;
17+ return [ ] ;
18+ }
19+ return adminList . split ( ',' ) . map ( admin => admin . trim ( ) ) ;
20+ } ;
1821
1922// Input sanitization
2023const sanitizeInput = ( input : string ) : string => {
@@ -36,9 +39,17 @@ export async function POST(request: Request) {
3639 }
3740
3841 const sanitizedUserId = sanitizeInput ( userId ) ;
42+ const authorizedAdmins = getAuthorizedAdmins ( ) ;
43+
44+ if ( authorizedAdmins . length === 0 ) {
45+ return NextResponse . json (
46+ { error : "Admin configuration error" } ,
47+ { status : 500 }
48+ ) ;
49+ }
3950
4051 // First check if user ID is directly in the authorized list
41- if ( AUTHORIZED_ADMINS . includes ( sanitizedUserId ) ) {
52+ if ( authorizedAdmins . includes ( sanitizedUserId ) ) {
4253 console . log ( "User found in direct admin list:" , sanitizedUserId ) ;
4354
4455 // Create admin session token for subsequent requests
@@ -55,7 +66,7 @@ export async function POST(request: Request) {
5566 success : true ,
5667 isAdmin : true ,
5768 userId : sanitizedUserId ,
58- adminToken : adminToken // Return this token for subsequent admin API calls
69+ adminToken : adminToken
5970 } ) ;
6071 }
6172
@@ -89,10 +100,10 @@ export async function POST(request: Request) {
89100 console . log ( "Found user in database:" , user ) ;
90101
91102 // Check if user ID, username, or display_name is in admin list
92- const isAdmin = AUTHORIZED_ADMINS . includes ( user . id ) ||
93- AUTHORIZED_ADMINS . includes ( user . username ) ||
94- AUTHORIZED_ADMINS . includes ( user . username . toLowerCase ( ) ) ||
95- AUTHORIZED_ADMINS . includes ( user . display_name ) ;
103+ const isAdmin = authorizedAdmins . includes ( user . id ) ||
104+ authorizedAdmins . includes ( user . username ) ||
105+ authorizedAdmins . includes ( user . username . toLowerCase ( ) ) ||
106+ authorizedAdmins . includes ( user . display_name ) ;
96107
97108 if ( isAdmin ) {
98109 console . log ( "User verified as admin" ) ;
@@ -111,7 +122,7 @@ export async function POST(request: Request) {
111122 success : true ,
112123 isAdmin : true ,
113124 userId : sanitizedUserId ,
114- adminToken : adminToken // Return this token for subsequent admin API calls
125+ adminToken : adminToken
115126 } ) ;
116127 } else {
117128 console . log ( "User not in admin list:" , {
@@ -163,9 +174,10 @@ export async function GET(request: Request) {
163174 }
164175
165176 const sanitizedUserId = sanitizeInput ( userId ) ;
177+ const authorizedAdmins = getAuthorizedAdmins ( ) ;
166178
167179 // Quick check against admin list
168- const isAdmin = AUTHORIZED_ADMINS . includes ( sanitizedUserId ) ;
180+ const isAdmin = authorizedAdmins . includes ( sanitizedUserId ) ;
169181
170182 // If not found directly, check database
171183 if ( ! isAdmin && adminSupabase ) {
@@ -177,10 +189,10 @@ export async function GET(request: Request) {
177189 . single ( ) ;
178190
179191 if ( ! error && user ) {
180- const dbIsAdmin = AUTHORIZED_ADMINS . includes ( user . id ) ||
181- AUTHORIZED_ADMINS . includes ( user . username ) ||
182- AUTHORIZED_ADMINS . includes ( user . username . toLowerCase ( ) ) ||
183- AUTHORIZED_ADMINS . includes ( user . display_name ) ;
192+ const dbIsAdmin = authorizedAdmins . includes ( user . id ) ||
193+ authorizedAdmins . includes ( user . username ) ||
194+ authorizedAdmins . includes ( user . username . toLowerCase ( ) ) ||
195+ authorizedAdmins . includes ( user . display_name ) ;
184196
185197 return NextResponse . json ( {
186198 isAdmin : dbIsAdmin ,
0 commit comments