Всем привет!
При вызове метода onButtonClick необходимо проверять права у текущего юзера. Столкнулся с проблемой чтения прав. Похожая проблема обсуждалась тут, но линк неактивен.
https://community.terrasoft.ua/questions/kak-poluchit-dostup-do-sysadmi…
Есть такой код:
initData: function() {
this.initializeActionButtons();
this.callParent(arguments);
this.isUserInRole(JSConst.SYS_ADMIN_UNIT_ROLE.ROLE.SALES_MANAGER);
this.isUserInRole(JSConst.SYS_ADMIN_UNIT_ROLE.ROLE.SALES_DEPARTMENT_MANAGER);
this.isUserInRole(JSConst.SYS_ADMIN_UNIT_ROLE.ROLE.SYS_ADMIN);
},
isUserInRole: function(roleId) {
var currentUserId = Terrasoft.core.enums.SysValue.CURRENT_USER;
var esqCheckUserPossibility = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "SysAdminUnitInRole"
});
esqCheckUserPossibility.addColumn("id");
esqCheckUserPossibility.filters.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
var currentUserInRole = esqCheckUserPossibility.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"SysAdminUnit",
currentUserId);
var isBelongToRoleFilter = esqCheckUserPossibility.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"SysAdminUnitRoleId",
roleId);
esqCheckUserPossibility.filters.add("UserFilter", currentUserInRole);
esqCheckUserPossibility.filters.add("isBelongToRoleFilter", isBelongToRoleFilter);
esqCheckUserPossibility.getEntityCollection(function (response) {
if (!response && !response.success) {
return;
}
if(!response.collection.isEmpty()) {
if(roleId == JSConst.SYS_ADMIN_UNIT_ROLE.ROLE.SALES_MANAGER) {
this.$IsUserHasSalesManagerRole = true;
}
else if(roleId == JSConst.SYS_ADMIN_UNIT_ROLE.ROLE.SALES_DEPARTMENT_MANAGER) {
this.$IsUserHasSalesDepartmentManagerRole = true;
}
else if(roleId == JSConst.SYS_ADMIN_UNIT_ROLE.ROLE.SYS_ADMIN) {
this.$IsUserHasSysAdminRole = true;
}
return;
}
/*
if (callback) {
callback.call(scope || this);
}
*/
},this);
},
onUpdateServiceProvisionClick: function() {
if(this.$IsUserHasSalesManagerRole || this.$IsUserHasSalesDepartmentManagerRole) {
if(this.$IsUserHasSysAdminRole) {
this.callServiceProvisionService(this.$MasterRecordId, this.onCallServiceProvisionServiceCallback, this);
}
else {
var message = this.get("Resources.Strings.MessageDependsOnUserRoleCaption");
this.showInformationDialog(message);
}
}
else {
this.callServiceProvisionService(this.$MasterRecordId, this.onCallServiceProvisionServiceCallback, this);
}
},
в методе isUserInRole(roleId) беру id текущего юзера
var currentUserId = Terrasoft.core.enums.SysValue.CURRENT_USER;
При подстановке тестовых айдишников в переменную currentUserId все ок, логика отрабатывает как надо потому что я под своей учеткой. Если зайти под учеткой менеджера при первом вызове метода ловлю в консоли ошибку "Недостаточно прав на чтение из таблицы SysAdminUnitInRole"
Предполагаю , что настройка прав на объекты может решить этот вопрос, но не знаю будет ли это чревато в итоге... Прошу у Вас, коллеги, помощи в данном вопросе