diff --git a/app/controllers/organizations/users_controller.rb b/app/controllers/organizations/users_controller.rb
index 61c1beddfee..f70fb8ae866 100644
--- a/app/controllers/organizations/users_controller.rb
+++ b/app/controllers/organizations/users_controller.rb
@@ -2,12 +2,6 @@
class Organizations::UsersController < OrganizationsController
def index
- @permissions = organization.organization_permissions.select(
- :permission, :description, :enabled, :parent_permission_id, :default_for_admin, :id
- )
-
- @user_permissions = user_permissions
-
respond_to do |format|
format.html { render template: "queue/index" }
format.json do
@@ -18,7 +12,11 @@ def index
dvc_team: organization.type == DvcTeam.name,
organization_users: json_administered_users(organization_users),
membership_requests: pending_membership_requests,
- isVhaOrg: vha_organization?
+ isVhaOrg: vha_organization?,
+ organization_permissions: organization.organization_permissions.select(
+ :permission, :description, :enabled, :parent_permission_id, :default_for_admin, :id
+ ),
+ organization_user_permissions: user_permissions
}
end
end
diff --git a/client/app/queue/OrganizationPermissions.jsx b/client/app/queue/OrganizationPermissions.jsx
index 800f0ceff3c..caad13f18ae 100644
--- a/client/app/queue/OrganizationPermissions.jsx
+++ b/client/app/queue/OrganizationPermissions.jsx
@@ -67,7 +67,7 @@ const OrganizationPermissions = (props) => {
let result = false;
const parentPermission = props.permissions.find((permission) => permission.id === parentId);
- const orgUserPermissions = props.orgnizationUserPermissions.find((x) =>
+ const orgUserPermissions = props.organizationUserPermissions.find((x) =>
x.user_id === Number(userId)).organization_user_permissions;
const checkboxInState = toggledCheckboxes.find((permission) =>
@@ -101,38 +101,36 @@ const OrganizationPermissions = (props) => {
storedCheckbox.permissionName === permission.permission
);
- if (
- toggledCheckboxes.find(
- (checkboxInState) =>
- checkboxInState.userId === user.id &&
- checkboxInState.permissionName === permission.permission &&
- checkboxInState.checked
- )
- ) {
- isEnabled = true;
- }
+ const isCheckboxEnabledInState = toggledCheckboxes.find(
+ (checkboxInState) =>
+ checkboxInState.userId === user.id &&
+ checkboxInState.permissionName === permission.permission &&
+ checkboxInState.checked
+ );
// check if user is marked as admin to auto check the checkbox.
- if (permission.default_for_admin && user.attributes.admin) {
- isEnabled = true;
- }
+ const isUserAdmin = permission.default_for_admin && user.attributes.admin;
- if (typeof stateValue !== 'undefined') {
- isEnabled = stateValue.checked;
- }
+ const isCheckboxDefinedInState = typeof stateValue !== 'undefined';
// default state that came in when page loads, used as final fallback.
- const relevantPermissions = props.orgnizationUserPermissions.find(
- (oup) => oup.user_id === Number(user.id)
- ).organization_user_permissions;
+ const isCheckboxPermittedInDefaultState = () => {
+ const relevantPermissions = props.organizationUserPermissions.find(
+ (oup) => oup.user_id === Number(user.id)
+ ).organization_user_permissions;
- if (
- relevantPermissions.find(
+ return relevantPermissions.find(
(perm) =>
perm.organization_permission.permission === permission.permission &&
perm.permitted
- )
- ) {
+ );
+ };
+
+ if (isCheckboxEnabledInState || isUserAdmin) {
+ isEnabled = true;
+ } else if (isCheckboxDefinedInState) {
+ isEnabled = stateValue.checked;
+ } else if (isCheckboxPermittedInDefaultState()) {
isEnabled = true;
}
@@ -185,17 +183,17 @@ const OrganizationPermissions = (props) => {
return (parentPermissionChecked(user.id, permission.parent_permission_id) &&
permissionAdminCheck(user, permission) &&
-