diff --git a/web3_proxy/src/frontend/users.rs b/web3_proxy/src/frontend/users.rs
index a102fdf3..7c357051 100644
--- a/web3_proxy/src/frontend/users.rs
+++ b/web3_proxy/src/frontend/users.rs
@@ -207,7 +207,8 @@ pub async fn post_login(
/// the JSON input to the `post_user` handler
#[derive(Deserialize)]
pub struct PostUser {
- address: Address,
+ primary_address: Address,
+ secondary_address: Option
,
// TODO: make sure the email address is valid. probably have a "verified" column in the database
email: Option,
// TODO: make them sign this JSON? cookie in session id is hard because its on a different domain
@@ -223,7 +224,13 @@ pub async fn post_user(
) -> FrontendResult {
let _ip: IpAddr = rate_limit_by_ip(&app, ip).await?;
- // TODO: check the auth_token is valid for the user in PostUser (in a helper function)
+ verify_auth_token(
+ app.as_ref(),
+ auth_token,
+ &payload.primary_address,
+ payload.secondary_address.as_ref(),
+ )
+ .await?;
// let user = user::ActiveModel {
// address: sea_orm::Set(payload.address.to_fixed_bytes().into()),
@@ -233,3 +240,16 @@ pub async fn post_user(
todo!("finish post_user");
}
+
+pub async fn verify_auth_token(
+ app: &Web3ProxyApp,
+ auth_token: String,
+ primary_address: &Address,
+ secondary_address: Option<&Address>,
+) -> anyhow::Result<()> {
+ let auth_user = secondary_address.unwrap_or(primary_address);
+
+ // TODO: Role-based access control?
+
+ todo!("verify_auth_token")
+}