32 lines
876 B
JavaScript
32 lines
876 B
JavaScript
export const permissions = {
|
|
settingsManage: "settings.manage",
|
|
usersManage: "users.manage",
|
|
projectsManage: "projects.manage",
|
|
contentEdit: "content.edit",
|
|
contentPublish: "content.publish",
|
|
contentView: "content.view",
|
|
};
|
|
|
|
const rolePermissions = {
|
|
system_admin: Object.values(permissions),
|
|
admin: [
|
|
permissions.usersManage,
|
|
permissions.projectsManage,
|
|
permissions.contentEdit,
|
|
permissions.contentPublish,
|
|
permissions.contentView,
|
|
],
|
|
editor: [permissions.contentEdit, permissions.contentPublish, permissions.contentView],
|
|
viewer: [permissions.contentView],
|
|
user: [permissions.contentView],
|
|
};
|
|
|
|
export function hasPermission(user, permission) {
|
|
if (!user) return false;
|
|
return Boolean(rolePermissions[user.role]?.includes(permission));
|
|
}
|
|
|
|
export function publicPermissions(user) {
|
|
return rolePermissions[user?.role] ?? [];
|
|
}
|