update: add permissions to project

This commit is contained in:
MTG2000
2022-09-25 11:30:29 +03:00
parent 757dcb2c5e
commit 4b4036fc57
3 changed files with 35 additions and 6 deletions

View File

@@ -15,7 +15,6 @@ const { logError } = require('../../../utils/logger');
const { resolveImgObjectToUrl } = require('../../../utils/resolveImageUrl');
const { paginationArgs, getLnurlDetails, lightningAddressToLnurl } = require('./helpers');
const { ImageInput } = require('./misc');
const { Tournament } = require('./tournament');
const { MakerRole } = require('./users');
@@ -101,10 +100,8 @@ const Project = objectType({
})
// No need to create this "middle" kind of relations
// Instead, just return tournaments
t.list.nonNull.field('tournaments', {
type: Tournament,
t.nonNull.list.nonNull.field('tournaments', {
type: "Tournament",
resolve: (parent) => {
return prisma.tournamentProject.findMany({
where: { project_id: parent.id },
@@ -143,6 +140,24 @@ const Project = objectType({
})
}
})
t.nonNull.list.nonNull.field('permissions', {
type: ProjectPermissionEnum,
resolve: async (parent, _, ctx) => {
const user = await getUserByPubKey(ctx.userPubKey)
if (!user) return [];
const role = (await prisma.projectMember.findUnique({ where: { projectId_userId: { projectId: parent.id, userId: user.id } } }))?.role;
if (!role) return [];
if (role === ROLE_ADMIN) return [PROJECT_PERMISSIONS.UpdateMembers, PROJECT_PERMISSIONS.UpdateInfo];
if (role === ROLE_OWNER) return Object.values(PROJECT_PERMISSIONS);
return []
}
})
}
})
@@ -155,6 +170,18 @@ const TEAM_MEMBER_ROLE = enumType({
members: [ROLE_OWNER, ROLE_ADMIN, ROLE_MAKER],
});
const PROJECT_PERMISSIONS = {
UpdateInfo: "UpdateInfo",
DeleteProject: "DeleteProject",
UpdateAdmins: "UpdateAdmins",
UpdateMembers: "UpdateMembers",
}
const ProjectPermissionEnum = enumType({
name: 'ProjectPermissionEnum',
members: PROJECT_PERMISSIONS,
});
const ProjectMember = objectType({
name: "ProjectMember",
definition(t) {