Users can join and leave

This commit is contained in:
2024-09-21 11:46:40 -04:00
Unverified
parent 211050f57a
commit e3584034a2
2 changed files with 39 additions and 5 deletions

View File

@@ -192,6 +192,42 @@ impl RealmChat for RealmChatServer {
format!("Hello, {name}!")
}
async fn join_server(self, _: Context, stoken: String, user: User) -> Result<(), ErrorCode> {
if !self.is_stoken_valid(&user.userid, &stoken).await {
return Err(Unauthorized)
}
if self.is_user_in_server(&user.userid).await {
return Err(AlreadyJoinedServer)
}
let result = query!(
"INSERT INTO user (userid, name, online, admin) VALUES (?,?,?,?)",
user.userid, user.name, false, false).execute(&self.db_pool).await;
match result {
Ok(_) => Ok(()),
Err(_) => Err(MalformedDBResponse),
}
}
async fn leave_server(self, _: Context, stoken: String, user: User) -> Result<(), ErrorCode> {
if !self.is_stoken_valid(&user.userid, &stoken).await {
return Err(Unauthorized)
}
if !self.is_user_in_server(&user.userid).await {
return Err(NotInServer)
}
let result = query!("DELETE FROM user WHERE userid = ?",user.userid).execute(&self.db_pool).await;
match result {
Ok(_) => Ok(()),
Err(_) => Err(MalformedDBResponse),
}
}
async fn send_message(self, _: Context, stoken: String, mut message: Message) -> Result<Message, ErrorCode> {
if !self.is_stoken_valid(&message.user.userid, &stoken).await { // Check sender userid
return Err(Unauthorized)
@@ -356,10 +392,6 @@ impl RealmChat for RealmChatServer {
}
}
async fn join_server(self, _: Context, stoken: String, user: User) -> Result<User, ErrorCode> {
todo!()
}
async fn create_room(self, _: Context, stoken: String, room: Room) -> Result<Room, ErrorCode> {
if !self.is_user_admin(&stoken).await {
return Err(Unauthorized)