Skip to content

Commit

Permalink
Implement switching users in session
Browse files Browse the repository at this point in the history
  • Loading branch information
MytsV committed Aug 8, 2024
1 parent 190c618 commit 8ccd5ab
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/pages/api/auth/switch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import {addOrUpdateSessionUser, withSessionRoute} from "@/lib/infrastructure/auth/session-utils"
import { IronSession } from "iron-session"
import { NextApiRequest, NextApiResponse } from "next"

async function switchUsers(req: NextApiRequest, res: NextApiResponse) {
const session: IronSession = req.session
const { account, callbackUrl } = req.query

if (account === undefined) {
res.status(400).json({ message: 'Account is not specified' })
return
}

if (session.allUsers === undefined) {
res.status(400).json({ message: 'No authentications found' })
return
}

const userIdx = session.allUsers?.findIndex((sessionUser) => sessionUser.rucioAccount === account)

if (userIdx === -1) {
res.status(400).json({ message: 'No authentication found for the specified account' })
return
}

const user = session.allUsers?.at(userIdx!)
await addOrUpdateSessionUser(session, user!, true)
res.redirect(callbackUrl as string ?? '/dashboard')
}

export default withSessionRoute(switchUsers)

0 comments on commit 8ccd5ab

Please sign in to comment.