You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
willaengine/resources/js/Global/policy/can.js

35 lines
1.3 KiB

import { UserService } from "@Global/services/storage.services";
import globalStore from "@Global/store";
import authStore from "@Core/store";
import Routes from "@Global/utils/common/routes"
import Vue from "vue";
export default (model, object, module = null) => {
//Access To All Place For Site Manager
// let siteOwner = UserService.get().is_owner == "true";
// if (siteOwner || window.location.hostname === Routes.originHostName()) {
// return true;
// }
let policyClass = model.split('::')[0] + 'Policy';
let policymethod = model.split('::')[1];
module = module ? module : globalStore.state.common.current_module;
let rootPermissions = authStore.state.auth.permissions;
let permissions = rootPermissions[module] ? Object.values(rootPermissions[module]) : [] ;
//instance policty class
let policy = new Vue.prototype.$policiesClasses[policyClass];
if (typeof policy == 'object' && typeof policy[policymethod] == 'function' ) {
return policy[policymethod]({module, rootPermissions, permissions}, object);
} else {
return false;
}
};
export const $_hasModule = (moduleName, defaultParam) => {
if (defaultParam && typeof moduleName === 'undefined') {
return true;
}
return authStore.getters['rolePermission/getModules'].find(x => x.slug === moduleName)
};