Add method to get the UserID for a token

Signed-off-by: trivernis <trivernis@protonmail.com>
pull/1/head
trivernis 4 years ago
parent 4c59b345a5
commit f2ca8c8ab5
Signed by: Trivernis
GPG Key ID: DFFFCC2C7A02DB45

@ -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];

@ -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<u8>) -> RpcResult<Message> {
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()))?,
))
}
}

Loading…
Cancel
Save