M server/src/systems/event/mod.rs => server/src/systems/event/mod.rs +26 -3
@@ 10,7 10,10 @@ use bevy_ecs::{event::EventReader, system::Res};
use bevy_log::info;
use laurelin_shared::{
api::user::{login, register, ResponseLogin, ResponseRegister},
- server::messages::Auth,
+ server::{
+ channels::AfterAuthChannel,
+ messages::{AfterAuth, Auth},
+ },
};
use naia_bevy_server::{
events::{AuthEvents, ConnectEvent, DisconnectEvent, ErrorEvent},
@@ 33,7 36,17 @@ pub(crate) fn auth_events(
register(&config.api_address, &username, &auth.email, &auth.password);
match wrapped.response {
ResponseRegister::Error(_) => server.reject_connection(&user_key),
- ResponseRegister::Ok(_) => server.accept_connection(&user_key),
+ ResponseRegister::Ok(user) => {
+ server.accept_connection(&user_key);
+
+ server.send_message::<AfterAuthChannel, AfterAuth>(
+ &user_key,
+ &AfterAuth {
+ username: user.username,
+ cookie: wrapped.cookie,
+ },
+ )
+ }
}
}
None => {
@@ 41,7 54,17 @@ pub(crate) fn auth_events(
let wrapped = login(&config.api_address, &auth.email, &auth.password);
match wrapped.response {
ResponseLogin::Error(_) => server.reject_connection(&user_key),
- ResponseLogin::Ok(_) => server.accept_connection(&user_key),
+ ResponseLogin::Ok(user) => {
+ server.accept_connection(&user_key);
+
+ server.send_message::<AfterAuthChannel, AfterAuth>(
+ &user_key,
+ &AfterAuth {
+ username: user.username,
+ cookie: wrapped.cookie,
+ },
+ )
+ }
}
}
}
M shared/src/server/channels.rs => shared/src/server/channels.rs +12 -2
@@ 6,10 6,20 @@
* See LICENSE for licensing information.
*/
-use naia_bevy_shared::{Protocol, ProtocolPlugin};
+use naia_bevy_shared::{
+ Channel, ChannelDirection, ChannelMode, Protocol, ProtocolPlugin, ReliableSettings,
+};
+
+#[derive(Channel)]
+pub struct AfterAuthChannel;
pub struct ChannelsPlugin;
impl ProtocolPlugin for ChannelsPlugin {
- fn build(&self, protocol: &mut Protocol) {}
+ fn build(&self, protocol: &mut Protocol) {
+ protocol.add_channel::<AfterAuthChannel>(
+ ChannelDirection::ServerToClient,
+ ChannelMode::UnorderedReliable(ReliableSettings::default()),
+ );
+ }
}
M shared/src/server/messages/auth.rs => shared/src/server/messages/auth.rs +15 -0
@@ 25,3 25,18 @@ impl Auth {
}
}
}
+
+#[derive(Message)]
+pub struct AfterAuth {
+ pub cookie: String,
+ pub username: String,
+}
+
+impl AfterAuth {
+ pub fn new(cookie: &str, username: &str) -> Self {
+ Self {
+ cookie: cookie.to_string(),
+ username: username.to_string(),
+ }
+ }
+}
M shared/src/server/messages/mod.rs => shared/src/server/messages/mod.rs +2 -2
@@ 9,12 9,12 @@
use naia_bevy_shared::{Protocol, ProtocolPlugin};
mod auth;
-pub use auth::Auth;
+pub use auth::{AfterAuth, Auth};
pub struct MessagesPlugin;
impl ProtocolPlugin for MessagesPlugin {
fn build(&self, protocol: &mut Protocol) {
- protocol.add_message::<Auth>();
+ protocol.add_message::<Auth>().add_message::<AfterAuth>();
}
}