Link up teams UI.

This commit is contained in:
Brian Cao 2023-03-08 22:48:20 -08:00
parent bb2cd93ad4
commit aa9ad5594c
18 changed files with 504 additions and 114 deletions

View file

@ -1,10 +1,11 @@
import debug from 'debug';
import { validate } from 'uuid';
import cache from 'lib/cache';
import { PERMISSIONS, ROLE_PERMISSIONS, SHARE_TOKEN_HEADER } from 'lib/constants';
import { secret } from 'lib/crypto';
import { ensureArray, parseSecureToken, parseToken } from 'next-basics';
import { getTeamUser } from 'queries';
import { getTeamWebsite, getTeamWebsiteByWebsiteIdUserId } from 'queries/admin/teamWebsite';
import { validate } from 'uuid';
import { Auth } from './types';
const log = debug('umami:auth');
@ -55,6 +56,12 @@ export async function canViewWebsite({ user, shareToken }: Auth, websiteId: stri
return true;
}
const teamWebsite = await getTeamWebsiteByWebsiteIdUserId(websiteId, user.id);
if (teamWebsite) {
return true;
}
if (shareToken?.websiteId === websiteId) {
return true;
}
@ -160,6 +167,26 @@ export async function canDeleteTeam({ user }: Auth, teamId: string) {
return false;
}
export async function canDeleteTeamWebsite({ user }: Auth, teamWebsiteId: string) {
if (user.isAdmin) {
return true;
}
if (validate(teamWebsiteId)) {
const teamWebsite = await getTeamWebsite(teamWebsiteId);
if (teamWebsite.website.userId === user.id) {
return true;
}
const teamUser = await getTeamUser(teamWebsite.teamId, user.id);
return hasPermission(teamUser.role, PERMISSIONS.teamDelete);
}
return false;
}
export async function canCreateUser({ user }: Auth) {
return user.isAdmin;
}