Quick fix for role validation, permissionId is no longer required.

This commit is contained in:
mike12345567 2024-10-23 14:47:06 +01:00
parent ad475be4f7
commit c6a413f399
4 changed files with 19 additions and 2 deletions

View File

@ -137,6 +137,10 @@ export async function save(ctx: UserCtx<SaveRoleRequest, SaveRoleResponse>) {
permissionId = PermissionLevel.WRITE permissionId = PermissionLevel.WRITE
} }
if (!permissionId) {
ctx.throw(400, "Role requires permissionId to be specified.")
}
const role = new roles.Role(_id, name, permissionId, { const role = new roles.Role(_id, name, permissionId, {
displayName: uiMetadata?.displayName || name, displayName: uiMetadata?.displayName || name,
description: uiMetadata?.description || "Custom role", description: uiMetadata?.description || "Custom role",

View File

@ -58,6 +58,19 @@ describe("/roles", () => {
}) })
expect(res.inherits).toEqual([BUILTIN_ROLE_IDS.BASIC]) expect(res.inherits).toEqual([BUILTIN_ROLE_IDS.BASIC])
}) })
it("save role without permissionId", async () => {
const res = await config.api.roles.save(
{
...basicRole(),
permissionId: undefined,
},
{
status: 200,
}
)
expect(res.permissionId).toEqual(PermissionLevel.WRITE)
})
}) })
describe("update", () => { describe("update", () => {

View File

@ -215,7 +215,7 @@ export function roleValidator() {
// this is the base permission ID (for now a built in) // this is the base permission ID (for now a built in)
permissionId: Joi.string() permissionId: Joi.string()
.valid(...Object.values(permissions.BuiltinPermissionID)) .valid(...Object.values(permissions.BuiltinPermissionID))
.required(), .optional(),
permissions: Joi.object() permissions: Joi.object()
.pattern( .pattern(
/.*/, /.*/,

View File

@ -6,7 +6,7 @@ export interface SaveRoleRequest {
_rev?: string _rev?: string
name: string name: string
inherits?: string | string[] inherits?: string | string[]
permissionId: string permissionId?: string
permissions?: Record<string, PermissionLevel[]> permissions?: Record<string, PermissionLevel[]>
version?: string version?: string
uiMetadata?: RoleUIMetadata uiMetadata?: RoleUIMetadata