Commit 2d343928 authored by Yechang's avatar Yechang
Browse files

feat: pending students

parent 4c989da2
Loading
Loading
Loading
Loading
Loading
+52 −24
Original line number Diff line number Diff line
@@ -42,21 +42,24 @@ export async function GET(event: RequestEvent): Promise<Response> {
		const userData = sustechUserSchema.parse(await userResponse.json());
		log.info(userData);

		const user = await db.user.findFirst({

		const guaranteeLuciaUser = async () => {
			const luciaUser = await db.luciaUser.findUnique({
				where: {
				sustechId: userData.sustech_id
					id: userData.sub
				}
			});
			if (!_.isNil(luciaUser)) {
				return luciaUser
			}

		let luciaUser: LuciaUser | null = await db.luciaUser.findUnique({
			const user = await db.user.findFirst({
				where: {
				id: userData.sub
					sustechId: userData.sustech_id
				}
			});

		if (_.isNil(luciaUser)) {
			if (!_.isNil(user)) {
				luciaUser = await db.luciaUser.create({
				return await db.luciaUser.create({
					data: {
						id: userData.sub,
						user: {
@@ -66,8 +69,9 @@ export async function GET(event: RequestEvent): Promise<Response> {
						}
					}
				});
			} else {
				luciaUser = await db.luciaUser.create({
			}

			const newLuciaUser = await db.luciaUser.create({
				data: {
					id: userData.sub,
					user: {
@@ -80,8 +84,32 @@ export async function GET(event: RequestEvent): Promise<Response> {
					}
				}
			});



			// check any pending class invitation
			const pendingClasses = await db.class.findMany({
				where: {
					pendingStudentList: {
						array_contains: userData.sustech_id,
					},
				},
			})

			await db.classesOnUsers.createMany({
				data: pendingClasses.map(c => {
					return {
						classId: c.id,
						role: 'STUDENT',
						userId: newLuciaUser.userId,
						status: 'APPROVED'
					}
				})
			})

			return newLuciaUser
		}
		const luciaUser: LuciaUser = await guaranteeLuciaUser()

		const session = await lucia.createSession(luciaUser.id, {});
		const sessionCookie = lucia.createSessionCookie(session.id);