salix/front/core/services/acl-service.js

68 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-02-10 15:18:01 +00:00
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;
2017-05-25 09:52:53 +00:00
}
}
return false;
}
2017-05-25 09:52:53 +00:00
}
AclService.$inject = ['$http'];
2017-05-25 09:52:53 +00:00
ngModule.service('aclService', AclService);