feat: add gacha credits

This commit is contained in:
Maulana Sodiqin
2025-05-22 00:31:36 +07:00
parent 465cbee2c3
commit 9878279660
31 changed files with 252 additions and 127 deletions
@@ -50,16 +50,13 @@ where
type Response = S::Response;
type Error = S::Error;
type Future = BoxFuture<'static, Result<Self::Response, Self::Error>>;
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
self.inner.poll_ready(cx)
}
fn call(&mut self, req: Request<Body>) -> Self::Future {
let mut inner = self.inner.clone();
let app_state = self.app_state.clone();
let permissions = self.permissions.clone();
Box::pin(async move {
let headers = req.headers();
let email = match extract_email(headers) {
@@ -71,7 +68,6 @@ where
));
}
};
let auth_repo = AuthRepository::new(&app_state);
let user = match auth_repo.query_get_stored_user(email).await {
Ok(user) => user,
@@ -82,20 +78,17 @@ where
));
}
};
let user_permissions: Vec<String> =
user.role.permissions.into_iter().map(|p| p.name).collect();
let allowed = permissions
.iter()
.all(|p| user_permissions.contains(&p.to_string()));
if !allowed {
return Ok(common_response(
StatusCode::FORBIDDEN,
"You don't have the required permissions",
));
}
inner.call(req).await
})
}