Add role requirements to new write routes

This commit is contained in:
ShootingStar91
2024-08-26 23:05:05 +03:00
parent 3d5e48c2f7
commit d78181cce3
4 changed files with 19 additions and 9 deletions
+1 -3
View File
@@ -4,7 +4,6 @@ import { fixBigInt } from '../utils/common'
import { EditDataType, EditMetaData, LocalityDetailsType } from '../../../frontend/src/backendTypes'
import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types'
// import { deleteLocality } from '../services/write/delete'
import { writeLocality } from '../services/write/locality'
const router = Router()
@@ -23,8 +22,7 @@ router.get('/:id', async (req, res) => {
router.put(
'/',
requireOneOf([Role.Admin, Role.EditRestricted, Role.EditUnrestricted]),
// TODO: Check if edit restricted has rights to edit the locality.
requireOneOf([Role.Admin, Role.EditUnrestricted]),
async (req: Request<object, object, { locality: EditDataType<LocalityDetailsType> & EditMetaData }>, res) => {
const { comment, references, ...editedLocality } = req.body.locality
const validationErrors = validateEntireLocality(editedLocality)
+8 -2
View File
@@ -3,6 +3,8 @@ import { getAllSpecies, getSpeciesDetails } from '../services/species'
import { fixBigInt } from '../utils/common'
import { EditMetaData, SpeciesDetailsType } from '../../../frontend/src/backendTypes'
import { writeSpecies } from '../services/write/species'
import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types'
const router = Router()
@@ -18,11 +20,15 @@ router.get('/:id', async (req, res) => {
return res.status(200).send(fixBigInt(species))
})
router.put('/', async (req: Request<object, object, { species: SpeciesDetailsType & EditMetaData }>, res) => {
router.put(
'/',
requireOneOf([Role.Admin, Role.EditUnrestricted]),
async (req: Request<object, object, { species: SpeciesDetailsType & EditMetaData }>, res) => {
const editedSpecies = req.body.species
const { comment, references } = editedSpecies
const id = await writeSpecies(editedSpecies, comment, references, req.user!.initials)
return res.status(200).send({ id })
})
}
)
export default router
+3
View File
@@ -3,6 +3,8 @@ import { getAllTimeBounds, getTimeBoundDetails, getTimeBoundTimeUnits } from '..
import { fixBigInt } from '../utils/common'
import { EditDataType, EditMetaData, TimeBoundDetailsType } from '../../../frontend/src/backendTypes'
import { writeTimeBound } from '../services/write/timeBound'
import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types'
const router = Router()
@@ -26,6 +28,7 @@ router.get('/time-units/:id', async (req, res) => {
router.put(
'/',
requireOneOf([Role.Admin, Role.EditUnrestricted]),
async (req: Request<object, object, { timeBound: EditDataType<TimeBoundDetailsType> & EditMetaData }>, res) => {
const { comment, references, ...editedTimeBound } = req.body.timeBound
const result = await writeTimeBound(editedTimeBound, comment, references, req.user!.initials)
+3
View File
@@ -4,6 +4,8 @@ import { fixBigInt } from '../utils/common'
import { EditDataType, EditMetaData, TimeUnitDetailsType } from '../../../frontend/src/backendTypes'
import { getAllSequences } from '../services/sequence'
import { writeTimeUnit } from '../services/write/timeUnit'
import { requireOneOf } from '../middlewares/authorizer'
import { Role } from '../../../frontend/src/types'
const router = Router()
@@ -32,6 +34,7 @@ router.get('/localities/:id', async (req, res) => {
router.put(
'/',
requireOneOf([Role.Admin, Role.EditUnrestricted]),
async (req: Request<object, object, { timeUnit: EditDataType<TimeUnitDetailsType> & EditMetaData }>, res) => {
const { comment, references, ...editedTimeUnit } = req.body.timeUnit
const result = await writeTimeUnit(editedTimeUnit, comment, references, req.user!.initials)