2019-06-08 15:43:48 +00:00
|
|
|
(ns cat.routes.admin
|
|
|
|
(:require [cat.db.core :refer [*db*] :as db]
|
|
|
|
[struct.core :as st]
|
|
|
|
[clojure.tools.logging :as log]
|
|
|
|
[ring.util.http-response :as response]))
|
|
|
|
|
|
|
|
(def user-schema
|
|
|
|
[[:name st/required st/string]
|
|
|
|
[:gender st/string]])
|
|
|
|
|
|
|
|
(def relation-schema
|
|
|
|
[[:from_id st/required st/integer-str]
|
|
|
|
[:to_id st/required st/integer-str]])
|
|
|
|
|
2019-06-08 21:51:04 +00:00
|
|
|
(defn set-admin! [req enabled?]
|
|
|
|
(-> (response/found "/")
|
|
|
|
(assoc :session (assoc-in (:session req) [:user :admin :enabled] enabled?))))
|
2019-06-08 15:43:48 +00:00
|
|
|
|
2019-06-08 21:51:04 +00:00
|
|
|
(defn create-new-relation! [req]
|
|
|
|
(let [data (:params req)
|
|
|
|
[err result] (st/validate data relation-schema)]
|
|
|
|
(if (nil? err)
|
|
|
|
(do
|
|
|
|
(log/info "Admin creates relation from " (:from_id data) "to" (:to_id data))
|
|
|
|
(db/create-relation! result)
|
|
|
|
(response/found "/"))
|
|
|
|
(do
|
|
|
|
(response/bad-request "Incorrect input")))))
|
|
|
|
|
|
|
|
(defn create-user! [req]
|
|
|
|
(let [data (:params req)]
|
|
|
|
(println data)
|
|
|
|
(if (st/valid? data user-schema)
|
|
|
|
(do
|
|
|
|
(log/info "Admin creates user: " (:name data))
|
|
|
|
(db/create-user! (assoc data :zeusid nil))
|
|
|
|
(response/found "/"))
|
|
|
|
(do
|
|
|
|
(response/bad-request "Incorrect input")))))
|