@@ -226,133 +226,6 @@ const membershipPlugin: FastifyPluginAsync = async (fastify, _options) => {
226226 . send ( { givenName, surname, netId, isPaidMember : false } ) ;
227227 } ,
228228 ) ;
229- fastify . withTypeProvider < FastifyZodOpenApiTypeProvider > ( ) . get (
230- "/:netId" ,
231- {
232- schema : withTags ( [ "Membership" ] , {
233- deprecated : true ,
234- description : "[DEPRECATED] DO NOT USE!" ,
235- params : z . object ( { netId : illinoisNetId } ) ,
236- querystring : z . object ( {
237- list : z . string ( ) . min ( 1 ) . optional ( ) . meta ( {
238- description :
239- "Membership list to check from (defaults to ACM Paid Member list)." ,
240- } ) ,
241- } ) ,
242- summary :
243- "Check ACM @ UIUC paid membership (or partner organization membership) status." ,
244- response : {
245- 200 : {
246- description : "List membership status." ,
247- content : {
248- "application/json" : {
249- schema : z
250- . object ( {
251- netId : illinoisNetId ,
252- list : z . optional ( z . string ( ) . min ( 1 ) ) ,
253- isPaidMember : z . boolean ( ) ,
254- } )
255- . meta ( {
256- example : {
257- netId : "rjjones" ,
258- isPaidMember : false ,
259- } ,
260- } ) ,
261- } ,
262- } ,
263- } ,
264- } ,
265- } ) ,
266- } ,
267- async ( request , reply ) => {
268- const netId = request . params . netId . toLowerCase ( ) ;
269- const list = request . query . list || "acmpaid" ;
270- const cacheKey = `membership:${ netId } :${ list } ` ;
271- const result = await getKey < { isMember : boolean } > ( {
272- redisClient : fastify . redisClient ,
273- key : cacheKey ,
274- logger : request . log ,
275- } ) ;
276- if ( result ) {
277- return reply . header ( "X-ACM-Data-Source" , "cache" ) . send ( {
278- netId,
279- list : list === "acmpaid" ? undefined : list ,
280- isPaidMember : result . isMember ,
281- } ) ;
282- }
283- if ( list !== "acmpaid" ) {
284- const isMember = await checkExternalMembership (
285- netId ,
286- list ,
287- fastify . dynamoClient ,
288- ) ;
289- await setKey ( {
290- redisClient : fastify . redisClient ,
291- key : cacheKey ,
292- data : JSON . stringify ( { isMember } ) ,
293- expiresIn : MEMBER_CACHE_SECONDS ,
294- logger : request . log ,
295- } ) ;
296- return reply . header ( "X-ACM-Data-Source" , "dynamo" ) . send ( {
297- netId,
298- list,
299- isPaidMember : isMember ,
300- } ) ;
301- }
302- const isDynamoMember = await checkPaidMembershipFromTable (
303- netId ,
304- fastify . dynamoClient ,
305- ) ;
306- if ( isDynamoMember ) {
307- await setKey ( {
308- redisClient : fastify . redisClient ,
309- key : cacheKey ,
310- data : JSON . stringify ( { isMember : true } ) ,
311- expiresIn : MEMBER_CACHE_SECONDS ,
312- logger : request . log ,
313- } ) ;
314- return reply
315- . header ( "X-ACM-Data-Source" , "dynamo" )
316- . send ( { netId, isPaidMember : true } ) ;
317- }
318- const entraIdToken = await getEntraIdToken ( {
319- clients : await getAuthorizedClients ( ) ,
320- clientId : fastify . environmentConfig . AadValidClientId ,
321- secretName : genericConfig . EntraSecretName ,
322- logger : request . log ,
323- } ) ;
324- const paidMemberGroup = fastify . environmentConfig . PaidMemberGroupId ;
325- const isAadMember = await checkPaidMembershipFromEntra (
326- netId ,
327- entraIdToken ,
328- paidMemberGroup ,
329- ) ;
330- if ( isAadMember ) {
331- await setKey ( {
332- redisClient : fastify . redisClient ,
333- key : cacheKey ,
334- data : JSON . stringify ( { isMember : true } ) ,
335- expiresIn : MEMBER_CACHE_SECONDS ,
336- logger : request . log ,
337- } ) ;
338- reply
339- . header ( "X-ACM-Data-Source" , "aad" )
340- . send ( { netId, isPaidMember : true } ) ;
341- await setPaidMembershipInTable ( netId , fastify . dynamoClient ) ;
342- return ;
343- }
344- await setKey ( {
345- redisClient : fastify . redisClient ,
346- key : cacheKey ,
347- data : JSON . stringify ( { isMember : false } ) ,
348- expiresIn : MEMBER_CACHE_SECONDS ,
349- logger : request . log ,
350- } ) ;
351- return reply
352- . header ( "X-ACM-Data-Source" , "aad" )
353- . send ( { netId, isPaidMember : false } ) ;
354- } ,
355- ) ;
356229 fastify . withTypeProvider < FastifyZodOpenApiTypeProvider > ( ) . get (
357230 "/externalList" ,
358231 {
0 commit comments