@@ -106,6 +106,32 @@ export async function GET(event) {
106106 const profilePic = slackProfile [ 'profile' ] [ 'image_1024' ] ;
107107 const username = slackProfile [ 'profile' ] [ 'display_name' ] ;
108108
109+ if ( env . BETA_CHANNEL_ID && env . BETA_CHANNEL_ID . length > 0 ) {
110+ const channelMembersURL = new URL ( 'https://slack.com/api/conversations.members' ) ;
111+ channelMembersURL . searchParams . set ( 'channel' , env . BETA_CHANNEL_ID ) ;
112+
113+ const channelMembersBody = new URLSearchParams ( ) ;
114+ channelMembersBody . append ( 'token' , env . SLACK_BOT_TOKEN ?? '' ) ;
115+
116+ const channelMembersRes = await fetch ( channelMembersURL , {
117+ method : 'POST' ,
118+ body : channelMembersBody
119+ } ) ;
120+
121+ const channelMembersResJSON = await channelMembersRes . json ( ) ;
122+
123+ if ( ! channelMembersResJSON . ok ) {
124+ const redirectURL = new URL ( `${ url . protocol } //${ url . host } /auth/failed` ) ;
125+ return redirect ( 302 , redirectURL ) ;
126+ }
127+
128+ if ( ! channelMembersResJSON [ 'members' ] . includes ( slack_id ) ) {
129+ // redirect to funny url
130+ const redirectURL = new URL ( `https://www.youtube.com/watch?v=xvFZjo5PgG0` ) ;
131+ return redirect ( 302 , redirectURL ) ;
132+ }
133+ }
134+
109135 // Check Hackatime trust
110136 const hackatimeTrust = (
111137 await (
@@ -130,6 +156,11 @@ export async function GET(event) {
130156 // Create user if doesn't exist
131157 let [ databaseUser ] = await db . select ( ) . from ( user ) . where ( eq ( user . idvId , id ) ) . limit ( 1 ) ;
132158
159+ if ( databaseUser . trust === 'red' ) {
160+ // Prevent login
161+ return redirect ( 302 , 'https://fraud.land' ) ;
162+ }
163+
133164 if ( databaseUser ) {
134165 // Update user (update name and profile picture and lastLoginAt on login)
135166 await db
0 commit comments