feat: implement user impersonation
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
|
||||
import { useUsersList } from "./useUsersList";
|
||||
import { useUserForm } from "./useUserForm";
|
||||
import { useUserDialogs } from "./useUserDialogs";
|
||||
import { useUserOperations } from "./useUserOperations";
|
||||
import { User } from "@/services/userService";
|
||||
import { UserFormValues, NewUserFormValues } from "../userForms";
|
||||
import { useState } from "react";
|
||||
|
||||
export const useUserManagement = () => {
|
||||
const { users, loading, error, fetchUsers } = useUsersList();
|
||||
@@ -32,6 +32,7 @@ export const useUserManagement = () => {
|
||||
handleDeleteUser: baseHandleDeleteUser,
|
||||
onSubmit: baseOnSubmit,
|
||||
onAddUser: baseOnAddUser,
|
||||
onImpersonate: baseOnImpersonate,
|
||||
} = useUserOperations(
|
||||
fetchUsers,
|
||||
setIsDialogOpen,
|
||||
@@ -42,6 +43,9 @@ export const useUserManagement = () => {
|
||||
newUserForm.reset
|
||||
);
|
||||
|
||||
const [impersonationToken, setImpersonationToken] = useState<string | null>(null);
|
||||
const [isImpersonationTokenDialogOpen, setIsImpersonationTokenDialogOpen] = useState(false);
|
||||
|
||||
// Wrapper functions to provide the needed arguments
|
||||
const handleEditUser = (user: User) => {
|
||||
baseHandleEditUser(user, form);
|
||||
@@ -56,6 +60,15 @@ export const useUserManagement = () => {
|
||||
baseOnSubmit(data, currentUser);
|
||||
};
|
||||
|
||||
const onImpersonate = async (data: UserFormValues) => {
|
||||
const token = await baseOnImpersonate(data, currentUser);
|
||||
|
||||
if (token) {
|
||||
setImpersonationToken(token);
|
||||
setIsImpersonationTokenDialogOpen(true);
|
||||
}
|
||||
};
|
||||
|
||||
const onAddUser = (data: NewUserFormValues) => {
|
||||
baseOnAddUser(data);
|
||||
};
|
||||
@@ -81,6 +94,10 @@ export const useUserManagement = () => {
|
||||
handleDeletePrompt,
|
||||
handleDeleteUser,
|
||||
onSubmit,
|
||||
onImpersonate,
|
||||
onAddUser,
|
||||
impersonationToken,
|
||||
isImpersonationTokenDialogOpen,
|
||||
setIsImpersonationTokenDialogOpen,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user