From f2ca8c8ab558fc1f42d03808c1b05e4908ef6edb Mon Sep 17 00:00:00 2001 From: trivernis Date: Mon, 14 Sep 2020 13:43:43 +0200 Subject: [PATCH] Add method to get the UserID for a token Signed-off-by: trivernis --- src/server/rpc_methods.rs | 1 + src/server/user_rpc.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/server/rpc_methods.rs b/src/server/rpc_methods.rs index 31ce42f..fe45e05 100644 --- a/src/server/rpc_methods.rs +++ b/src/server/rpc_methods.rs @@ -7,3 +7,4 @@ pub(crate) const GET_ROLES: [u8; 4] = [0x52, 0x4f, 0x4c, 0x45]; pub(crate) const GET_ROLE_PERMISSIONS: [u8; 4] = [0x50, 0x45, 0x52, 0x4d]; pub(crate) const CREATE_ROLE: [u8; 4] = [0x43, 0x52, 0x4f, 0x4c]; pub(crate) const CREATE_PERMISSION: [u8; 4] = [0x43, 0x50, 0x45, 0x52]; +pub(crate) const GET_USER_ID: [u8; 4] = [0x55, 0x53, 0x45, 0x52]; diff --git a/src/server/user_rpc.rs b/src/server/user_rpc.rs index 08c5d07..71864cb 100644 --- a/src/server/user_rpc.rs +++ b/src/server/user_rpc.rs @@ -65,6 +65,7 @@ impl UserRpcServer { CREATE_PERMISSION => { Self::handle_create_permissions(database, &handler.message.data) } + GET_USER_ID => Self::handle_get_user_id(&handler.message.data), _ => Err(ErrorMessage::new("Invalid Method".to_string())), } .unwrap_or_else(|e| Message::new_with_serialize(ERROR, e)); @@ -126,6 +127,12 @@ impl UserRpcServer { "Creates all given permissions if they don't exist.", "{permissions: [{name: String, description: String}]}", ), + InfoEntry::new( + "get user id", + GET_USER_ID, + "Returns the userId for a token", + "{token: String}", + ), ], )) } @@ -193,4 +200,16 @@ impl UserRpcServer { Ok(Message::new_with_serialize(CREATE_PERMISSION, permissions)) } + + /// Returns the userId for a request token + fn handle_get_user_id(data: &Vec) -> RpcResult { + log::trace!("Get User ID"); + let message = TokenRequest::deserialize(&mut Deserializer::new(&mut data.as_slice())) + .map_err(|e| ErrorMessage::new(e.to_string()))?; + Ok(Message::new_with_serialize( + GET_USER_ID, + get_user_id_from_token(&message.token) + .ok_or(ErrorMessage::new("Invalid request token".to_string()))?, + )) + } }