Last night

This commit is contained in:
Andras Schmelczer 2026-02-08 10:21:37 +00:00
parent 2906b01734
commit 42ee2d4c51
47 changed files with 848 additions and 478 deletions

View file

@ -18,10 +18,6 @@ pub struct PocketBaseUser {
pub id: String,
pub email: String,
#[serde(default)]
pub name: String,
#[serde(default)]
pub avatar: String,
#[serde(default)]
pub verified: bool,
}
@ -94,21 +90,10 @@ async fn validate_token(
}
pub async fn auth_middleware(req: Request, next: Next) -> Response {
let pocketbase_url = req
let state = req
.extensions()
.get::<Arc<crate::state::AppState>>()
.and_then(|st| st.pocketbase_url.as_deref())
.map(String::from);
let token_cache = req
.extensions()
.get::<Arc<crate::state::AppState>>()
.map(|st| st.token_cache.clone());
let http_client = req
.extensions()
.get::<Arc<crate::state::AppState>>()
.map(|st| st.http_client.clone());
.cloned();
let token = req
.headers()
@ -117,14 +102,14 @@ pub async fn auth_middleware(req: Request, next: Next) -> Response {
.and_then(|hv| hv.strip_prefix("Bearer "))
.map(String::from);
let user = match (&pocketbase_url, &token, &token_cache, &http_client) {
(Some(pb_url), Some(tk), Some(cache), Some(client)) => {
if let Some(cached) = cache.get(tk) {
let user = match (&state, &token) {
(Some(st), Some(tk)) => {
if let Some(cached) = st.token_cache.get(tk) {
Some(cached)
} else {
match validate_token(client, pb_url, tk).await {
match validate_token(&st.http_client, &st.pocketbase_url, tk).await {
Some(user) => {
cache.insert(tk.clone(), user.clone());
st.token_cache.insert(tk.clone(), user.clone());
Some(user)
}
None => {