Feat/um 114 roles and permissions (#1683)

* Auth checkpoint.

* Merge branch 'dev' into feat/um-114-roles-and-permissions
This commit is contained in:
Brian Cao 2022-12-01 20:53:37 -08:00 committed by GitHub
parent a4e80ca3e5
commit 06bebadbb9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 331 additions and 482 deletions

View file

@ -1,83 +0,0 @@
import { Prisma, Permission } from '@prisma/client';
import prisma from 'lib/prisma';
export async function createPermission(data: Prisma.PermissionCreateInput): Promise<Permission> {
return prisma.client.permission.create({
data,
});
}
export async function getPermission(where: Prisma.PermissionWhereUniqueInput): Promise<Permission> {
return prisma.client.permission.findUnique({
where,
});
}
export async function getPermissions(where: Prisma.PermissionWhereInput): Promise<Permission[]> {
return prisma.client.permission.findMany({
where,
});
}
export async function getPermissionsByUserId(userId, name?: string): Promise<Permission[]> {
return prisma.client.permission.findMany({
where: {
...(name ? { name } : {}),
RolePermission: {
every: {
role: {
is: {
userRoles: {
every: {
userId,
},
},
},
},
},
},
},
});
}
export async function getPermissionsByTeamId(teamId, name?: string): Promise<Permission[]> {
return prisma.client.permission.findMany({
where: {
...(name ? { name } : {}),
RolePermission: {
every: {
role: {
is: {
TeamUser: {
every: {
teamId,
},
},
},
},
},
},
},
});
}
export async function updatePermission(
data: Prisma.PermissionUpdateInput,
where: Prisma.PermissionWhereUniqueInput,
): Promise<Permission> {
return prisma.client.permission.update({
data,
where,
});
}
export async function deletePermission(permissionId: string): Promise<Permission> {
return prisma.client.permission.update({
data: {
isDeleted: true,
},
where: {
id: permissionId,
},
});
}

View file

@ -1,57 +0,0 @@
import { Prisma, Role } from '@prisma/client';
import prisma from 'lib/prisma';
export async function createRole(data: {
id: string;
name: string;
description: string;
}): Promise<Role> {
return prisma.client.role.create({
data,
});
}
export async function getRole(where: Prisma.RoleWhereUniqueInput): Promise<Role> {
return prisma.client.role.findUnique({
where,
});
}
export async function getRoles(where: Prisma.RoleWhereInput): Promise<Role[]> {
return prisma.client.role.findMany({
where,
});
}
export async function getRolesByUserId(userId: string): Promise<Role[]> {
return prisma.client.role.findMany({
where: {
userRoles: {
every: {
userId,
},
},
},
});
}
export async function updateRole(
data: Prisma.RoleUpdateInput,
where: Prisma.RoleWhereUniqueInput,
): Promise<Role> {
return prisma.client.role.update({
data,
where,
});
}
export async function deleteRole(roleId: string): Promise<Role> {
return prisma.client.role.update({
data: {
isDeleted: true,
},
where: {
id: roleId,
},
});
}

View file

@ -5,14 +5,14 @@ import prisma from 'lib/prisma';
export async function createTeamUser(
userId: string,
teamId: string,
roleId: string,
role: string,
): Promise<TeamUser> {
return prisma.client.teamUser.create({
data: {
id: uuid(),
userId,
teamId,
roleId,
role,
},
});
}

View file

@ -36,9 +36,7 @@ export async function getUser(
id: true,
username: true,
userRole: {
include: {
role: true,
},
select: { role: true },
},
password: includePassword,
},

View file

@ -19,7 +19,10 @@ export async function createWebsite(
});
}
export async function updateWebsite(websiteId, data: Prisma.WebsiteUpdateInput): Promise<Website> {
export async function updateWebsite(
websiteId,
data: Prisma.WebsiteUpdateInput | Prisma.WebsiteUncheckedUpdateInput,
): Promise<Website> {
return prisma.client.website.update({
where: {
id: websiteId,
@ -97,7 +100,9 @@ export async function deleteWebsite(websiteId: string) {
});
}
async function deleteWebsiteRelationalQuery(websiteId,): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> {
async function deleteWebsiteRelationalQuery(
websiteId,
): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> {
const { client, transaction } = prisma;
return transaction([