diff --git a/src/client.rs b/src/client.rs index b1a353e..768dfe1 100644 --- a/src/client.rs +++ b/src/client.rs @@ -65,13 +65,20 @@ impl SignedClientMessage { unimplemented!() } } +#[derive(Serialize,Deserialize,Clone,Debug)] +pub enum AuthMethod { + Password(String), + Token(String) +} #[derive(Serialize,Deserialize,Clone,Debug)] pub enum ClientMessage { Auth{ 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 UserCreate { username: String, @@ -222,6 +229,9 @@ pub enum ClientMessage { RoomJoin { room_id: RoomId, }, + RoomLeave { + room_id: RoomId, + }, RoomCreate { room_id: RoomId, }, @@ -242,20 +252,12 @@ impl ClientMessage<> { use ClientMessage::*; match self { MediaUpload{bytes: _} - | Auth{ - username: _, - password: _ - } - | UserCreate { - username: _, - password: _, - } + | Auth { .. } + | CreateToken { .. } + | UserCreate { .. } // Groups can only be created locally. However, you can still // grant admin permissions to users on other servers - | GroupCreate { - users: _, - group: _, - } => false, + | GroupCreate { .. } => false, // In the future challenges might be forwardable but right now they are // only used for signups and auth is local. //| ChallengeAnswer { @@ -310,6 +312,8 @@ impl ClientMessage<> { } } +//TODO: Implement thiserror for both of these for better info + #[derive(Serialize,Deserialize,Debug)] pub enum ServerError { InvalidPermission, @@ -324,6 +328,7 @@ pub enum ServerError { RoomNotFound(RoomId), ValueNotFound(StatePath), MismatchedTypes, + TokenExpired, DeleteNotEmpty(StatePath), RemoveLastOwner, MessageNotForwardable, @@ -334,7 +339,7 @@ pub enum ServerError { } -#[derive(Serialize,Deserialize)] +#[derive(Serialize,Deserialize,Debug)] pub enum ServerMessage { // Returned on fetch or naturally from subscribe // This should be @@ -348,5 +353,6 @@ pub enum ServerMessage { // Returned on subscribe, forwards state change message to client StateChange(TaggedMessage), OkMessage(MessageId), + Token(String), Ok, }