added dev route to backend to change current role

This commit is contained in:
Aaro Koivukangas
2025-12-13 17:25:21 +02:00
parent cf9dbdae6f
commit d212ea55a4
4 changed files with 80 additions and 35 deletions
+38
View File
@@ -0,0 +1,38 @@
const test_users = {
student: {
employeenumber: '',
mail: '',
hypersonstudentid: '112345701',
uid: 'johnsmith',
givenname: 'John',
sn: 'Smith',
},
instructor: {
employeenumber: '',
mail: '',
hypersonstudentid: '112345699',
uid: 'olliohj',
givenname: 'Olli',
sn: 'Ohjaaja',
},
admin: {
employeenumber: '',
mail: '',
hypersonstudentid: '011120775',
uid: 'mluukkai',
givenname: 'Matti',
sn: 'Luukkainen',
},
}
// Used in fake_shibbo middleware
//
// NOTE: This has to be an object because by default
// js imports are copies of the values but objects
// are passed by reference (like pointers in c/cpp)
let test_user = { test_user: test_users.student }
module.exports = {
test_user,
test_users
}
+31
View File
@@ -0,0 +1,31 @@
const devRouter = require('express').Router()
const { test_user, test_users } = require('../config/dev')
console.info('Initial user', test_user.test_user)
// This is not the best place for this, but it was the most simple
// solution, as I didn't want to share state between middlewares and index.js
// and test_user is a shared local var between router and fake_shibbo.
devRouter.post('/', (req, res) => {
const role = req.body.role
switch (role) {
case 'student':
test_user.test_user = test_users.student
break
case 'instructor':
test_user.test_user = test_users.instructor
break
case 'admin':
test_user.test_user = test_users.admin
break
default:
console.warn('Didn\'t match any, defaulting to student')
test_user.test_user = test_users.student
break
}
console.info('Logged in as', test_user.test_user)
return res.status(200).json({ role })
})
module.exports = devRouter
+3
View File
@@ -60,6 +60,7 @@ const instructorTimeLogsRouter = require('./controllers/instructorTimeLogs')
const sprintRouter = require('./controllers/sprints')
const groupSprintSummaryRouter = require('./controllers/groupSprintSummary')
const tagsRouter = require('./controllers/tags')
const devRouter = require('./controllers/dev')
app.use('/api/login', loginRouter)
app.use('/api/logout', logoutRouter)
app.use('/api/topics', topicsRouter)
@@ -83,6 +84,8 @@ app.use('/api/instructorTimeLogs', instructorTimeLogsRouter)
app.use('/api/sprints', sprintRouter)
app.use('/api/groupSprintSummary', groupSprintSummaryRouter)
app.use('/api/tags', tagsRouter)
if (process.env.NODE_ENV === 'development')
app.use('/api/role', devRouter)
console.log('NODE_ENV:', process.env.NODE_ENV)
+8 -35
View File
@@ -1,6 +1,7 @@
// @ts-check
const jwt = require('jsonwebtoken')
const config = require('./config')
const { test_user } = require('./config/dev')
/**
* @typedef {import("express").Request} Request
@@ -100,42 +101,14 @@ const checkAdmin = (req, res, next) => {
/** @type {RequestHandler} */
const fakeshibbo = (req, res, next) => {
const test_users = {
student: {
employeenumber: '',
mail: '',
hypersonstudentid: '112345701',
uid: 'johnsmith',
givenname: 'John',
sn: 'Smith',
},
instructor: {
employeenumber: '',
mail: '',
hypersonstudentid: '112345699',
uid: 'olliohj',
givenname: 'Olli',
sn: 'Ohjaaja',
},
admin: {
employeenumber: '',
mail: '',
hypersonstudentid: '011120775',
uid: 'mluukkai',
givenname: 'Matti',
sn: 'Luukkainen',
},
}
const user = test_user.test_user
// select one of the following: student, instructor, admin
const test_user = test_users.admin
req.headers.employeenumber = test_user.employeenumber
req.headers.mail = test_user.mail
req.headers.hypersonstudentid = test_user.hypersonstudentid
req.headers.uid = test_user.uid
req.headers.givenname = test_user.givenname
req.headers.sn = test_user.sn
req.headers.employeenumber = user.employeenumber
req.headers.mail = user.mail
req.headers.hypersonstudentid = user.hypersonstudentid
req.headers.uid = user.uid
req.headers.givenname = user.givenname
req.headers.sn = user.sn
next()
}