Access control: Reduce number of API calls for role picker (#44905)

* Restucture state for TeamRolePicker and UserRolePicker

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
This commit is contained in:
Karl Persson
2022-02-04 14:54:42 +01:00
committed by GitHub
parent 61533a3cb4
commit 3cf31451ec
6 changed files with 46 additions and 56 deletions

View File

@@ -28,10 +28,15 @@ const ServiceAccountsTable: FC<Props> = (props) => {
useEffect(() => {
async function fetchOptions() {
try {
let options = await fetchRoleOptions(orgId);
setRoleOptions(options);
const builtInRoles = await fetchBuiltinRoles(orgId);
setBuiltinRoles(builtInRoles);
if (contextSrv.hasPermission(AccessControlAction.ActionRolesList)) {
let options = await fetchRoleOptions(orgId);
setRoleOptions(options);
}
if (contextSrv.hasPermission(AccessControlAction.ActionBuiltinRolesList)) {
const builtInRoles = await fetchBuiltinRoles(orgId);
setBuiltinRoles(builtInRoles);
}
} catch (e) {
console.error('Error loading options');
}
@@ -41,9 +46,6 @@ const ServiceAccountsTable: FC<Props> = (props) => {
}
}, [orgId]);
const getRoleOptions = async () => roleOptions;
const getBuiltinRoles = async () => builtinRoles;
return (
<>
<table className="filter-table form-inline">
@@ -89,8 +91,8 @@ const ServiceAccountsTable: FC<Props> = (props) => {
orgId={orgId}
builtInRole={serviceAccount.role}
onBuiltinRoleChange={(newRole) => onRoleChange(newRole, serviceAccount)}
getRoleOptions={getRoleOptions}
getBuiltinRoles={getBuiltinRoles}
roleOptions={roleOptions}
builtInRoles={builtinRoles}
disabled={rolePickerDisabled}
/>
) : (