mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
add error and failure handling for group and user permission
This commit is contained in:
@@ -127,7 +127,7 @@ class Permissions extends React.Component<Props> {
|
||||
{permissions.map(permission => {
|
||||
return (
|
||||
<SinglePermission
|
||||
key={permission.name}
|
||||
key={permission.name + permission.groupPermission.toString()}
|
||||
namespace={namespace}
|
||||
repoName={repoName}
|
||||
permission={permission}
|
||||
|
||||
@@ -140,13 +140,13 @@ const mapStateToProps = (state, ownProps) => {
|
||||
state,
|
||||
ownProps.namespace,
|
||||
ownProps.repoName,
|
||||
permission.name
|
||||
permission
|
||||
);
|
||||
const deleteLoading = isDeletePermissionPending(
|
||||
state,
|
||||
ownProps.namespace,
|
||||
ownProps.repoName,
|
||||
permission.name
|
||||
permission
|
||||
);
|
||||
|
||||
return { loading, deleteLoading };
|
||||
|
||||
@@ -162,7 +162,7 @@ export function modifyPermissionPending(
|
||||
return {
|
||||
type: MODIFY_PERMISSION_PENDING,
|
||||
payload: permission,
|
||||
itemId: namespace + "/" + repoName + "/" + permission.name
|
||||
itemId: createItemId(permission, namespace, repoName)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ export function modifyPermissionSuccess(
|
||||
permission,
|
||||
position: namespace + "/" + repoName
|
||||
},
|
||||
itemId: namespace + "/" + repoName + "/" + permission.name
|
||||
itemId: createItemId(permission, namespace, repoName)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ export function modifyPermissionFailure(
|
||||
return {
|
||||
type: MODIFY_PERMISSION_FAILURE,
|
||||
payload: { error, permission },
|
||||
itemId: namespace + "/" + repoName + "/" + permission.name
|
||||
itemId: createItemId(permission, namespace, repoName)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -342,7 +342,7 @@ export function deletePermissionPending(
|
||||
return {
|
||||
type: DELETE_PERMISSION_PENDING,
|
||||
payload: permission,
|
||||
itemId: namespace + "/" + repoName + "/" + permission.name
|
||||
itemId: createItemId(permission, namespace, repoName)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -357,7 +357,7 @@ export function deletePermissionSuccess(
|
||||
permission,
|
||||
position: namespace + "/" + repoName
|
||||
},
|
||||
itemId: namespace + "/" + repoName + "/" + permission.name
|
||||
itemId: createItemId(permission, namespace, repoName)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -373,7 +373,7 @@ export function deletePermissionFailure(
|
||||
error,
|
||||
permission
|
||||
},
|
||||
itemId: namespace + "/" + repoName + "/" + permission.name
|
||||
itemId: createItemId(permission, namespace, repoName)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -400,6 +400,15 @@ function deletePermissionFromState(
|
||||
return newPermission;
|
||||
}
|
||||
|
||||
function createItemId(
|
||||
permission: Permission,
|
||||
namespace: string,
|
||||
repoName: string
|
||||
) {
|
||||
let groupPermission = permission.groupPermission ? "@" : "";
|
||||
return namespace + "/" + repoName + "/" + groupPermission + permission.name;
|
||||
}
|
||||
|
||||
// reducer
|
||||
export default function reducer(
|
||||
state: Object = {},
|
||||
@@ -493,12 +502,12 @@ export function isModifyPermissionPending(
|
||||
state: Object,
|
||||
namespace: string,
|
||||
repoName: string,
|
||||
permissionname: string
|
||||
permission: Permission
|
||||
) {
|
||||
return isPending(
|
||||
state,
|
||||
MODIFY_PERMISSION,
|
||||
namespace + "/" + repoName + "/" + permissionname
|
||||
createItemId(permission, namespace, repoName)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -506,12 +515,12 @@ export function getModifyPermissionFailure(
|
||||
state: Object,
|
||||
namespace: string,
|
||||
repoName: string,
|
||||
permissionname: string
|
||||
permission: Permission
|
||||
) {
|
||||
return getFailure(
|
||||
state,
|
||||
MODIFY_PERMISSION,
|
||||
namespace + "/" + repoName + "/" + permissionname
|
||||
createItemId(permission, namespace, repoName)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -544,12 +553,12 @@ export function isDeletePermissionPending(
|
||||
state: Object,
|
||||
namespace: string,
|
||||
repoName: string,
|
||||
permissionname: string
|
||||
permission: Permission
|
||||
) {
|
||||
return isPending(
|
||||
state,
|
||||
DELETE_PERMISSION,
|
||||
namespace + "/" + repoName + "/" + permissionname
|
||||
createItemId(permission, namespace, repoName)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -557,12 +566,12 @@ export function getDeletePermissionFailure(
|
||||
state: Object,
|
||||
namespace: string,
|
||||
repoName: string,
|
||||
permissionname: string
|
||||
permission: Permission
|
||||
) {
|
||||
return getFailure(
|
||||
state,
|
||||
DELETE_PERMISSION,
|
||||
namespace + "/" + repoName + "/" + permissionname
|
||||
createItemId(permission, namespace, repoName)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -578,17 +587,12 @@ export function getDeletePermissionsFailure(
|
||||
if (permissions == null) return undefined;
|
||||
for (let i = 0; i < permissions.length; i++) {
|
||||
if (
|
||||
getDeletePermissionFailure(
|
||||
state,
|
||||
namespace,
|
||||
repoName,
|
||||
permissions[i].name
|
||||
)
|
||||
getDeletePermissionFailure(state, namespace, repoName, permissions[i])
|
||||
) {
|
||||
return getFailure(
|
||||
state,
|
||||
DELETE_PERMISSION,
|
||||
namespace + "/" + repoName + "/" + permissions[i].name
|
||||
createItemId(permissions[i], namespace, repoName)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -607,17 +611,12 @@ export function getModifyPermissionsFailure(
|
||||
if (permissions == null) return undefined;
|
||||
for (let i = 0; i < permissions.length; i++) {
|
||||
if (
|
||||
getModifyPermissionFailure(
|
||||
state,
|
||||
namespace,
|
||||
repoName,
|
||||
permissions[i].name
|
||||
)
|
||||
getModifyPermissionFailure(state, namespace, repoName, permissions[i])
|
||||
) {
|
||||
return getFailure(
|
||||
state,
|
||||
MODIFY_PERMISSION,
|
||||
namespace + "/" + repoName + "/" + permissions[i].name
|
||||
createItemId(permissions[i], namespace, repoName)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ import type { Permission, PermissionCollection } from "@scm-manager/ui-types";
|
||||
const hitchhiker_puzzle42Permission_user_eins: Permission = {
|
||||
name: "user_eins",
|
||||
type: "READ",
|
||||
groupPermission: true,
|
||||
groupPermission: false,
|
||||
_links: {
|
||||
self: {
|
||||
href:
|
||||
@@ -570,13 +570,23 @@ describe("permissions selectors", () => {
|
||||
}
|
||||
};
|
||||
expect(
|
||||
isModifyPermissionPending(state, "hitchhiker", "puzzle42", "user_eins")
|
||||
isModifyPermissionPending(
|
||||
state,
|
||||
"hitchhiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toEqual(true);
|
||||
});
|
||||
|
||||
it("should return false, when modify permission is not pending", () => {
|
||||
expect(
|
||||
isModifyPermissionPending({}, "hitchiker", "puzzle42", "user_eins")
|
||||
isModifyPermissionPending(
|
||||
{},
|
||||
"hitchiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toEqual(false);
|
||||
});
|
||||
|
||||
@@ -587,13 +597,23 @@ describe("permissions selectors", () => {
|
||||
}
|
||||
};
|
||||
expect(
|
||||
getModifyPermissionFailure(state, "hitchhiker", "puzzle42", "user_eins")
|
||||
getModifyPermissionFailure(
|
||||
state,
|
||||
"hitchhiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toEqual(error);
|
||||
});
|
||||
|
||||
it("should return undefined when modify permission did not fail", () => {
|
||||
expect(
|
||||
getModifyPermissionFailure({}, "hitchhiker", "puzzle42", "user_eins")
|
||||
getModifyPermissionFailure(
|
||||
{},
|
||||
"hitchhiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toBe(undefined);
|
||||
});
|
||||
|
||||
@@ -646,13 +666,23 @@ describe("permissions selectors", () => {
|
||||
}
|
||||
};
|
||||
expect(
|
||||
isDeletePermissionPending(state, "hitchhiker", "puzzle42", "user_eins")
|
||||
isDeletePermissionPending(
|
||||
state,
|
||||
"hitchhiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toEqual(true);
|
||||
});
|
||||
|
||||
it("should return false, when delete permission is not pending", () => {
|
||||
expect(
|
||||
isDeletePermissionPending({}, "hitchiker", "puzzle42", "user_eins")
|
||||
isDeletePermissionPending(
|
||||
{},
|
||||
"hitchiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toEqual(false);
|
||||
});
|
||||
|
||||
@@ -663,13 +693,23 @@ describe("permissions selectors", () => {
|
||||
}
|
||||
};
|
||||
expect(
|
||||
getDeletePermissionFailure(state, "hitchhiker", "puzzle42", "user_eins")
|
||||
getDeletePermissionFailure(
|
||||
state,
|
||||
"hitchhiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toEqual(error);
|
||||
});
|
||||
|
||||
it("should return undefined when delete permission did not fail", () => {
|
||||
expect(
|
||||
getDeletePermissionFailure({}, "hitchhiker", "puzzle42", "user_eins")
|
||||
getDeletePermissionFailure(
|
||||
{},
|
||||
"hitchhiker",
|
||||
"puzzle42",
|
||||
hitchhiker_puzzle42Permission_user_eins
|
||||
)
|
||||
).toBe(undefined);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user