implemented user and started security

This commit is contained in:
JOLIMAITRE Matthieu 2022-08-23 17:53:12 +02:00
parent c17cdd888a
commit 21e5240f74
13 changed files with 642 additions and 220 deletions

View file

@ -3,6 +3,12 @@ pub struct Ping {
pub content: String,
}
#[derive(Debug)]
pub struct Authenticate {
pub id: u64,
pub pass: String,
}
#[derive(Debug)]
pub struct ChannelList {}
@ -92,6 +98,8 @@ pub struct UserSetPass {
#[derive(Debug)]
pub enum ClientRequest {
Ping(Ping),
Authenticate(Authenticate),
ChannelList(ChannelList),
ChannelCreate(ChannelCreate),
ChannelDelete(ChannelDelete),
@ -117,6 +125,10 @@ impl ClientRequest {
Self::Ping(Ping { content })
}
pub fn new_authenticate(id: u64, pass: String) -> Self {
Self::Authenticate(Authenticate { id, pass })
}
pub fn new_channel_list() -> Self {
Self::ChannelList(ChannelList {})
}
@ -185,51 +197,31 @@ impl ClientRequest {
use repr::Command::*;
let command: repr::Command = serde_json::from_str(line).ok()?;
let mapped = match command {
ping { content } => Self::Ping(Ping { content }),
channel_list {} => Self::ChannelList(ChannelList {}),
channel_create { name } => Self::ChannelCreate(ChannelCreate { name }),
channel_delete { id: channel_id } => {
Self::ChannelDelete(ChannelDelete { id: channel_id })
}
channel_get_name { id: channel_id } => {
Self::ChannelGetName(ChannelGetName { id: channel_id })
}
channel_set_name {
id: channel_id,
name,
} => Self::ChannelSetName(ChannelSetName {
id: channel_id,
name,
}),
message_list { channel_id } => Self::MessageList(MessageList { channel_id }),
ping { content } => Self::new_ping(content),
authenticate { id, pass } => Self::new_authenticate(id, pass),
channel_list {} => Self::new_channel_list(),
channel_create { name } => Self::new_channel_create(name),
channel_delete { id } => Self::new_channel_delete(id),
channel_get_name { id } => Self::new_channel_get_name(id),
channel_set_name { id, name } => Self::new_channel_set_name(id, name),
message_list { channel_id } => Self::new_message_list(channel_id),
message_create {
channel_id,
content,
} => Self::MessageCreate(MessageCreate {
channel_id,
content,
}),
message_delete { id, channel_id } => {
Self::MessageDelete(MessageDelete { id, channel_id })
}
message_get_content { id, channel_id } => {
Self::MessageGetContent(MessageGetContent { id, channel_id })
}
} => Self::new_message_create(channel_id, content),
message_delete { id, channel_id } => Self::new_message_delete(channel_id, id),
message_get_content { id, channel_id } => Self::new_message_get_content(channel_id, id),
message_set_content {
id,
channel_id,
content,
} => Self::MessageSetContent(MessageSetContent {
content,
id,
channel_id,
}),
user_list {} => Self::UserList(UserList {}),
user_create { name, pass } => Self::UserCreate(UserCreate { name, pass }),
user_delete { id } => Self::UserDelete(UserDelete { id }),
user_get_name { id } => Self::UserGetName(UserGetName { id }),
user_set_name { id, name } => Self::UserSetName(UserSetName { id, name }),
user_set_pass { id, pass } => Self::UserSetPass(UserSetPass { id, pass }),
} => Self::new_message_set_content(channel_id, id, content),
user_list {} => Self::new_user_list(),
user_create { name, pass } => Self::new_user_create(name, pass),
user_delete { id } => Self::new_user_delete(id),
user_get_name { id } => Self::new_user_get_name(id),
user_set_name { id, name } => Self::new_user_set_name(id, name),
user_set_pass { id, pass } => Self::new_user_set_pass(id, pass),
};
Some(mapped)
}
@ -238,6 +230,7 @@ impl ClientRequest {
use repr::Command::*;
let mapped = match self {
Self::Ping(Ping { content }) => ping { content },
Self::Authenticate(Authenticate { id, pass }) => authenticate { id, pass },
Self::ChannelList(ChannelList {}) => repr::Command::channel_list {},
Self::ChannelCreate(ChannelCreate { name }) => channel_create { name },
Self::ChannelDelete(ChannelDelete { id: channel_id }) => {
@ -298,6 +291,10 @@ mod repr {
ping {
content: String,
},
authenticate {
id: u64,
pass: String,
},
channel_list {},
channel_create {
name: String,

View file

@ -10,5 +10,5 @@ mod tests {
pub use client::ClientRequest;
pub mod client;
pub use server::ServerRequest;
pub use server::ServerEvent;
pub mod server;

View file

@ -94,7 +94,7 @@ pub struct UserSetPass {
}
#[derive(Debug)]
pub enum ServerRequest {
pub enum ServerEvent {
Pong(Pong),
ChannelCreate(ChannelCreate),
@ -117,7 +117,7 @@ pub enum ServerRequest {
UserSetPass(UserSetPass),
}
impl ServerRequest {
impl ServerEvent {
pub fn new_pong(content: String) -> Self {
Self::Pong(Pong { content })
}