From ea3f2fbfced1dfafa807c28a808d88ba93847c7e Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Mon, 29 Mar 2021 10:27:44 +0200 Subject: [PATCH] :bug: Fix issue when promoting to owner --- CHANGES.md | 1 + backend/src/app/rpc/mutations/teams.clj | 17 +++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 6aa1b1c26..1490af28f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -60,6 +60,7 @@ - Fix text selection in comments [#745](https://github.com/penpot/penpot/issues/745) - Update Work-Sans font [#744](https://github.com/penpot/penpot/issues/744) - Fix issue with recent files not showing [Taiga #1493](https://tree.taiga.io/project/penpot/issue/1493) +- Fix issue when promoting to owner [Taiga #1494](https://tree.taiga.io/project/penpot/issue/1494) ### :arrow_up: Deps updates diff --git a/backend/src/app/rpc/mutations/teams.clj b/backend/src/app/rpc/mutations/teams.clj index be2c428a6..c1934de9d 100644 --- a/backend/src/app/rpc/mutations/teams.clj +++ b/backend/src/app/rpc/mutations/teams.clj @@ -174,7 +174,10 @@ ;; convenience, if this bocomes a bottleneck or problematic, ;; we will change it to more efficient fetch mechanims. members (teams/retrieve-team-members conn team-id) - member (d/seek #(= member-id (:id %)) members)] + member (d/seek #(= member-id (:id %)) members) + + is-owner? (some :is-owner perms) + is-admin? (some :is-admin perms)] ;; If no member is found, just 404 (when-not member @@ -182,8 +185,7 @@ :code :member-does-not-exist)) ;; First check if we have permissions to change roles - (when-not (or (some :is-owner perms) - (some :is-admin perms)) + (when-not (or is-owner? is-admin?) (ex/raise :type :validation :code :insufficient-permissions)) @@ -193,21 +195,20 @@ :code :cant-change-role-to-owner)) ;; Don't allow promote to owner to admin users. - (when (and (= role :owner) - (not (:is-owner perms))) + (when (and (not is-owner?) (= role :owner)) (ex/raise :type :validation :code :cant-promote-to-owner)) (let [params (role->params role)] ;; Only allow single owner on team - (when (and (= role :owner) - (:is-owner perms)) + (when (= role :owner) (db/update! conn :team-profile-rel {:is-owner false} {:team-id team-id :profile-id profile-id})) - (db/update! conn :team-profile-rel params + (db/update! conn :team-profile-rel + params {:team-id team-id :profile-id member-id}) nil))))