DEVELOPMENT ENVIRONMENT

~liljamo/deck-builder

ref: a4137f9834a85dc03723d8842524505bb499ae90 deck-builder/server/src/systems/event/mod.rs -rw-r--r-- 1.5 KiB
a4137f98Jonni Liljamo feat(client, server, shared): new login/register 1 year, 7 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * 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),
                    }
                }
            }
        }
    }
}