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