feat(opsserver): add admin user create/delete management and default hosted idp.global auth support
This commit is contained in:
+69
-1
@@ -2637,7 +2637,7 @@ export async function createGatewayClientToken(
|
||||
});
|
||||
}
|
||||
|
||||
// Users (read-only list)
|
||||
// Users
|
||||
export const fetchUsersAction = usersStatePart.createAction(async (statePartArg): Promise<IUsersState> => {
|
||||
const context = getActionContext();
|
||||
const currentState = statePartArg.getState()!;
|
||||
@@ -2666,6 +2666,74 @@ export const fetchUsersAction = usersStatePart.createAction(async (statePartArg)
|
||||
}
|
||||
});
|
||||
|
||||
export const createUserAction = usersStatePart.createAction<{
|
||||
email: string;
|
||||
name?: string;
|
||||
role: interfaces.requests.TUserManagementRole;
|
||||
password: string;
|
||||
enableIdpGlobalAuth?: boolean;
|
||||
}>(async (statePartArg, dataArg, actionContext): Promise<IUsersState> => {
|
||||
const context = getActionContext();
|
||||
const currentState = statePartArg.getState()!;
|
||||
if (!context.identity) return currentState;
|
||||
|
||||
try {
|
||||
const request = new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_CreateUser
|
||||
>('/typedrequest', 'createUser');
|
||||
|
||||
const response = await request.fire({
|
||||
identity: context.identity,
|
||||
email: dataArg.email,
|
||||
name: dataArg.name,
|
||||
role: dataArg.role,
|
||||
password: dataArg.password,
|
||||
enableIdpGlobalAuth: dataArg.enableIdpGlobalAuth,
|
||||
});
|
||||
|
||||
if (!response.success) {
|
||||
throw new Error(response.message || 'Failed to create user');
|
||||
}
|
||||
|
||||
return await actionContext!.dispatch(fetchUsersAction, null);
|
||||
} catch (error) {
|
||||
return {
|
||||
...currentState,
|
||||
error: error instanceof Error ? error.message : 'Failed to create user',
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export const deleteUserAction = usersStatePart.createAction<string>(
|
||||
async (statePartArg, userIdArg, actionContext): Promise<IUsersState> => {
|
||||
const context = getActionContext();
|
||||
const currentState = statePartArg.getState()!;
|
||||
if (!context.identity) return currentState;
|
||||
|
||||
try {
|
||||
const request = new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_DeleteUser
|
||||
>('/typedrequest', 'deleteUser');
|
||||
|
||||
const response = await request.fire({
|
||||
identity: context.identity,
|
||||
id: userIdArg,
|
||||
});
|
||||
|
||||
if (!response.success) {
|
||||
throw new Error(response.message || 'Failed to delete user');
|
||||
}
|
||||
|
||||
return await actionContext!.dispatch(fetchUsersAction, null);
|
||||
} catch (error) {
|
||||
return {
|
||||
...currentState,
|
||||
error: error instanceof Error ? error.message : 'Failed to delete user',
|
||||
};
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
export async function createApiToken(
|
||||
name: string,
|
||||
scopes: interfaces.data.TApiTokenScope[],
|
||||
|
||||
Reference in New Issue
Block a user