@@ -54,5 +54,11 @@ export const disable_tfa = (
|
||||
token
|
||||
);
|
||||
|
||||
export const impersonate = (
|
||||
user: number,
|
||||
token: string
|
||||
): Promise<Responses.Login | Responses.Error> =>
|
||||
get_token(`/api/admin/get_token/${user}`, token);
|
||||
|
||||
export const is_admin = async (token: string): Promise<boolean> =>
|
||||
!isErrorResponse(await get_token('/api/admin/is_admin', token));
|
||||
|
||||
@@ -48,6 +48,16 @@ const setRole = loadingMsgWrapper(
|
||||
}
|
||||
);
|
||||
|
||||
const impersonate = loadingMsgWrapper(message, async (user: number) => {
|
||||
const token = await check_token(jwt);
|
||||
if (!token) return;
|
||||
|
||||
const res = await Admin.impersonate(user, token);
|
||||
if (isErrorResponse(res)) return console.error(res.message);
|
||||
jwt.setToken(res.jwt);
|
||||
await router.push({ path: '/' });
|
||||
});
|
||||
|
||||
const action = (
|
||||
func: (
|
||||
user: number,
|
||||
@@ -122,6 +132,9 @@ const columns: DataTableColumn<Responses.GetUsersEntry>[] = [
|
||||
render(user) {
|
||||
return (
|
||||
<NButtonGroup>
|
||||
<NButton onClick={() => impersonate(user.id)}>
|
||||
Impersonate
|
||||
</NButton>
|
||||
<NButton onClick={() => logoutUser(user.id)}>
|
||||
Logout all
|
||||
</NButton>
|
||||
|
||||
Reference in New Issue
Block a user