27 lines
762 B
Rust
27 lines
762 B
Rust
use axum::http::StatusCode;
|
|
use axum::response::Redirect;
|
|
use axum_login::AuthSession;
|
|
|
|
use crate::models::projects::Project;
|
|
use crate::permissions;
|
|
use crate::prelude::*;
|
|
|
|
pub async fn home_page(
|
|
State(provider): State<Provider>,
|
|
auth_session: AuthSession<Provider>,
|
|
) -> Result<Response, (StatusCode, String)> {
|
|
if let Some(user) = auth_session.user {
|
|
let mut db = provider.db_pool.get().unwrap();
|
|
let projects: Vec<Project> =
|
|
permissions::q::accessible_projects(&mut db, &user.id).unwrap();
|
|
|
|
let values = context! {
|
|
user => user,
|
|
projects => projects,
|
|
};
|
|
|
|
provider.render_resp("home.html", values)
|
|
} else {
|
|
Ok(Redirect::to("/login").into_response())
|
|
}
|
|
}
|