133 lines
3.0 KiB
JavaScript
133 lines
3.0 KiB
JavaScript
const { object } = require("./utils")
|
|
const Resource = require("./utils/Resource")
|
|
|
|
const user = {
|
|
_id: "us_693a73206518477283a8d5ae31103252",
|
|
email: "test@test.com",
|
|
roles: {
|
|
app_957b12f943d348faa61db7e18e088d0f: "BASIC",
|
|
},
|
|
builder: {
|
|
global: false,
|
|
},
|
|
admin: {
|
|
global: true,
|
|
},
|
|
tenantId: "default",
|
|
status: "active",
|
|
budibaseAccess: true,
|
|
csrfToken: "9c70291d-7137-48f9-9166-99ab5473a3d4",
|
|
userId: "us_693a73206518477283a8d5ae31103252",
|
|
roleId: "ADMIN",
|
|
role: {
|
|
_id: "ADMIN",
|
|
name: "Admin",
|
|
permissionId: "admin",
|
|
inherits: "POWER",
|
|
},
|
|
}
|
|
|
|
const userSchema = object(
|
|
{
|
|
email: {
|
|
description: "The email address of the user, this must be unique.",
|
|
type: "string",
|
|
},
|
|
password: {
|
|
description:
|
|
"The password of the user if using password based login - this will never be returned. This can be" +
|
|
" left out of subsequent requests (updates) and will be enriched back into the user structure.",
|
|
type: "string",
|
|
},
|
|
status: {
|
|
description: "The status of the user, if they are active.",
|
|
type: "string",
|
|
enum: ["active"],
|
|
},
|
|
firstName: {
|
|
description: "The first name of the user",
|
|
type: "string",
|
|
},
|
|
lastName: {
|
|
description: "The last name of the user",
|
|
type: "string",
|
|
},
|
|
forceResetPassword: {
|
|
description:
|
|
"If set to true forces the user to reset their password on first login.",
|
|
type: "boolean",
|
|
},
|
|
builder: {
|
|
description: "Describes if the user is a builder user or not.",
|
|
type: "object",
|
|
properties: {
|
|
global: {
|
|
description:
|
|
"If set to true the user will be able to build any app in the system.",
|
|
type: "boolean",
|
|
},
|
|
},
|
|
},
|
|
admin: {
|
|
description: "Describes if the user is an admin user or not.",
|
|
type: "object",
|
|
properties: {
|
|
global: {
|
|
description:
|
|
"If set to true the user will be able to administrate the system.",
|
|
type: "boolean",
|
|
},
|
|
},
|
|
},
|
|
roles: {
|
|
description:
|
|
"Contains the roles of the user per app (assuming they are not a builder user).",
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "string",
|
|
description:
|
|
"A map of app ID (production app ID, minus the _dev component) to a role ID, e.g. ADMIN.",
|
|
},
|
|
},
|
|
},
|
|
{ required: ["email", "roles"] }
|
|
)
|
|
|
|
const userOutputSchema = {
|
|
...userSchema,
|
|
properties: {
|
|
...userSchema.properties,
|
|
_id: {
|
|
description: "The ID of the user.",
|
|
type: "string",
|
|
},
|
|
},
|
|
required: [...userSchema.required, "_id"],
|
|
}
|
|
|
|
module.exports = new Resource()
|
|
.setExamples({
|
|
user: {
|
|
value: {
|
|
data: user,
|
|
},
|
|
},
|
|
users: {
|
|
value: {
|
|
data: [user],
|
|
},
|
|
},
|
|
})
|
|
.setSchemas({
|
|
user: userSchema,
|
|
userOutput: object({
|
|
data: userOutputSchema,
|
|
}),
|
|
userSearch: object({
|
|
data: {
|
|
type: "array",
|
|
items: userOutputSchema,
|
|
},
|
|
}),
|
|
})
|