adds update functionality to users

This commit is contained in:
kevmodrome 2020-06-26 11:05:09 +02:00
parent 5c532e1543
commit e4fc3e57d1
2 changed files with 22 additions and 5 deletions

View File

@ -7,7 +7,7 @@ const {
ADMIN_LEVEL_ID, ADMIN_LEVEL_ID,
} = require("../../utilities/accessLevels") } = require("../../utilities/accessLevels")
exports.fetch = async function(ctx) { exports.fetch = async function (ctx) {
const database = new CouchDB(ctx.user.instanceId) const database = new CouchDB(ctx.user.instanceId)
const data = await database.query("database/by_type", { const data = await database.query("database/by_type", {
include_docs: true, include_docs: true,
@ -17,7 +17,7 @@ exports.fetch = async function(ctx) {
ctx.body = data.rows.map(row => row.doc) ctx.body = data.rows.map(row => row.doc)
} }
exports.create = async function(ctx) { exports.create = async function (ctx) {
const database = new CouchDB(ctx.user.instanceId) const database = new CouchDB(ctx.user.instanceId)
const appId = (await database.get("_design/database")).metadata.applicationId const appId = (await database.get("_design/database")).metadata.applicationId
const { username, password, name, accessLevelId } = ctx.request.body const { username, password, name, accessLevelId } = ctx.request.body
@ -63,16 +63,32 @@ exports.create = async function(ctx) {
} }
} }
exports.update = async function() {} exports.update = async function (ctx) {
const db = new CouchDB(ctx.user.instanceId)
const user = ctx.request.body
exports.destroy = async function(ctx) { const response = await db.put(user)
user._rev = response.rev
ctx.status = 200
ctx.body = {
message: `User ${ctx.request.body.username} updated successfully.`,
user: {
...user,
_rev: response.rev,
_id: response.id,
},
}
}
exports.destroy = async function (ctx) {
const database = new CouchDB(ctx.user.instanceId) const database = new CouchDB(ctx.user.instanceId)
await database.destroy(getUserId(ctx.params.username)) await database.destroy(getUserId(ctx.params.username))
ctx.message = `User ${ctx.params.username} deleted.` ctx.message = `User ${ctx.params.username} deleted.`
ctx.status = 200 ctx.status = 200
} }
exports.find = async function(ctx) { exports.find = async function (ctx) {
const database = new CouchDB(ctx.user.instanceId) const database = new CouchDB(ctx.user.instanceId)
const user = await database.get(getUserId(ctx.params.username)) const user = await database.get(getUserId(ctx.params.username))
ctx.body = { ctx.body = {

View File

@ -8,6 +8,7 @@ const router = Router()
router router
.get("/api/users", authorized(LIST_USERS), controller.fetch) .get("/api/users", authorized(LIST_USERS), controller.fetch)
.get("/api/users/:username", authorized(USER_MANAGEMENT), controller.find) .get("/api/users/:username", authorized(USER_MANAGEMENT), controller.find)
.put("/api/users/", authorized(USER_MANAGEMENT), controller.update)
.post("/api/users", authorized(USER_MANAGEMENT), controller.create) .post("/api/users", authorized(USER_MANAGEMENT), controller.create)
.delete( .delete(
"/api/users/:username", "/api/users/:username",