|
|
|
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)
|
|
|
|
};
|