| (ns metabase-enterprise.advanced-permissions.api.application (:require [metabase-enterprise.advanced-permissions.models.permissions.application-permissions :as a-perms] [metabase.api.common :as api] [metabase.api.macros :as api.macros] [metabase.models.application-permissions-revision :as a-perm-revision] [metabase.util.malli.schema :as ms])) |
(set! *warn-on-reflection* true) | |
(api.macros/defendpoint :get "/graph" "Fetch a graph of Application Permissions." [] (api/check-superuser) (a-perms/graph)) | |
(defn- dejsonify-application-permissions [application-permissions] (into {} (for [[perm-type perm-value] application-permissions] [perm-type (keyword perm-value)]))) | |
(defn- dejsonify-groups [groups] (into {} (for [[group-id application-permissions] groups] [(Integer/parseInt (name group-id)) (dejsonify-application-permissions application-permissions)]))) | |
Fix the types in the graph when it comes in from the API, e.g. converting things like | (defn- dejsonify-graph [graph] (update graph :groups dejsonify-groups)) |
(api.macros/defendpoint :put "/graph" "Do a batch update of Application Permissions by passing a modified graph." [_route-params {skip-graph? :skip-graph force? :force} :- [:map [:skip-graph {:default false} [:maybe ms/BooleanValue]] [:force {:default false} [:maybe ms/BooleanValue]]] body :- :map] (api/check-superuser) (-> body dejsonify-graph (a-perms/update-graph! force?)) (if skip-graph? {:revision (a-perm-revision/latest-id)} (a-perms/graph))) | |