Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions app/controllers/account.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { UserRole } from '../enums.js'

export const accountController = {
/**
* @type {RequestHandler}
*/
changeRole(request, response) {
request.session.data.token.role = request.body.role
const { account } = request.app.locals

request.session.data.token = {
...account,
...{ role: request.body.role }
}

return response.redirect(
/** @type {string} */ (request.query.referrer || '/home')
Expand All @@ -16,27 +19,19 @@ export const accountController = {
* @type {RequestHandler}
*/
cis2(request, response) {
const { data } = request.session

const user = Object.values(data.users).at(-1)
user.role = UserRole.Nurse

request.session.data.token = user

return response.redirect('/account/change-role')
},

/**
* @type {RequestHandler}
*/
login(request, response) {
const { data } = request.session
const { role } = request.query

const user = Object.values(data.users).at(-1)
user.role = role || UserRole.Nurse
const { account } = request.app.locals

request.session.data.token = user
request.session.data.token = {
...account,
...{ role: request.query.role }
}

return response.redirect('/home')
},
Expand All @@ -45,7 +40,8 @@ export const accountController = {
* @type {RequestHandler}
*/
logout(request, response) {
delete request.session.data.token
// Delete role selected when signing in via CIS2
delete request.session.data.role

return response.redirect('/start')
}
Expand Down
3 changes: 2 additions & 1 deletion app/middleware/authentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import { User } from '../models.js'
export const authentication = (request, response, next) => {
const { data } = request.session

const user = data.token ? new User(data.token) : {}
// Get user from logged in user, or default to last user in session data
const user = data.token ? new User(data.token) : User.findAll(data).at(-1)

// Vaccine method(s)
if ([UserRole.Nurse, UserRole.NursePrescriber].includes(user.role)) {
Expand Down