feat: replace global auth state variable with template injected object
This commit is contained in:
parent
6ab7489f9b
commit
2992822010
|
|
@ -8,7 +8,7 @@
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
|
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
|
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
|
||||||
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
|
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
|
||||||
<script src="/asteroid/static/js/auth-ui.js"></script>
|
<script lquery='(text (asteroid::get-auth-state-js-var))'></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,19 @@
|
||||||
"Get the currently authenticated user's ID from session"
|
"Get the currently authenticated user's ID from session"
|
||||||
(session:field "user-id"))
|
(session:field "user-id"))
|
||||||
|
|
||||||
|
(defun get-auth-state-js-var ()
|
||||||
|
"Builds a JavaScript variable definition with the current authentication state
|
||||||
|
for a request. The variable definition is a string ready to be injected in a
|
||||||
|
template file."
|
||||||
|
(let ((user (get-current-user)))
|
||||||
|
(format nil "var AUTHSTATE = ~a"
|
||||||
|
(if user
|
||||||
|
(cl-json:encode-json-to-string
|
||||||
|
`(("loggedIn" . t)
|
||||||
|
("isAdmin" . ,(when (user-has-role-p user :admin) t))
|
||||||
|
("username" . ,(dm:field user "username"))))
|
||||||
|
"null"))))
|
||||||
|
|
||||||
(defun require-authentication (&key (api nil))
|
(defun require-authentication (&key (api nil))
|
||||||
"Require user to be authenticated.
|
"Require user to be authenticated.
|
||||||
Returns T if authenticated, NIL if not (after emitting error response).
|
Returns T if authenticated, NIL if not (after emitting error response).
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue