penpot/backend/src/uxbox/frontend/auth.clj
Andrey Antukh 3b648f5aa5 refactor: replace lein with cli tools and update some deps
- also removes docker files from source directories
- minor assets reorganization on back (make it more production ready)
2019-06-03 16:51:20 +02:00

33 lines
1 KiB
Clojure

;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.frontend.auth
(:require [clojure.spec.alpha :as s]
[catacumba.core :as ct]
[catacumba.http :as http]
[promesa.core :as p]
[uxbox.util.spec :as us]
[uxbox.services :as sv]
[uxbox.util.uuid :as uuid]
[uxbox.util.response :refer (rsp)]))
(s/def ::scope string?)
(s/def ::login (s/keys :req-un [::us/username ::us/password ::scope]))
(defn login
[{data :data}]
(let [data (us/conform ::login data)
message (assoc data :type :login)]
(->> (sv/novelty message)
(p/map #(http/ok (rsp %))))))
;; TODO: improve authorization
(defn authorization
[{:keys [identity] :as context}]
(if identity
(ct/delegate {:identity (uuid/from-string (:id identity))})
(http/forbidden (rsp nil))))