| (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))) | |