Add token auth and room leaves

This commit is contained in:
2026-05-30 18:20:17 -07:00
parent 44f8c3a625
commit 53398bf4ea
+20 -14
View File
@@ -65,13 +65,20 @@ impl SignedClientMessage {
unimplemented!() unimplemented!()
} }
} }
#[derive(Serialize,Deserialize,Clone,Debug)]
pub enum AuthMethod {
Password(String),
Token(String)
}
#[derive(Serialize,Deserialize,Clone,Debug)] #[derive(Serialize,Deserialize,Clone,Debug)]
pub enum ClientMessage { pub enum ClientMessage {
Auth{ Auth{
username: String, username: String,
password: String password: AuthMethod
}, },
// Create a token with a default expiry window
CreateToken,
// Maybe ask for email too? Or a potential invite code // Maybe ask for email too? Or a potential invite code
UserCreate { UserCreate {
username: String, username: String,
@@ -222,6 +229,9 @@ pub enum ClientMessage {
RoomJoin { RoomJoin {
room_id: RoomId, room_id: RoomId,
}, },
RoomLeave {
room_id: RoomId,
},
RoomCreate { RoomCreate {
room_id: RoomId, room_id: RoomId,
}, },
@@ -242,20 +252,12 @@ impl ClientMessage<> {
use ClientMessage::*; use ClientMessage::*;
match self { match self {
MediaUpload{bytes: _} MediaUpload{bytes: _}
| Auth{ | Auth { .. }
username: _, | CreateToken { .. }
password: _ | UserCreate { .. }
}
| UserCreate {
username: _,
password: _,
}
// Groups can only be created locally. However, you can still // Groups can only be created locally. However, you can still
// grant admin permissions to users on other servers // grant admin permissions to users on other servers
| GroupCreate { | GroupCreate { .. } => false,
users: _,
group: _,
} => false,
// In the future challenges might be forwardable but right now they are // In the future challenges might be forwardable but right now they are
// only used for signups and auth is local. // only used for signups and auth is local.
//| ChallengeAnswer { //| ChallengeAnswer {
@@ -310,6 +312,8 @@ impl ClientMessage<> {
} }
} }
//TODO: Implement thiserror for both of these for better info
#[derive(Serialize,Deserialize,Debug)] #[derive(Serialize,Deserialize,Debug)]
pub enum ServerError { pub enum ServerError {
InvalidPermission, InvalidPermission,
@@ -324,6 +328,7 @@ pub enum ServerError {
RoomNotFound(RoomId), RoomNotFound(RoomId),
ValueNotFound(StatePath), ValueNotFound(StatePath),
MismatchedTypes, MismatchedTypes,
TokenExpired,
DeleteNotEmpty(StatePath), DeleteNotEmpty(StatePath),
RemoveLastOwner, RemoveLastOwner,
MessageNotForwardable, MessageNotForwardable,
@@ -334,7 +339,7 @@ pub enum ServerError {
} }
#[derive(Serialize,Deserialize)] #[derive(Serialize,Deserialize,Debug)]
pub enum ServerMessage { pub enum ServerMessage {
// Returned on fetch or naturally from subscribe // Returned on fetch or naturally from subscribe
// This should be // This should be
@@ -348,5 +353,6 @@ pub enum ServerMessage {
// Returned on subscribe, forwards state change message to client // Returned on subscribe, forwards state change message to client
StateChange(TaggedMessage), StateChange(TaggedMessage),
OkMessage(MessageId), OkMessage(MessageId),
Token(String),
Ok, Ok,
} }