Add the authorization to login and logout as the admin.
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user