On profile deletion, remove the user from nitrate too

This commit is contained in:
Pablo Alba 2026-04-21 14:00:40 +02:00 committed by Pablo Alba
parent 66e34950b2
commit cd320c0cd6
3 changed files with 39 additions and 12 deletions

View File

@ -1,3 +1,9 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.nitrate (ns app.nitrate
"Module that make calls to the external nitrate aplication" "Module that make calls to the external nitrate aplication"
(:require (:require
@ -286,6 +292,16 @@
"/remove-user") "/remove-user")
nil params))) nil params)))
(defn- remove-profile-from-all-orgs-api
[cfg {:keys [profile-id] :as params}]
(let [baseuri (cf/get :nitrate-backend-uri)]
(request-to-nitrate cfg :post
(str baseuri
"/api/users/"
profile-id
"/remove-organizations")
nil params)))
(defn- remove-team-from-org-api (defn- remove-team-from-org-api
[cfg {:keys [team-id organization-id] :as params}] [cfg {:keys [team-id organization-id] :as params}]
(let [baseuri (cf/get :nitrate-backend-uri) (let [baseuri (cf/get :nitrate-backend-uri)
@ -330,17 +346,18 @@
(defmethod ig/init-key ::client (defmethod ig/init-key ::client
[_ cfg] [_ cfg]
(when (contains? cf/flags :nitrate) (when (contains? cf/flags :nitrate)
{:get-team-org (partial get-team-org-api cfg) {:get-team-org (partial get-team-org-api cfg)
:set-team-org (partial set-team-org-api cfg) :set-team-org (partial set-team-org-api cfg)
:get-org-membership (partial get-org-membership-api cfg) :get-org-membership (partial get-org-membership-api cfg)
:get-org-membership-by-team (partial get-org-membership-by-team-api cfg) :get-org-membership-by-team (partial get-org-membership-by-team-api cfg)
:get-org-summary (partial get-org-summary-api cfg) :get-org-summary (partial get-org-summary-api cfg)
:add-profile-to-org (partial add-profile-to-org-api cfg) :add-profile-to-org (partial add-profile-to-org-api cfg)
:remove-profile-from-org (partial remove-profile-from-org-api cfg) :remove-profile-from-org (partial remove-profile-from-org-api cfg)
:delete-team (partial delete-team-api cfg) :remove-profile-from-all-orgs (partial remove-profile-from-all-orgs-api cfg)
:remove-team-from-org (partial remove-team-from-org-api cfg) :delete-team (partial delete-team-api cfg)
:get-subscription (partial get-subscription-api cfg) :remove-team-from-org (partial remove-team-from-org-api cfg)
:connectivity (partial get-connectivity-api cfg)})) :get-subscription (partial get-subscription-api cfg)
:connectivity (partial get-connectivity-api cfg)}))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; UTILS ;; UTILS

View File

@ -1,4 +1,12 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns app.rpc.commands.nitrate (ns app.rpc.commands.nitrate
"Nitrate API for Penpot. Provides nitrate-related endpoints to be called
from Penpot frontend."
(:require (:require
[app.common.data :as d] [app.common.data :as d]
[app.common.exceptions :as ex] [app.common.exceptions :as ex]
@ -12,7 +20,6 @@
[app.util.services :as sv])) [app.util.services :as sv]))
(defn assert-is-owner [cfg profile-id team-id] (defn assert-is-owner [cfg profile-id team-id]
(let [perms (teams/get-permissions cfg profile-id team-id)] (let [perms (teams/get-permissions cfg profile-id team-id)]
(when-not (:is-owner perms) (when-not (:is-owner perms)

View File

@ -462,6 +462,9 @@
{:deleted-at deleted-at} {:deleted-at deleted-at}
{:id profile-id}) {:id profile-id})
;; Api call to nitrate
(nitrate/call cfg :remove-profile-from-all-orgs {:profile-id profile-id})
;; Schedule cascade deletion to a worker ;; Schedule cascade deletion to a worker
(wrk/submit! {::db/conn conn (wrk/submit! {::db/conn conn
::wrk/task :delete-object ::wrk/task :delete-object