case 4232

This commit is contained in:
2022-11-03 21:02:09 +00:00
parent 9d21ded748
commit d4d1cd585f

View File

@@ -182,33 +182,53 @@ export default {
return ret;
},
canAdd: function() {
//first check most obvious disqualifying properties
//first check most obvious disqualifying property which is that user is not allowed to change at all
if (!this.pvm.rights.change) {
return false;
}
//not currently locked, user has rights to do it so allow it
if (!this.value.isLockedAtServer) {
return true;
}
//FACT: isLockedAtServer is *only* set when the status is a locking status, no other time, it's poorly named
//and should be isSetToALockedStatus but here we are, it's post release, can't change it now
//locked, confirm if user can change it
//if any role then no problem
//ok, only thing left to check is if the current user can unlock this
//get remove roles required for current state
//for purposes of making changes here it doesn't really matter if it's locked status or not, all that needs to be known is
//can the user remove this status
const cs = this.pvm.currentState;
if (cs.removeRoles == null || cs.removeRoles == 0) {
//no state set yet
if (cs == null || cs.removeRoles == null || cs.removeRoles == 0) {
//no state set yet or no remove roles set so nothing to check against
return true;
}
//ok, need to check the role here against current user roles to see if this is valid
//We have a state set already, need to check the role here against current user roles to see if this user is allowed to add a state
if (window.$gz.role.hasRole(cs.removeRoles)) {
return true;
}
//it's locked and there seems to be no reason to allow a change so no
return false;
// //not currently locked, user has rights to do it so allow it
// if (!this.value.isLockedAtServer) {
// return true;
// }
// //locked, confirm if user can change it
// //if any role then no problem
// //ok, only thing left to check is if the current user can unlock this
// //get remove roles required for current state
// const cs = this.pvm.currentState;
// if (cs.removeRoles == null || cs.removeRoles == 0) {
// //no state set yet
// return true;
// }
// //ok, need to check the role here against current user roles to see if this is valid
// if (window.$gz.role.hasRole(cs.removeRoles)) {
// return true;
// }
// return false;
},
allErrors: function() {
let ret = "";