mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-05-01 08:41:09 +00:00
fix(register): fix CORS, nonce update and error reporting
This commit is contained in:
parent
cb72d049e0
commit
3af64f35a5
2 changed files with 9 additions and 4 deletions
|
@ -5,7 +5,7 @@ use std::time::{Duration, SystemTime};
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use axum::extract::ws;
|
use axum::extract::ws;
|
||||||
use axum::extract::{Path, Query, State, WebSocketUpgrade};
|
use axum::extract::{Path, Query, State, WebSocketUpgrade};
|
||||||
use axum::http::{header, HeaderMap, StatusCode};
|
use axum::http::{header, HeaderMap, HeaderName, StatusCode};
|
||||||
use axum::response::{IntoResponse, Response};
|
use axum::response::{IntoResponse, Response};
|
||||||
use axum::routing::{get, post};
|
use axum::routing::{get, post};
|
||||||
use axum::{Json, Router};
|
use axum::{Json, Router};
|
||||||
|
@ -13,7 +13,7 @@ use axum_extra::extract::WithRejection as R;
|
||||||
use blah_types::{
|
use blah_types::{
|
||||||
ChatPayload, CreateGroup, CreatePeerChat, CreateRoomPayload, Id, MemberPermission, RoomAdminOp,
|
ChatPayload, CreateGroup, CreatePeerChat, CreateRoomPayload, Id, MemberPermission, RoomAdminOp,
|
||||||
RoomAdminPayload, RoomAttrs, RoomMetadata, ServerPermission, Signed, SignedChatMsg, Signee,
|
RoomAdminPayload, RoomAttrs, RoomMetadata, ServerPermission, Signed, SignedChatMsg, Signee,
|
||||||
UserKey, UserRegisterPayload, WithMsgId,
|
UserKey, UserRegisterPayload, WithMsgId, X_BLAH_DIFFICULTY, X_BLAH_NONCE,
|
||||||
};
|
};
|
||||||
use database::ConnectionExt;
|
use database::ConnectionExt;
|
||||||
use ed25519_dalek::SIGNATURE_LENGTH;
|
use ed25519_dalek::SIGNATURE_LENGTH;
|
||||||
|
@ -147,7 +147,11 @@ pub fn router(st: Arc<AppState>) -> Router {
|
||||||
// correct CORS headers. Also `Authorization` must be explicitly included besides `*`.
|
// correct CORS headers. Also `Authorization` must be explicitly included besides `*`.
|
||||||
.layer(
|
.layer(
|
||||||
tower_http::cors::CorsLayer::permissive()
|
tower_http::cors::CorsLayer::permissive()
|
||||||
.allow_headers([header::HeaderName::from_static("*"), header::AUTHORIZATION]),
|
.allow_headers([HeaderName::from_static("*"), header::AUTHORIZATION])
|
||||||
|
.expose_headers([
|
||||||
|
HeaderName::from_static(X_BLAH_NONCE),
|
||||||
|
HeaderName::from_static(X_BLAH_DIFFICULTY),
|
||||||
|
]),
|
||||||
)
|
)
|
||||||
.with_state(st)
|
.with_state(st)
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,6 +107,7 @@ impl State {
|
||||||
} else {
|
} else {
|
||||||
OsRng.next_u32()
|
OsRng.next_u32()
|
||||||
};
|
};
|
||||||
|
n.update_period = cur_period;
|
||||||
n.nonce = OsRng.next_u32();
|
n.nonce = OsRng.next_u32();
|
||||||
[n.nonce, n.prev_nonce]
|
[n.nonce, n.prev_nonce]
|
||||||
}
|
}
|
||||||
|
@ -353,7 +354,7 @@ fn validate_id_desc(
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
})()
|
})()
|
||||||
.with_context(|| format!("in act_key {} {}", i, kdesc.act_key))?;
|
.map_err(|err| anyhow!("invalid act_key[{}] {}: {}", i, kdesc.act_key, err))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
ensure!(profile_signed, "profile is not signed by valid act_keys");
|
ensure!(profile_signed, "profile is not signed by valid act_keys");
|
||||||
|
|
Loading…
Add table
Reference in a new issue