mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Add delete permission to group and membership tables
This commit is contained in:
parent
5256fe99ce
commit
ff3e8aa29e
3 changed files with 33 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
11
packages/db/migrations/0103.do.add_delete_permission_to_group.sql
Executable file
11
packages/db/migrations/0103.do.add_delete_permission_to_group.sql
Executable 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;
|
||||
11
packages/db/migrations/0103.undo.add_delete_permission_to_group.sql
Executable file
11
packages/db/migrations/0103.undo.add_delete_permission_to_group.sql
Executable 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;
|
||||
Loading…
Reference in a new issue