Add impersonation route

This commit is contained in:
nemunaire 2022-09-11 01:05:51 +02:00
commit 95692db8bd
3 changed files with 58 additions and 6 deletions

View file

@ -18,9 +18,25 @@
export let uid;
let allPromos = false;
let myuser = null;
let userP = null;
$: userP = getUser(uid).then((u) => myuser = u)
function impersonate() {
fetch('api/auth/impersonate', {
method: 'POST',
headers: {'Accept': 'application/json'},
body: JSON.stringify({"id": myuser.id}),
}).then(() => {
if (res.status == 200) {
user.update(res);
}
});
}
</script>
{#await getUser(uid)}
{#await userP}
<h2>
Étudiant
</h2>
@ -42,13 +58,22 @@
</h2>
{#if student.promo}
<span class="badge bg-success ms-1">{student.promo}</span>
{#if $user && $user.is_admin && $user.current_promo && student.promo != $user.current_promo}
{#if $user && $user.is_admin}
{#if $user.current_promo && student.promo != $user.current_promo}
<button
class="btn btn-sm btn-warning mx-1"
title="Passer sur la promo en cours"
on:click={() => { student.promo = $user.current_promo; student.save(); }}
>
<i class="bi bi-arrow-up"></i>
</button>
{/if}
<button
class="btn btn-sm btn-warning mx-1"
title="Passer sur la promo en cours"
on:click={() => { student.promo = $user.current_promo; student.save(); }}
class="btn btn-sm btn-primary mx-1"
title="Impersonate"
on:click={impersonate}
>
<i class="bi bi-arrow-up"></i>
<i class="bi bi-person-bounding-box"></i>
</button>
{/if}
{/if}