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,
} = require("../../utilities/accessLevels")
exports.fetch = async function(ctx) {
exports.fetch = async function (ctx) {
const database = new CouchDB(ctx.user.instanceId)
const data = await database.query("database/by_type", {
include_docs: true,
@ -17,7 +17,7 @@ exports.fetch = async function(ctx) {
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 appId = (await database.get("_design/database")).metadata.applicationId
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)
await database.destroy(getUserId(ctx.params.username))
ctx.message = `User ${ctx.params.username} deleted.`
ctx.status = 200
}
exports.find = async function(ctx) {
exports.find = async function (ctx) {
const database = new CouchDB(ctx.user.instanceId)
const user = await database.get(getUserId(ctx.params.username))
ctx.body = {

View File

@ -8,6 +8,7 @@ const router = Router()
router
.get("/api/users", authorized(LIST_USERS), controller.fetch)
.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)
.delete(
"/api/users/:username",