import ngModule from '../module'; class AclService { constructor($http) { this.$http = $http; } reset() { this.user = null; this.roles = null; } load() { return this.$http.get('Accounts/acl').then(async res => { this.user = res.data.user; this.roles = {}; this.rolesMap = {}; res.data.roles.forEach(role => { if (role.role) this.rolesMap[role.role.name] = true; }); this.acls = {}; await this.$http.post('Accounts/user/acl', {aclList: this.rolesMap}).then(res => { res.data.forEach(acl => { this.acls[acl.model] = this.acls[acl.model] || {}; this.acls[acl.model][acl.property] = this.acls[acl.model][acl.property] || {}; this.acls[acl.model][acl.property][acl.accessType] = true; }); }); for (let role of res.data.roles) { if (role.role) this.roles[role.role.name] = true; } }); } returnAcls() { return this.acls; } hasAnyACL(model, property, accessType) { if (this.acls) { if (this.acls[model]) { if (this.acls[model][property]) { if (this.acls[model][property][accessType]) return true; } } } return false; } hasAny(roles) { if (this.roles) { for (let role of roles) { if (this.roles[role]) return true; } } return false; } } AclService.$inject = ['$http']; ngModule.service('aclService', AclService);