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

View File

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

View File

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