Add the authorization to login and logout as the admin.

main
KKlochko 1 year ago
parent a1d48ceb64
commit d70f03aee4

@ -22,6 +22,46 @@
(res/status 500)
(res/send (ex-message err))))))))
(defn login-page-handler-factory
[]
(fn [req res]
(.render res "login")))
(defn login-page-auth-handler-factory
[]
(fn [req res]
(let [session (.-user (.-session req))
login (.-login (.-body req))
password (.-password (.-body req))]
(cond
(some? session)
(.redirect res "/")
(and (= login "admin")
(= password "admin"))
(do
; req.session.user = "admin";
(set! (.-user (.-session req)) "admin")
(.redirect res "/admin"))
:else
(.redirect res "/")
))))
(defn logout-page-handler-factory
[]
(fn [req res]
(let [session (.-user (.-session req))]
(cond
(some? session)
(do
(.destroy (.-session req))
(.redirect res "/"))
:else
(.redirect res "/")
))))
(defn admin-panel-handler-factory
[client]
(fn [req res]

@ -65,7 +65,16 @@
(. app get "/"
(handlers/index-page-handler-factory client))
(fn [req res]
(. app get "/login"
(handlers/login-page-handler-factory))
(. app post "/login"
(handlers/login-page-auth-handler-factory))
(. app get "/logout"
(handlers/logout-page-handler-factory))
(. app get "/admin"
(handlers/admin-panel-handler-factory client))

@ -0,0 +1,25 @@
<main class="bg-white dark:bg-gray-800 py-4 grow">
<section>
<div class="flex flex-col items-center justify-center px-6 py-8 mx-auto lg:py-0">
<div class="w-full bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md xl:p-0 dark:bg-gray-800 dark:border-gray-700">
<div class="p-6 space-y-4 md:space-y-6 sm:p-8">
<h1 class="text-xl font-bold leading-tight tracking-tight text-gray-900 md:text-2xl dark:text-white">
Sign in to your account
</h1>
<form class="space-y-4 md:space-y-6" action="/login" method="POST">
<div>
<label for="login" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your login</label>
<input type="login" name="login" id="login" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-[#2563eb] focus:border-[#2563eb] block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="login" required="">
</div>
<div>
<label for="password" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Password</label>
<input type="password" name="password" id="password" placeholder="••••••••" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-[#2563eb] focus:border-[#2563eb] block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required="">
</div>
<button type="submit" class="w-full text-white bg-[#2563eb] hover:bg-[#1d4ed8] focus:ring-4 focus:outline-none focus:ring-[#93c5fd] font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-[#2563eb] dark:hover:bg-[#1d4ed8] dark:focus:ring-[#1e40af]">Sign in</button>
</form>
</div>
</div>
</div>
</section>
</main>
Loading…
Cancel
Save