Fix redirect issues
Dashboard button now correctly redirects to login page if user is not logged in while login page redirects to dashboard the other way around.
This commit is contained in:
@@ -6,12 +6,15 @@ use crate::{
|
||||
templates::ErrorTemplate,
|
||||
};
|
||||
use askama::Template;
|
||||
use axum::http::{HeaderMap, StatusCode};
|
||||
use axum::{
|
||||
Form, Json,
|
||||
extract::State,
|
||||
response::{Html, IntoResponse, Response},
|
||||
};
|
||||
use axum::{
|
||||
http::{HeaderMap, StatusCode},
|
||||
response::Redirect,
|
||||
};
|
||||
use secrecy::SecretString;
|
||||
|
||||
#[derive(thiserror::Error)]
|
||||
@@ -65,8 +68,17 @@ pub struct LoginFormData {
|
||||
password: SecretString,
|
||||
}
|
||||
|
||||
pub async fn get_login() -> Html<String> {
|
||||
Html(LoginTemplate.render().unwrap())
|
||||
pub async fn get_login(session: TypedSession) -> Result<Response, LoginError> {
|
||||
if session
|
||||
.get_user_id()
|
||||
.await
|
||||
.map_err(|e| LoginError::UnexpectedError(e.into()))?
|
||||
.is_some()
|
||||
{
|
||||
Ok(Redirect::to("/admin/dashboard").into_response())
|
||||
} else {
|
||||
Ok(Html(LoginTemplate.render().unwrap()).into_response())
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn post_login(
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
{% block title %}zero2prod{% endblock %}
|
||||
</title>
|
||||
<link href="/assets/css/main.css" rel="stylesheet" />
|
||||
<script src="../assets/js/htmx.min.js"></script>
|
||||
<script src="/assets/js/htmx.min.js"></script>
|
||||
</head>
|
||||
<body class="bg-gray-50 min-h-screen flex flex-col">
|
||||
<header class="bg-white shadow-sm border-b border-gray-200 top-0 z-40">
|
||||
@@ -24,6 +24,7 @@
|
||||
</div>
|
||||
<nav>
|
||||
<a href="/admin/dashboard"
|
||||
hx-boost="true"
|
||||
class="bg-blue-600 text-white hover:bg-blue-700 px-4 py-2 rounded-md text-sm font-medium transition-colors">
|
||||
Dashboard
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user