Built files from Bizgaze WebServer
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

permissions.js 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. var Unibase;
  2. (function (Unibase) {
  3. let Platform;
  4. (function (Platform) {
  5. let Permissions;
  6. (function (Permissions) {
  7. let Components;
  8. (function (Components) {
  9. class Permission extends Platform.Core.BaseComponent {
  10. constructor() {
  11. super();
  12. this.InstalledAppId = 0;
  13. this.appmanager = Platform.Apps.Managers.AppManager.Instance();
  14. this.ipermissionmanager = Permissions.Managers.PermissionManager.Instance();
  15. }
  16. cssFiles() {
  17. return ['libs/jquery-ui-slider-pips/jquery-ui-slider-pips.css', 'libs/jquery-ui-slider-pips/Custom-slider-ui-pips.css'];
  18. }
  19. jsFiles() {
  20. return ['libs/jquery-ui-slider-pips/jquery-ui-slider-pips.js', '/platform/apps/managers/interfaces/iappmanager.js', '/platform/apps/managers/appmanager.js', '/platform/apps/components/stages/stages.js', '/platform/apps/managers/stagemanager.js', '/platform/apps/components/stages/stagepermissions.js', 'platform/permission/managers/permissionmanager.js', 'platform/permission/requests/approlesetting.js', '/platform/permission/infos/role.js', '/platform/datasources/managers/interfaces/idoctypemanager.js', '/platform/datasources/managers/doctypemanager.js', '/platform/apps/components/actionproviders/docpropertyactionprovider.js', 'platform/permission/components/editrole.js', 'platform/apps/components/stages/defaultstageroles.js'];
  21. }
  22. html(id, containerid) {
  23. var instance = this;
  24. var appid = instance.appSettings.InstalledAppId;
  25. instance.InstalledAppId = instance.appSettings.InstalledAppId;
  26. let html = `<header class="bg-white shadow-bottom modal-header" style="padding:0px !important" id="roleSettingHeader">
  27. <div class="container-fluid">
  28. <a title="AddRole" id="btnAddNewRole" class=" btnRole_` + containerid + ` pull-right btn btn-icon btn-flush-nav btn-rounded mt-5" href="javascript:;"><span class="btn-icon-wrap"><i class="fa fa-plus"></i></span></a>
  29. <a title="Default Stage Roles" id="btnDefaultStageRoles_` + containerid + `" class="pull-right btnDefaultStageRoles_` + containerid + ` hidden btn btn-icon btn-flush-nav btn-rounded mt-5 font-10" href="javascript:;"><span class="btn-icon-wrap"><i class="ti-key"></i></span></a>
  30. <a title="Add Stage" id="btnAddNewStage_` + containerid + `" class="pull-right btnstage_` + containerid + ` hidden btn btn-icon btn-flush-nav btn-rounded mt-5" href="javascript:;"><span class="btn-icon-wrap"><i class="fa fa-plus"></i></span></a>
  31. <a href="javascript:;" title="Add ActionProvider" id="btnAddAP_` + containerid + `" class=" pull-right btnAddAP_` + containerid + ` hidden btn btn-icon btn-flush-nav btn-rounded mt-5"><span class="btn-icon-wrap"><i class="fa fa-plus"></i></span></a>
  32. <a title="Add WorkFlow" id="btnAddNewWorkFlow" class="pull-right btnWorkFlow hidden btn btn-icon btn-flush-nav btn-rounded mt-5"><span class="btn-icon-wrap"><i class="fa fa-plus"></i></span></a>
  33. <ul class="nav nav-light nav-tabs layout-detail-tabs nav-line" role="tablist" id="masterTab">
  34. <li class="nav-item tab-item tab-pane tab-addeditem"><a href="javascript:;" id="tbRoles_` + containerid + `" onclick=" Unibase.Platform.Permissions.Components.Permission.Instance().loadRoles(` + instance.InstalledAppId + `);" class="d-flex h-50p align-items-center nav-link text-dark font-weight-600 active"><span class="portletName">Roles</span></a></li>
  35. <li class="nav-item tab-item tab-pane tab-addeditem hidden li_stages"><a href="javascript:;" id="tbStage_` + containerid + `" onclick="Unibase.Platform.Apps.Components.Stages.Instance().loadStages('` + containerid + `',` + appid + `);" class="d-flex h-50p align-items-center nav-link text-dark font-weight-600 "><span class="portletName">Stages</span></a></li>
  36. <li class="nav-item tab-item tab-pane tab-addeditem"><a href="javascript:;" id="tbProviders_` + containerid + `" onclick="Unibase.Platform.Apps.Components.DocPropertyActionProvider.Instance().loadActionProviders('` + containerid + `',` + appid + `);" class="d-flex h-50p align-items-center nav-link text-dark font-weight-600 "><span class="portletName">Action Providers</span></a></li>
  37. </ul>
  38. </div>
  39. </header>
  40. <section data-simplebar class="simple-scroll-bar scrollable">
  41. <div class="clear" id="message">
  42. </div>
  43. <div class="tab-content row mt-n" id="tabs">
  44. <div class="tab-pane col-sm-12 active" id="roles">
  45. <div id="div_Roles" class="card">
  46. <input type="hidden" id="hf_RoleId" value="" />
  47. <input type="hidden" id="hf_StageId" value="" />
  48. <div class="card-header">
  49. <input class="form-control rounded-input txt_rolesearch pull-right mt-5" id="RoleSearch" type="text" placeholder="Search" aria-label="Search" autocomplete="off" style="display:inline;height:30px">
  50. </div>
  51. <div class="card-body">
  52. <div class="rolelist-div text-body" id="div_errormessage">
  53. </div>
  54. <div class="" id="CreateStageDiv"></div>
  55. </div>
  56. </div>
  57. </div>
  58. <div class="tab-pane col-sm-12" id="stage_` + containerid + `">
  59. <div id="div_Stages" class="card"><div class="card-body div_stages">
  60. </div>
  61. </div>
  62. </div>
  63. <div class="tab-pane col-sm-12" id="ActionProviders_` + containerid + `">
  64. <div id="div_ActionProviders" class="card"><div class="card-body">
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. </section>
  70. <footer class="bg-white footer ft_permissions">
  71. <a href="javascript:;" id="btn_rolesClose_` + containerid + `" class="btn btn-light btn-sm mr-auto btn-close">Close</a>
  72. </footer>`;
  73. return html;
  74. }
  75. load(id, containerid, callback) {
  76. var instance = this;
  77. var appid = instance.appSettings.InstalledAppId;
  78. instance.InstalledAppId = instance.appSettings.InstalledAppId;
  79. instance.appmanager.getInstallApp(appid).then(function (appresponse) {
  80. if (appresponse.result.EnableStage) {
  81. $(".li_stages").removeClass('hidden');
  82. }
  83. });
  84. $("#tbRoles_" + containerid).click(function () {
  85. $(".tab-addeditem").find(".nav-link").removeClass("active");
  86. $(this).addClass("active");
  87. $("#tabs").find(".tab-pane").removeClass("active");
  88. $("#roles").addClass('active');
  89. $(".btnFilter_" + containerid).addClass('hidden');
  90. $(".btnstage_" + containerid).addClass('hidden');
  91. $(".btnRole_" + containerid).removeClass('hidden');
  92. $(".btnWorkFlow").addClass('hidden');
  93. $(".btnAddAP_" + containerid).addClass('hidden');
  94. $('#btnDefaultStageRoles_' + containerid + '').addClass('hidden');
  95. });
  96. $("#tbStage_" + containerid).click(function () {
  97. $(".tab-addeditem").find(".nav-link").removeClass("active");
  98. $(this).addClass("active");
  99. $("#tabs").find(".tab-pane").removeClass("active");
  100. $("#stage_" + containerid).addClass('active');
  101. $(".btnRole_" + containerid).addClass('hidden');
  102. $(".btnFilter_" + containerid).addClass('hidden');
  103. $(".btnstage_" + containerid).removeClass('hidden');
  104. $(".btnWorkFlow").addClass('hidden');
  105. $(".btnAddAP_" + containerid).addClass('hidden');
  106. $('#btnDefaultStageRoles_' + containerid + '').removeClass('hidden');
  107. });
  108. $("#tbProviders_" + containerid).click(function () {
  109. $(".tab-addeditem").find(".nav-link").removeClass("active");
  110. $(this).addClass("active");
  111. $("#tabs").find(".tab-pane").removeClass("active");
  112. $("#ActionProviders_" + containerid).addClass('active');
  113. $(".btnRole_" + containerid).addClass('hidden');
  114. $(".btnstage_" + containerid).addClass('hidden');
  115. $(".btnAddAP_" + containerid).removeClass('hidden');
  116. $(".btnWorkFlow").addClass('hidden');
  117. $('#btnDefaultStageRoles_' + containerid + '').addClass('hidden');
  118. });
  119. $('#btnAddNewRole').click(function () {
  120. Unibase.Platform.Permissions.Components.EditRole.Instance().editRole(id, appid);
  121. });
  122. $('#btnAddNewStage_' + containerid).click(function () {
  123. Unibase.Platform.Apps.Components.Stages.Instance().AddStage(0);
  124. });
  125. $('#btnAddAP_' + containerid).click(function () {
  126. Unibase.Platform.Apps.Components.DocPropertyActionProvider.Instance().AddActionProvider(0);
  127. });
  128. $('#btnDefaultStageRoles_' + containerid + '').click(function () {
  129. Unibase.Platform.Apps.Components.DefaultStageRoles.Instance().init(appid);
  130. });
  131. $(".txt_rolesearch").on('input', function () {
  132. var term = $(".txt_rolesearch").val();
  133. instance.loadRoles(appid, term);
  134. });
  135. instance.loadRoles(appid, "");
  136. }
  137. init() {
  138. var instance = this;
  139. this.navigationHelper.popup(0, '', instance, null, Platform.Helpers.Size.Large);
  140. instance.loadRoles(0, "");
  141. }
  142. loadPermissions(roleid, Isrole, IsStage, installedappid) {
  143. var instance = this;
  144. var roleId = Number(roleid);
  145. $("#hf_RoleId").val(roleId);
  146. if (Isrole == true) {
  147. var collapsed = $("#panelId-" + roleId).hasClass('collapse');
  148. if (!collapsed) {
  149. $("#panelId-" + roleId).addClass('collapse');
  150. $(".roleid-" + roleId).find(".fa-chevron-down").removeClass('d-none');
  151. $(".roleid-" + roleId).find(".fa-chevron-up").addClass('d-none');
  152. }
  153. else {
  154. $(".roleid-" + roleId).find(".fa-chevron-up").removeClass('d-none');
  155. $(".roleid-" + roleId).find(".fa-chevron-down").addClass('d-none');
  156. $("#panelId-" + roleId).removeClass('collapse');
  157. $(".roleid-" + roleId).find(".sliderDetails").remove();
  158. }
  159. }
  160. var installedPageId = installedappid;
  161. if (installedPageId == undefined) {
  162. installedPageId = 0;
  163. }
  164. instance.ipermissionmanager.getRoleSettings(roleId, Number(installedPageId), IsStage).then(function (response) {
  165. var SId = 0;
  166. var records = response.result;
  167. for (var i = 0; i < records.length; i++) {
  168. var ApplicableValue = [];
  169. var ApplicableLabels = [];
  170. var ApplicableText = ["None", "Owner", "Manager", "Admin", "Allow"];
  171. var ApplicableValues = records[i].ApplicableValuesList;
  172. var settingVal = records[i].SettingValue;
  173. for (var j = 0; j < ApplicableValues.length; j++) {
  174. var PermissionLevel = "";
  175. var pv = ApplicableValues[j];
  176. var permissionValue = pv.toString();
  177. switch (permissionValue) {
  178. case "0":
  179. PermissionLevel = "None";
  180. break;
  181. case "1":
  182. PermissionLevel = "None";
  183. break;
  184. case "2":
  185. PermissionLevel = "Owner";
  186. break;
  187. case "3":
  188. PermissionLevel = "Manager";
  189. break;
  190. case "4":
  191. PermissionLevel = "Admin";
  192. break;
  193. case "5":
  194. PermissionLevel = "Allow";
  195. break;
  196. }
  197. ApplicableValue.push(PermissionLevel);
  198. ApplicableLabels.push('<span>' + PermissionLevel + '</span>');
  199. }
  200. var SettingName = records[i].SettingName;
  201. var SystemName = records[i].SystemName;
  202. var apppermissionId = records[i].AppPermissionId;
  203. var html = "";
  204. if (records[i].StageId == 0) {
  205. var Isrole = false;
  206. var IsStage = true;
  207. html += "<div class='sliderDetails py-15'><div class='row'>" +
  208. " <div class='col-sm-4'>" +
  209. "<b>" + SettingName + "</b>" +
  210. "</div>";
  211. html += "<div class='col-sm-8 slider-container'>" +
  212. "<div class='block alert alert-primary mb-5 hidden'><label id='stages" + roleId + SystemName + "' class='lblAllStages hidden'>Applicable to all stages? <input type='checkbox' id='chk_AllStages_" + roleId + SystemName + "' checked onclick='Unibase.Platform.Permissions.Components.Permission.Instance().change(\"" + SystemName + "\",\"" + roleId + "\",\"" + Isrole + "\",\"" + IsStage + "\",\"" + i + "\"," + Number(installedPageId) + ");' value='' /></label></div>" +
  213. "<input type='hidden' class='applicablevalue' value='" + ApplicableValue.length + "' /><input type='hidden' class='appId' value='" + apppermissionId + "' /><input type='hidden' class='dd' value='" + i + "' /> <input type='hidden' id='hf_SystemName_1_' class='systemname' value='" + SystemName + "' /><div id='slider_" + i + SystemName + roleId + "' class='col-sm-12 double-label-slider' style='height:8px'></div>" +
  214. "</div>" +
  215. "</div><div class='bg-purple-light-5' style='display:none;' id='div_stage_settings_" + roleId + SystemName + "_container'><div class='pt-5 pb-5' id='div_stage_settings_" + roleId + SystemName + "'></div></div></div>";
  216. if (ApplicableValue.length < 2) {
  217. var status1 = "";
  218. var status2 = "";
  219. if (settingVal == 5) {
  220. status2 = 'checked';
  221. status1 = '';
  222. }
  223. else {
  224. status2 = '';
  225. status1 = 'checked';
  226. }
  227. if (settingVal == 5) {
  228. $(".option1" + roleId + SettingName).removeAttr("checked");
  229. $(".option2" + roleId + SettingName).prop("checked", true);
  230. }
  231. }
  232. $(".roleid-" + roleId).find(".sliderdiv").append(html);
  233. if (records[i].StagesList == 0) {
  234. $("#stages" + roleId + SystemName).addClass('hidden');
  235. }
  236. $(".roleid-" + roleId).find("#slider_" + i + SystemName + roleId)
  237. .slider({
  238. max: ApplicableValue.length - 1,
  239. min: 0,
  240. value: settingVal - 1,
  241. animate: 250
  242. })
  243. .slider("pips", {
  244. rest: "label",
  245. labels: ApplicableLabels
  246. });
  247. $(".roleid-" + roleId).find("#slider_" + i + SystemName + roleId).on("slidestop", function (event, ui) {
  248. var SettingValue = 0;
  249. var systemName = $(this).parents(".slider-container").find('.systemname').val();
  250. var approleId = $(this).parents(".slider-container").find('.appId').val();
  251. var applicablevalue = $(this).parents(".slider-container").find('.applicablevalue').val();
  252. if (applicablevalue == 2) {
  253. if (ui.value == 0) {
  254. SettingValue = ui.value + 1;
  255. }
  256. else {
  257. SettingValue = ui.value + 4;
  258. }
  259. }
  260. else {
  261. SettingValue = ui.value + 1;
  262. }
  263. instance.changeAppRoleSetting(SettingValue, systemName, roleId, SId, approleId, installedappid);
  264. });
  265. }
  266. else {
  267. var SettingName = records[i].StageName;
  268. var SId = Number(records[i].StageId);
  269. var html2 = "<div class='ma-20 mr-25' id='div_stage_settings_" + roleId + SId + SystemName + "'><div class='sliderDetails row'>" +
  270. " <div class='col-sm-4'>" +
  271. "<b>" + SettingName + "</b>" +
  272. "</div>" +
  273. "<div class='col-sm-8 slider-container'><input type='hidden' class='sid' value='" + SId + "' /><input type='hidden' class='systemname' value='" + SystemName + "' /><div id='slider" + i + "' class='col-sm-12 double-label-slider' style='height:8px'></div></div></div></div>";
  274. if ($("#div_stage_settings_" + roleId + SystemName).find("#div_stage_settings_" + roleId + SId + SystemName).length == 0) {
  275. $("#div_stage_settings_" + roleId + SystemName).append(html2);
  276. }
  277. $("#div_stage_settings_" + roleId + SId + SystemName).find("#slider" + i)
  278. .slider({
  279. max: ApplicableValue.length - 1,
  280. min: 0,
  281. value: settingVal - 1,
  282. animate: 250
  283. })
  284. .slider("pips", {
  285. rest: "label",
  286. labels: ApplicableLabels
  287. });
  288. $("#div_stage_settings_" + roleId + SId + SystemName).find("#slider" + i).on("slidestop", function (event, ui) {
  289. var SettingValue = 0;
  290. var systemName = $(this).parents(".slider-container").find('.systemname').val();
  291. var sid = $(this).parents(".slider-container").find('.sid').val();
  292. var applicablevalue = $(this).parents(".slider-container").find('.applicablevalue').val();
  293. if (applicablevalue == 2) {
  294. if (ui.value == 0) {
  295. SettingValue = ui.value + 1;
  296. }
  297. else {
  298. SettingValue = ui.value + 4;
  299. }
  300. }
  301. else {
  302. SettingValue = ui.value + 1;
  303. }
  304. instance.changeAppRoleSetting(SettingValue, systemName, roleId, sid, apppermissionId, installedappid);
  305. });
  306. var k = "#div_stage_settings_" + roleId + SystemName;
  307. var u = k + " .ui-slider-handle";
  308. var v = k + " .ui-slider-line";
  309. $(u).css("background-color", "#ab26aa");
  310. $(u).addClass("childSlider");
  311. $(v).css("box-shadow", "0 0 0 2px #ab26aa");
  312. }
  313. }
  314. $("#div_New_" + roleId + SystemName).show();
  315. });
  316. }
  317. statehover() {
  318. $(".type_last").addClass('state_hover');
  319. }
  320. change(SystemName, roleId, Isrole, IsStage, i, installedappid) {
  321. var instance = this;
  322. if ($("#chk_AllStages_" + roleId + SystemName).is(':checked')) {
  323. $("#div_stage_settings_" + roleId + SystemName + "_container").hide();
  324. $("#slider_" + i + SystemName + roleId).removeClass('hidden');
  325. }
  326. else {
  327. $("#div_stage_settings_" + roleId + SystemName + "_container").show();
  328. $("#div_stage_settings_" + roleId + SystemName).empty();
  329. instance.loadPermissions(roleId, Isrole, IsStage, installedappid);
  330. }
  331. }
  332. loadRoles(installedappid, term) {
  333. var instance = this;
  334. $(".Role-panel").each(function () {
  335. $(this).remove();
  336. });
  337. instance.ipermissionmanager.getRoles(term).then(function (response) {
  338. var data = response.result;
  339. if (data.length > 0) {
  340. for (var i = 0; i < data.length; i++) {
  341. var roleId = data[i].RoleId;
  342. var roleName = data[i].RoleName;
  343. var description = data[i].Description;
  344. var IsAdminRole = data[i].IsAdminRole;
  345. var link = "";
  346. var admininstruction = "";
  347. var Isrole = true;
  348. var IsStage = false;
  349. var SystemName = null;
  350. if (IsAdminRole != true) {
  351. link = "Unibase.Platform.Permissions.Components.Permission.Instance().loadPermissions(" + roleId + "," + Isrole + ", " + IsStage + "," + installedappid + ")";
  352. }
  353. else {
  354. admininstruction = " - This is admin default role can't access";
  355. }
  356. var html = "<section class='no-border Role-panel clearfix roleid-" + roleId + "' >" +
  357. "<header class='panel-heading border-bottom border-secondary roleHeader'>" +
  358. "<div class='row align-items-center'><a class='list-group col-sm-11 col-10' href='javascript:;' onclick='" + link + "' class='panel-toggle text-muted sliderdiv2'><div class='text-body d-flex align-items-center mt-10 mb-10 biz-highlight-bg-color'><span class='font-bold ml-10 col-sm-10'>" + roleName + admininstruction + "</span>" +
  359. "<span class='btn pull-right col-sm-1 col-1 p-0'><i class='fa fa-chevron-up d-none pull-right biz-highlight-bg-color'></i><i class='fa fa-chevron-down pull-right'></i></span></div></a>";
  360. if (IsAdminRole != true) {
  361. html += "<span class='col-2 col-sm-1'><a onclick='Unibase.Platform.Permissions.Components.EditRole.Instance().editRole(" + roleId + ", " + installedappid + ");' class='btn pull-right col-sm-1'><i class='fa fa-pencil pull-right biz-highlight-bg-color'></i></a></span>";
  362. }
  363. html += "</div></header>" +
  364. "<div id='panelId-" + roleId + "' class='panel-body bg-white collapse container'>" +
  365. "<div class='sliderdiv mr-10'>" +
  366. "</div>" +
  367. "</div>" +
  368. "</section>";
  369. var info = $('.rolelist-div').find(".roleid-" + roleId + "");
  370. if (IsAdminRole == true) {
  371. if (info.length == 0) {
  372. $('.rolelist-div').prepend(html);
  373. }
  374. }
  375. else {
  376. if (info.length == 0) {
  377. $('.rolelist-div').append(html);
  378. }
  379. }
  380. }
  381. ;
  382. }
  383. });
  384. }
  385. changeAppRoleSetting(settingValue, settingName, roleId, SId, approleSettingId, appinstalledid) {
  386. var instance = this;
  387. var InstalledAppId = appinstalledid;
  388. if (InstalledAppId == undefined) {
  389. InstalledAppId = 0;
  390. }
  391. let reqObj = new Unibase.Platform.Permissions.Requests.AppPermission();
  392. reqObj.StageId = Number(SId);
  393. reqObj.RoleId = Number(roleId);
  394. reqObj.SettingValue = settingValue;
  395. reqObj.SettingName = settingName;
  396. reqObj.InstalledAppId = Number(InstalledAppId);
  397. reqObj.AppPermissionId = Number(approleSettingId);
  398. instance.ipermissionmanager.saveRoleSetting(reqObj).then(function (response) {
  399. if (response.status == Unibase.Data.Status.Error) {
  400. MessageHelper.Instance().showError(response.message, "div_errormessage");
  401. }
  402. else {
  403. MessageHelper.Instance().showSuccess(response.message, "div_errormessage");
  404. }
  405. });
  406. }
  407. static Instance() {
  408. return new Permission();
  409. }
  410. }
  411. Components.Permission = Permission;
  412. })(Components = Permissions.Components || (Permissions.Components = {}));
  413. })(Permissions = Platform.Permissions || (Platform.Permissions = {}));
  414. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  415. })(Unibase || (Unibase = {}));