diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 9e90b7a5..98818349 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -5,21 +5,6 @@ MISC ITEMS THAT CAME UP -todo: Cust-User requires User rights - but that's a big thing because it exposes inside user to edit possibly - Need to carve a workaround I guess in the User route and objects - I've thought about it and it still doesn't make sense to have paralel Contact type object because of the notification and auth and on and on at the server - and this is only a problem really at the UI for a couple of forms so better to work around from that end than to re-do a bunch of shit and have to have workarounds all - over the notification code and auth etc etc - also see next item -todo: cust-user form customization would affect adm-user form customization and vice versa - Need a workaround for this, maybe alternate form key would be best, if it's by type then whatever -TODO FOR ABOVE: - Xrights workaround at the server where a user with Customer rights can modify a Contact but not a regular User - form customization workaround with parallel key system - Change to a DataList for all User lists - XNo changing user type after the fact for customer and ho type Users unless rights to full user - todo: TWEAK Init menu code tweaked but not quite right, need to go through as each user role and make sure it's correct right now sales can see admin translations because everyone has read access to translations for themselves I think @@ -51,6 +36,8 @@ todo: customer users and regular users really need to reconsider not using a sta Also roles could then show on the customer-user grid which would be handy for some AT LEAST put a wait spinner on that page +todo: server unreachable error box on login form, show as a warning, not an error, it's not necessarily an unusual condition + todo: deleting customer must attempt to delete the following as they are entered "in" form and not selected externally so they are part of Customer and should delete with it: customer notes @@ -65,13 +52,15 @@ todo: initialize.js is sketchy as hell, it replicates the entire role rights stu if it finds at least one item in the sub array for that group then it can make the container and insert the items - +todo: test Contact vs User rights on routes +todo: test Contact vs User form customization independence todo: Initialize has an expired license section that prevents all other options except fixing the license however I think this is supposed to switch to readonly mode in most cases unless it's a rental license? need to look into this, it's confusing what the intent is there + todo: Case 3595 Mass delete extension Do this early as it will be copied over and over again diff --git a/ayanova/src/api/authorizationroles.js b/ayanova/src/api/authorizationroles.js index 22c827a4..d01eb5c8 100644 --- a/ayanova/src/api/authorizationroles.js +++ b/ayanova/src/api/authorizationroles.js @@ -167,6 +167,14 @@ export default { let r = this.getRights(oType); //convention is change might be defined but not read so canOpen is true eitehr way return r.change == true || r.read == true; + }, + ///////////////////////////////// + // convenience method for forms that deal with multiple object types + // (i.e. grids, history etc, initialization of main menu etc) + // + canChange(oType) { + let r = this.getRights(oType); + return r.change == true; } }; /* diff --git a/ayanova/src/api/initialize.js b/ayanova/src/api/initialize.js index 5bfb1a2b..15e4e2c3 100644 --- a/ayanova/src/api/initialize.js +++ b/ayanova/src/api/initialize.js @@ -489,7 +489,7 @@ function initNavPanel() { } //TRANSLATION - if (window.$gz.role.canOpen(window.$gz.type.Translation)) { + if (window.$gz.role.canChange(window.$gz.type.Translation)) { sub.push({ title: "TranslationList", icon: "$ayiLanguage", @@ -499,7 +499,7 @@ function initNavPanel() { } //REPORT TEMPLATES - if (window.$gz.role.canOpen(window.$gz.type.Report)) { + if (window.$gz.role.canChange(window.$gz.type.Report)) { sub.push({ title: "ReportList", icon: "$ayiThList", @@ -568,7 +568,7 @@ function initNavPanel() { } // SERVER STATE - if (window.$gz.role.canOpen(window.$gz.type.ServerState)) { + if (window.$gz.role.canChange(window.$gz.type.ServerState)) { sub.push({ title: "ServerState", icon: "$ayiDoorOpen", @@ -627,7 +627,7 @@ function initNavPanel() { } // OPS VIEW SERVER CONFIGURATION - if (window.$gz.role.canOpen(window.$gz.type.ServerState)) { + if (window.$gz.role.canOpen(window.$gz.type.GlobalOps)) { sub.push({ title: "ViewServerConfiguration", icon: "$ayiInfoCircle",