Pagina admin con creazione problemi e pagina utente personale
This commit is contained in:
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user