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