|
|
|
@ -1,6 +1,7 @@ |
|
|
|
const Router = require("@koa/router") |
|
|
|
const controller = require("../../controllers/admin/users") |
|
|
|
const joiValidator = require("../../../middleware/joi-validator") |
|
|
|
const adminOnly = require("../../../middleware/adminOnly") |
|
|
|
const Joi = require("joi") |
|
|
|
|
|
|
|
const router = Router() |
|
|
|
@ -14,12 +15,11 @@ function buildUserSaveValidation(isSelf = false) { |
|
|
|
builder: Joi.object({ |
|
|
|
global: Joi.boolean().optional(), |
|
|
|
apps: Joi.array().optional(), |
|
|
|
}).unknown(true).optional(), |
|
|
|
// maps appId -> roleId for the user
|
|
|
|
roles: Joi.object() |
|
|
|
.pattern(/.*/, Joi.string()) |
|
|
|
.required() |
|
|
|
}) |
|
|
|
.unknown(true) |
|
|
|
.optional(), |
|
|
|
// maps appId -> roleId for the user
|
|
|
|
roles: Joi.object().pattern(/.*/, Joi.string()).required().unknown(true), |
|
|
|
} |
|
|
|
if (!isSelf) { |
|
|
|
schema = { |
|
|
|
@ -28,9 +28,7 @@ function buildUserSaveValidation(isSelf = false) { |
|
|
|
_rev: Joi.string(), |
|
|
|
} |
|
|
|
} |
|
|
|
return joiValidator.body(Joi.object(schema) |
|
|
|
.required() |
|
|
|
.unknown(true)) |
|
|
|
return joiValidator.body(Joi.object(schema).required().unknown(true)) |
|
|
|
} |
|
|
|
|
|
|
|
function buildInviteValidation() { |
|
|
|
@ -48,24 +46,30 @@ function buildInviteAcceptValidation() { |
|
|
|
}).required().unknown(true)) |
|
|
|
} |
|
|
|
|
|
|
|
function buildUpdateSelfValidation() { |
|
|
|
// prettier-ignore
|
|
|
|
return joiValidator.body(Joi.object({ |
|
|
|
inviteCode: Joi.string().required(), |
|
|
|
password: Joi.string().required(), |
|
|
|
}).required().unknown(true)) |
|
|
|
} |
|
|
|
|
|
|
|
router |
|
|
|
.post("/api/admin/users", buildUserSaveValidation(), controller.save) |
|
|
|
.post( |
|
|
|
"/api/admin/users", |
|
|
|
adminOnly, |
|
|
|
buildUserSaveValidation(), |
|
|
|
controller.save |
|
|
|
) |
|
|
|
.get("/api/admin/users", controller.fetch) |
|
|
|
.post("/api/admin/users/init", controller.adminUser) |
|
|
|
.get("/api/admin/users/self", controller.getSelf) |
|
|
|
.post("/api/admin/users/self", buildUserSaveValidation(true), controller.updateSelf) |
|
|
|
.delete("/api/admin/users/:id", controller.destroy) |
|
|
|
.post( |
|
|
|
"/api/admin/users/self", |
|
|
|
buildUserSaveValidation(true), |
|
|
|
controller.updateSelf |
|
|
|
) |
|
|
|
.delete("/api/admin/users/:id", adminOnly, controller.destroy) |
|
|
|
.get("/api/admin/users/:id", controller.find) |
|
|
|
.get("/api/admin/roles/:appId") |
|
|
|
.post("/api/admin/users/invite", buildInviteValidation(), controller.invite) |
|
|
|
.post( |
|
|
|
"/api/admin/users/invite", |
|
|
|
adminOnly, |
|
|
|
buildInviteValidation(), |
|
|
|
controller.invite |
|
|
|
) |
|
|
|
.post( |
|
|
|
"/api/admin/users/invite/accept", |
|
|
|
buildInviteAcceptValidation(), |
|
|
|
|