mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-21 13:47:39 +02:00
https://linear.app/unleash/issue/2-2093/api-should-not-allow-manual-management-of-scim-managed-users-in Introduces a SCIM guard for SCIM users. SCIM users should be managed exclusively by the SCIM client, not Unleash. We decided to be restrictive for now, completely covering all of the write methods, but may fine-tune some of this at a later stage. Will eventually be followed up by a UI-centric PR.
110 lines
2.7 KiB
TypeScript
110 lines
2.7 KiB
TypeScript
import useAPI from '../useApi/useApi';
|
|
|
|
interface IUserPayload {
|
|
name: string;
|
|
email: string;
|
|
id?: string;
|
|
}
|
|
|
|
export const REMOVE_USER_ERROR = 'removeUser';
|
|
|
|
const useAdminUsersApi = () => {
|
|
const { loading, makeRequest, createRequest, errors } = useAPI({
|
|
propagateErrors: true,
|
|
});
|
|
|
|
const addUser = async (user: IUserPayload) => {
|
|
const requestId = 'addUser';
|
|
const req = createRequest(
|
|
'api/admin/user-admin',
|
|
{
|
|
method: 'POST',
|
|
body: JSON.stringify(user),
|
|
},
|
|
requestId,
|
|
);
|
|
|
|
return makeRequest(req.caller, req.id);
|
|
};
|
|
|
|
const removeUser = async (userId: number) => {
|
|
const requestId = 'removeUser';
|
|
const req = createRequest(
|
|
`api/admin/user-admin/${userId}`,
|
|
{ method: 'DELETE' },
|
|
requestId,
|
|
);
|
|
|
|
return makeRequest(req.caller, req.id);
|
|
};
|
|
|
|
const updateUser = async (user: IUserPayload) => {
|
|
const requestId = 'updateUser';
|
|
const req = createRequest(
|
|
`api/admin/user-admin/${user.id}`,
|
|
{
|
|
method: 'PUT',
|
|
body: JSON.stringify(user),
|
|
},
|
|
requestId,
|
|
);
|
|
|
|
return makeRequest(req.caller, req.id);
|
|
};
|
|
|
|
const changePassword = async (userId: number, password: string) => {
|
|
const requestId = 'changePassword';
|
|
const req = createRequest(
|
|
`api/admin/user-admin/${userId}/change-password`,
|
|
{
|
|
method: 'POST',
|
|
body: JSON.stringify({ password }),
|
|
},
|
|
requestId,
|
|
);
|
|
|
|
return makeRequest(req.caller, req.id);
|
|
};
|
|
|
|
const validatePassword = async (password: string) => {
|
|
const requestId = 'validatePassword';
|
|
const req = createRequest(
|
|
`api/admin/user-admin/validate-password`,
|
|
{
|
|
method: 'POST',
|
|
body: JSON.stringify({ password }),
|
|
},
|
|
requestId,
|
|
);
|
|
|
|
return makeRequest(req.caller, req.id);
|
|
};
|
|
|
|
const resetPassword = async (email: string) => {
|
|
const requestId = 'resetPassword';
|
|
const req = createRequest(
|
|
'api/admin/user-admin/reset-password',
|
|
{
|
|
method: 'POST',
|
|
body: JSON.stringify({ id: email }),
|
|
},
|
|
requestId,
|
|
);
|
|
|
|
return makeRequest(req.caller, req.id);
|
|
};
|
|
|
|
return {
|
|
addUser,
|
|
updateUser,
|
|
removeUser,
|
|
changePassword,
|
|
validatePassword,
|
|
resetPassword,
|
|
userApiErrors: errors,
|
|
userLoading: loading,
|
|
};
|
|
};
|
|
|
|
export default useAdminUsersApi;
|