@@ -7,6 +7,7 @@ import { ExpressIntraUser } from '../sync/oauth';
7
7
import { getAPIClient } from '../utils' ;
8
8
import { fetchSingle42ApiPage } from '../sync/base' ;
9
9
import { syncCoalitionUser } from '../sync/coalitions_users' ;
10
+ import { CURSUS_ID } from '../env' ;
10
11
11
12
export interface QuizSessionQuestion {
12
13
question : CodamCoalitionTestQuestion ;
@@ -399,6 +400,25 @@ export const setupQuizRoutes = function(app: Express, prisma: PrismaClient): voi
399
400
}
400
401
}
401
402
else {
403
+ // Make sure the 42cursus allows for a coalition
404
+ const cursus_users = await fetchSingle42ApiPage ( api , `/cursus_users` , {
405
+ 'filter[user_id]' : user . id . toString ( ) ,
406
+ 'filter[cursus_id]' : CURSUS_ID . toString ( ) ,
407
+ } ) ;
408
+ if ( cursus_users . length === 0 ) {
409
+ console . error ( `User ${ user . login } is not enrolled in the 42cursus with ID ${ CURSUS_ID } ` ) ;
410
+ return res . status ( 412 ) . send ( { error : 'Failed to join coalition, try again later' } ) ;
411
+ }
412
+ if ( cursus_users [ 0 ] . has_coalition === false ) {
413
+ console . log ( `Patching user ${ user . login } 's cursus_user to allow for a coalition in the 42cursus...` ) ;
414
+ const response = await api . patch ( `/cursus_users/${ cursus_users [ 0 ] . id } ` , {
415
+ cursus_user : {
416
+ has_coalition : true ,
417
+ }
418
+ } ) ;
419
+ console . log ( `${ user . login } 's cursus_user patch response: ${ response . status } ${ response . statusText } ` ) ;
420
+ }
421
+
402
422
console . log ( `Creating a new IntraCoalitionUser for user ${ user . login } in coalition ${ coalitionId } ` ) ;
403
423
const response = await api . post ( '/coalitions_users' , {
404
424
coalitions_user : {
0 commit comments