Last night
This commit is contained in:
parent
2906b01734
commit
42ee2d4c51
47 changed files with 848 additions and 478 deletions
|
|
@ -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 => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue