(ns auto-ap.graphql.utils (:require [clojure.string :as str] [buddy.auth :refer [throw-unauthorized]] [clojure.walk :as walk])) (defn snake->kebab [s] (str/replace s #"_" "-")) (defn kebab [x] (keyword (snake->kebab (name x)))) (defn kebab->snake [s] (str/replace s #"-" "_")) (defn snake [x] (keyword (kebab->snake (name x)))) (defn ->graphql [m] (walk/postwalk (fn [node] (cond (keyword? node) (snake node) :else node)) m)) (defn <-graphql [m] (walk/postwalk (fn [node] (cond (keyword? node) (kebab node) :else node)) m)) (defn assert-admin [id] (when-not (= "admin" (:role id)) (throw-unauthorized))) (defn can-see-company? [identity company] (or (= "admin" (:role identity)) ((set (map :db/id (:user/companies identity))) (:db/id company)) ((set (map :db/id (:user/companies identity))) company))) (defn assert-can-see-company [identity company] (when-not (can-see-company? identity company) (throw-unauthorized)))