burdy
Version:
Open Source Headless Platform
140 lines (139 loc) • 4.37 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasPermissions = exports.getPermissions = void 0;
const hooks_1 = __importDefault(require("./hooks"));
const lodash_1 = __importDefault(require("lodash"));
const DefaultPermissions = [
{
id: 'general',
name: 'General',
children: [
{
id: 'admin_panel',
name: 'Access admin panel',
},
{
id: 'settings',
name: 'Update settings',
},
{
id: 'users_administration',
name: 'Manage users and groups',
},
],
},
{
id: 'content_types',
name: 'Content Types',
children: [
{
id: 'content_types_list',
name: 'List content types',
},
{
id: 'content_types_create',
name: 'Create content types',
},
{
id: 'content_types_update',
name: 'Update content types',
},
{
id: 'content_types_delete',
name: 'Delete content types',
},
],
},
{
id: 'sites',
name: 'Sites',
children: [
{
id: 'sites_list',
name: 'List sites/pages/posts/fragments',
},
{
id: 'sites_create',
name: 'Create sites/pages/posts/fragments',
},
{
id: 'sites_update',
name: 'Update sites/pages/posts/fragments',
},
{
id: 'sites_publish',
name: 'Publish/Unpublish sites/pages/posts/fragments',
},
{
id: 'sites_delete',
name: 'Delete sites/pages/posts/fragments',
},
],
},
{
id: 'assets',
name: 'Assets',
children: [
{
id: 'assets_list',
name: 'List assets',
},
{
id: 'assets_create',
name: 'Create assets',
},
{
id: 'assets_update',
name: 'Update assets',
},
{
id: 'assets_delete',
name: 'Delete assets',
},
],
},
{
id: 'tags',
name: 'Tags',
children: [
{
id: 'tags_list',
name: 'List tags',
},
{
id: 'tags_create',
name: 'Create tag',
},
{
id: 'tags_update',
name: 'Update tag',
},
{
id: 'tags_delete',
name: 'Delete tags',
},
],
},
];
const getPermissions = () => __awaiter(void 0, void 0, void 0, function* () {
return hooks_1.default.applyFilters('permissions/getAll', DefaultPermissions);
});
exports.getPermissions = getPermissions;
const hasPermissions = (user, permissions) => {
var _a;
const userPermissions = lodash_1.default.flatMap((_a = user === null || user === void 0 ? void 0 : user.groups) !== null && _a !== void 0 ? _a : [], 'permissions');
return permissions.some((permission) => userPermissions.includes(permission));
};
exports.hasPermissions = hasPermissions;