Add delete permission to group and membership tables

This commit is contained in:
Hongbo Wu 2022-12-08 16:29:19 +08:00
parent 5256fe99ce
commit ff3e8aa29e
3 changed files with 33 additions and 5 deletions

View file

@ -172,19 +172,25 @@ export const leaveGroup = async (
throw new Error('User not in group')
}
const membershipId = membership.id
await t.getRepository(GroupMembership).remove(membership)
if (group.members.length === 1) {
// delete the group if there are no more members
await t.getRepository(Group).remove(group)
return true
}
if (membership.isAdmin) {
// If the user is the admin, we need to promote another user to admin
// If the user is the only admin, we need to promote another user to admin
const hasAdmin = group.members.some(
(m) => m.isAdmin && m.user.id !== user.id
(m) => m.isAdmin && m.id !== membershipId
)
if (!hasAdmin) {
const newAdmin = group.members.find((m) => !m.isAdmin)
if (!newAdmin) {
// delete the group if there are no more members
await t.getRepository(Group).delete({ id: group.id })
return true
throw new Error('No user found')
}
newAdmin.isAdmin = true

View file

@ -0,0 +1,11 @@
-- Type: DO
-- Name: add_delete_permission_to_group
-- Description: Add delete permission to group and membership table
BEGIN;
GRANT DELETE ON omnivore."group" TO omnivore_user;
GRANT DELETE ON omnivore.group_membership TO omnivore_user;
COMMIT;

View file

@ -0,0 +1,11 @@
-- Type: UNDO
-- Name: add_delete_permission_to_group
-- Description: Add delete permission to group and membership table
BEGIN;
REVOKE DELETE ON omnivore.group_membership FROM omnivore_user;
REVOKE DELETE ON omnivore."group" FROM omnivore_user;
COMMIT;