mirror of
https://github.com/Blah-IM/blahrs.git
synced 2025-05-01 00:31: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 axum::extract::ws;
|
||||
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::routing::{get, post};
|
||||
use axum::{Json, Router};
|
||||
|
@ -13,7 +13,7 @@ use axum_extra::extract::WithRejection as R;
|
|||
use blah_types::{
|
||||
ChatPayload, CreateGroup, CreatePeerChat, CreateRoomPayload, Id, MemberPermission, RoomAdminOp,
|
||||
RoomAdminPayload, RoomAttrs, RoomMetadata, ServerPermission, Signed, SignedChatMsg, Signee,
|
||||
UserKey, UserRegisterPayload, WithMsgId,
|
||||
UserKey, UserRegisterPayload, WithMsgId, X_BLAH_DIFFICULTY, X_BLAH_NONCE,
|
||||
};
|
||||
use database::ConnectionExt;
|
||||
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 `*`.
|
||||
.layer(
|
||||
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)
|
||||
}
|
||||
|
|
|
@ -107,6 +107,7 @@ impl State {
|
|||
} else {
|
||||
OsRng.next_u32()
|
||||
};
|
||||
n.update_period = cur_period;
|
||||
n.nonce = OsRng.next_u32();
|
||||
[n.nonce, n.prev_nonce]
|
||||
}
|
||||
|
@ -353,7 +354,7 @@ fn validate_id_desc(
|
|||
}
|
||||
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");
|
||||
|
|
Loading…
Add table
Reference in a new issue