From fc939d5fa30261b34470be0fcbf841d8f898fe0f Mon Sep 17 00:00:00 2001 From: Jonni Liljamo Date: Tue, 7 Mar 2023 12:49:04 +0200 Subject: [PATCH] feat(server, shared): send an AfterAuth payload to the client after auth --- server/src/systems/event/mod.rs | 29 ++++++++++++++++++++++++++--- shared/src/server/channels.rs | 14 ++++++++++++-- shared/src/server/messages/auth.rs | 15 +++++++++++++++ shared/src/server/messages/mod.rs | 4 ++-- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/server/src/systems/event/mod.rs b/server/src/systems/event/mod.rs index 888d82f..61557a0 100644 --- a/server/src/systems/event/mod.rs +++ b/server/src/systems/event/mod.rs @@ -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::( + &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::( + &user_key, + &AfterAuth { + username: user.username, + cookie: wrapped.cookie, + }, + ) + } } } } diff --git a/shared/src/server/channels.rs b/shared/src/server/channels.rs index c223252..8c8412e 100644 --- a/shared/src/server/channels.rs +++ b/shared/src/server/channels.rs @@ -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::( + ChannelDirection::ServerToClient, + ChannelMode::UnorderedReliable(ReliableSettings::default()), + ); + } } diff --git a/shared/src/server/messages/auth.rs b/shared/src/server/messages/auth.rs index bbc1a47..9dc5e5d 100644 --- a/shared/src/server/messages/auth.rs +++ b/shared/src/server/messages/auth.rs @@ -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(), + } + } +} diff --git a/shared/src/server/messages/mod.rs b/shared/src/server/messages/mod.rs index bd9d99c..92db295 100644 --- a/shared/src/server/messages/mod.rs +++ b/shared/src/server/messages/mod.rs @@ -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::(); + protocol.add_message::().add_message::(); } } -- 2.44.1