beherbergung/backend/src/beherbergung/auth/core.clj

20 lines
713 B
Clojure

(ns beherbergung.auth.core
(:require [beherbergung.auth.password.verify-db :refer [login->id id->roles+entities]]
[beherbergung.auth.jwt.login :refer [jwt->id]]))
(defn auth->id [ctx auth]
(cond (:jwt auth)
(jwt->id (:jwt auth))
(and (:mail auth) (:password auth))
(login->id ctx (:mail auth) (:password auth))))
(defn auth+role->entity
[ctx auth role]
(let [login:id (auth->id ctx auth)
roles+entities (id->roles+entities ctx login:id)
entities (->> (filter #(= role (:role %)) roles+entities)
(map :entity))]
(when (and login:id
(<= (count entities) 1))
[(first entities) login:id])))