Take verbs of role for initial advanced permission settings

This commit is contained in:
Rene Pfeuffer
2019-05-16 12:19:52 +02:00
parent e34781789d
commit bb2dc3738d
3 changed files with 27 additions and 5 deletions

View File

@@ -17,6 +17,7 @@ import {
import * as validator from "../components/permissionValidation";
import RoleSelector from "../components/RoleSelector";
import AdvancedPermissionsDialog from "./AdvancedPermissionsDialog";
import { findVerbsForRole } from "../modules/permissions";
type Props = {
availableRoles: RepositoryRole[],
@@ -142,10 +143,12 @@ class CreatePermissionForm extends React.Component<Props, State> {
const availableRoleNames = availableRoles.map(r => r.name);
const selectedVerbs = role ? findVerbsForRole(availableRoles, role) : verbs;
const advancedDialog = showAdvancedDialog ? (
<AdvancedPermissionsDialog
availableVerbs={availableVerbs}
selectedVerbs={verbs}
selectedVerbs={selectedVerbs}
onClose={this.closeAdvancedPermissionsDialog}
onSubmit={this.submitAdvancedPermissionsDialog}
/>

View File

@@ -6,7 +6,8 @@ import {
modifyPermission,
isModifyPermissionPending,
deletePermission,
isDeletePermissionPending
isDeletePermissionPending,
findVerbsForRole
} from "../modules/permissions";
import { connect } from "react-redux";
import type { History } from "history";
@@ -131,11 +132,15 @@ class SinglePermission extends React.Component<Props, State> {
</td>
);
const advancedDialg = showAdvancedDialog ? (
const selectedVerbs = permission.role
? findVerbsForRole(availableRepositoryRoles, permission.role)
: permission.verbs;
const advancedDialog = showAdvancedDialog ? (
<AdvancedPermissionsDialog
readOnly={readOnly}
availableVerbs={availableRepositoryVerbs}
selectedVerbs={permission.verbs}
selectedVerbs={selectedVerbs}
onClose={this.closeAdvancedPermissionsDialog}
onSubmit={this.submitAdvancedPermissionsDialog}
/>
@@ -174,7 +179,7 @@ class SinglePermission extends React.Component<Props, State> {
deletePermission={this.deletePermission}
loading={this.props.deleteLoading}
/>
{advancedDialg}
{advancedDialog}
</td>
</tr>
);

View File

@@ -739,3 +739,17 @@ export function getModifyPermissionsFailure(
}
return null;
}
export function findVerbsForRole(
availableRepositoryRoles: RepositoryRole[],
roleName: string
) {
const matchingRole = availableRepositoryRoles.find(
role => roleName === role.name
);
if (matchingRole) {
return matchingRole.verbs;
} else {
return [];
}
}