@@ -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