Pagina admin con creazione problemi e pagina utente personale

This commit is contained in:
2022-11-09 02:49:54 +01:00
parent 484c21d606
commit 48d1b3b4ed
21 changed files with 633 additions and 299 deletions
+18
View File
@@ -112,6 +112,24 @@ export const getUser = (db, id) =>
// Problems
//
export const createProblem = (db, { content, createdBy }) =>
withDatabase(db, state => {
const nextId = (
Object.keys(state.problems)
.map(k => parseInt(k))
.reduce((acc, id) => Math.max(acc, id)) + 1
).toString()
state.problems[nextId] = {
id: nextId,
content,
createdBy,
createdAt: new Date().toJSON(),
}
return nextId
})
export const getProblem = (db, id) =>
withDatabase(db, state => {
return state.problems[id]
+20 -5
View File
@@ -8,6 +8,7 @@ import express from 'express'
import { createStatusRouter, PingRouter } from './middlewares.js'
import {
createDatabase,
createProblem,
createSolution,
getProblem,
getProblems,
@@ -92,6 +93,25 @@ export async function createApiRouter() {
res.json(await getProblem(db, req.params.id))
})
r.post('/api/problem', async (req, res) => {
const user = await getRequestUser(req)
if (!user) {
res.sendStatus(401)
return
}
if (user.role !== 'admin' && user.role !== 'moderator') {
res.sendStatus(401)
return
}
const id = await createProblem(db, {
content: req.body.content,
createBy: user.username,
})
res.json(id)
})
r.get('/api/solutions', async (req, res) => {
let queryUserId = req.query.user
let queryProblemId = req.query.problem
@@ -146,10 +166,5 @@ export async function createApiRouter() {
res.json(requestedUser)
})
// r.post('/api/user/:id', async (req, res) => {
// await updateUser(db, req.params.id, req.body)
// res.sendStatus(200)
// })
return r
}