/*
* This file is part of laurelin/server
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use bevy_ecs::{event::EventReader, system::Res};
use laurelin_shared::{
api::user::{login, register, ResponseLogin, ResponseRegister},
server::messages::Auth,
};
use naia_bevy_server::{events::AuthEvents, Server};
use crate::Config;
pub(crate) fn auth_events(
mut ev: EventReader<AuthEvents>,
mut server: Server,
config: Res<Config>,
) {
for events in ev.iter() {
for (user_key, auth) in events.read::<Auth>() {
match auth.username {
Some(username) => {
// register
let wrapped =
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),
}
}
None => {
// login
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),
}
}
}
}
}
}