diff --git a/src/controllers/authController.ts b/src/controllers/authController.ts index 681de7d..379f880 100644 --- a/src/controllers/authController.ts +++ b/src/controllers/authController.ts @@ -78,7 +78,7 @@ export const signIn = async (req: Request, res: Response) => { res.status(200).json({ message: 'User signed in.', - data: { id: user.id, token: token, expiresIn: ms(process.env.JWT_EXPIRATION as string) }, + data: { id: user.id, acceptedTerms: user.acceptedTerms, token: token, expiresIn: ms(process.env.JWT_EXPIRATION as string) }, }); } catch (error: any) { res.status(400).json(errorFormatter(error)); @@ -131,3 +131,26 @@ export const checkSignIn = async (req: Request, res: Response) => { res.status(400).json(errorFormatter(error)); } }; + +export const acceptTerms = async (req: Request, res: Response) => { + try { + const user = req.user as User; + + if (user.id === 1) { + throw new Error('Cannot accept terms as anonymous user.'); + } + + const updatedUser = await prismaClient.user.update({ + where: { + id: user.id, + }, + data: { + acceptedTerms: true, + }, + }); + + res.status(200).json({ message: 'Terms accepted.', data: { id: updatedUser.id, acceptedTerms: updatedUser.acceptedTerms } }); + } catch (error) { + res.status(400).json(errorFormatter(error)); + } +}; diff --git a/src/routes/authRoutes.ts b/src/routes/authRoutes.ts index 2035146..512df15 100644 --- a/src/routes/authRoutes.ts +++ b/src/routes/authRoutes.ts @@ -1,7 +1,7 @@ import express from 'express'; import uploader from '../services/multerUploader'; import passport from '../services/passportAuth'; -import { signIn, signUp, renewSignIn, checkSignIn, passwordlessSignIn } from '../controllers/authController'; +import { signIn, signUp, renewSignIn, checkSignIn, passwordlessSignIn, acceptTerms } from '../controllers/authController'; /** * @swagger @@ -155,4 +155,6 @@ router.post('/renewSignIn', passport.authenticate('jwt', { session: false }), up router.get('/checkSignIn', passport.authenticate('jwt', { session: false }), uploader.none(), checkSignIn); +router.get('/acceptTerms', passport.authenticate('jwt', { session: false }), uploader.none(), acceptTerms); + export default router;