diff --git a/services/identity/src/client_service.rs b/services/identity/src/client_service.rs --- a/services/identity/src/client_service.rs +++ b/services/identity/src/client_service.rs @@ -22,7 +22,11 @@ database::{DatabaseClient, Error as DBError, KeyPayload}, id::generate_uuid, nonce::generate_nonce_data, - reserved_users::validate_signed_account_ownership_message, + reserved_users::{ + validate_add_reserved_username_message, + validate_remove_reserved_username_message, + validate_signed_account_ownership_message, + }, siwe::parse_and_verify_siwe_message, token::{AccessTokenData, AuthType}, }; @@ -817,16 +821,44 @@ async fn add_reserved_username( &self, - _request: tonic::Request, + request: tonic::Request, ) -> Result, tonic::Status> { - unimplemented!() + let message = request.into_inner(); + + let username = validate_add_reserved_username_message( + &message.message, + &message.signature, + )?; + + self + .client + .add_username_to_reserved_usernames_table(username) + .await + .map_err(handle_db_error)?; + + let response = Response::new(Empty {}); + Ok(response) } async fn remove_reserved_username( &self, - _request: tonic::Request, + request: tonic::Request, ) -> Result, tonic::Status> { - unimplemented!() + let message = request.into_inner(); + + let username = validate_remove_reserved_username_message( + &message.message, + &message.signature, + )?; + + self + .client + .delete_username_from_reserved_usernames_table(username) + .await + .map_err(handle_db_error)?; + + let response = Response::new(Empty {}); + Ok(response) } } diff --git a/services/identity/src/interceptor.rs b/services/identity/src/interceptor.rs --- a/services/identity/src/interceptor.rs +++ b/services/identity/src/interceptor.rs @@ -3,7 +3,7 @@ use crate::config::CONFIG; -pub fn check_auth(req: Request<()>) -> Result, Status> { +pub fn check_auth(req: Request) -> Result, Status> { let token: MetadataValue<_> = CONFIG.keyserver_auth_token.parse().map_err(|e| { error!("Invalid auth token on server: {}", e);