fix: team switching

This commit is contained in:
Andras Bacsai 2022-08-26 18:44:51 +00:00
parent 4c5e71f33c
commit 570b286ef9
2 changed files with 29 additions and 21 deletions

View File

@ -160,6 +160,7 @@ export async function getTeam(request: FastifyRequest<OnlyId>, reply: FastifyRep
const invitations = await prisma.teamInvitation.findMany({ where: { teamId: team.id } }); const invitations = await prisma.teamInvitation.findMany({ where: { teamId: team.id } });
const { teams } = await prisma.user.findUnique({ where: { id: userId }, include: { teams: true } }) const { teams } = await prisma.user.findUnique({ where: { id: userId }, include: { teams: true } })
return { return {
currentTeam: teamId,
team, team,
teams, teams,
permissions, permissions,

View File

@ -25,6 +25,8 @@
</script> </script>
<script lang="ts"> <script lang="ts">
export let team: any;
export let currentTeam: string;
export let teams: any; export let teams: any;
import { page } from '$app/stores'; import { page } from '$app/stores';
import { errorNotification, handlerNotFoundLoad } from '$lib/common'; import { errorNotification, handlerNotFoundLoad } from '$lib/common';
@ -40,18 +42,21 @@
if (sure) { if (sure) {
try { try {
await del(`/iam/team/${id}`, { id }); await del(`/iam/team/${id}`, { id });
const switchTeam = teams.find((team: any) => team.id !== id) if (currentTeam === id) {
const payload = await get(`/user?teamId=${switchTeam.id}`); const switchTeam = teams.find((team: any) => team.id !== id);
if (payload.token) { const payload = await get(`/user?teamId=${switchTeam.id}`);
Cookies.set('token', payload.token, { if (payload.token) {
path: '/' Cookies.set('token', payload.token, {
}); path: '/'
$appSession.teamId = payload.teamId; });
$appSession.userId = payload.userId; $appSession.teamId = payload.teamId;
$appSession.permission = payload.permission; $appSession.userId = payload.userId;
$appSession.isAdmin = payload.isAdmin; $appSession.permission = payload.permission;
return window.location.assign('/iam'); $appSession.isAdmin = payload.isAdmin;
return window.location.assign('/iam');
}
} }
return await goto('/iam', { replaceState: true }); return await goto('/iam', { replaceState: true });
} catch (error) { } catch (error) {
return errorNotification(error); return errorNotification(error);
@ -62,16 +67,18 @@
{#if id !== 'new'} {#if id !== 'new'}
<nav class="nav-side"> <nav class="nav-side">
<button {#if team.id !== '0'}
on:click={deleteTeam} <button
type="submit" on:click={deleteTeam}
disabled={!$appSession.isAdmin} type="submit"
class:hover:text-red-500={$appSession.isAdmin} disabled={!$appSession.isAdmin}
class="icons tooltip tooltip-primary tooltip-left bg-transparent text-sm" class:hover:text-red-500={$appSession.isAdmin}
data-tip={$appSession.isAdmin class="icons tooltip tooltip-primary tooltip-left bg-transparent text-sm"
? 'Delete' data-tip={$appSession.isAdmin
: $t('destination.permission_denied_delete_destination')}><DeleteIcon /></button ? 'Delete'
> : $t('destination.permission_denied_delete_destination')}><DeleteIcon /></button
>
{/if}
</nav> </nav>
{/if} {/if}
<slot /> <slot />