diff --git a/src/requests/admin.cr b/src/requests/admin.cr index 54701ba..75470b1 100644 --- a/src/requests/admin.cr +++ b/src/requests/admin.cr @@ -83,4 +83,26 @@ class AuthD::Request end end AuthD.requests << BootstrapFirstAdmin + + IPC::JSON.message DecodeToken, 14 do + property token : String + + def initialize(@token) + end + + def handle(authd : AuthD::Service, fd : Int32) + logged_user = authd.get_logged_user_full? fd + return Response::ErrorMustBeAuthenticated.new if logged_user.nil? + logged_user.assert_permission("authd", "*", User::PermissionLevel::Read) + + token_payload = AuthD::Token.from_s authd.configuration.secret_key, token + user = authd.users_per_uid.get? token_payload.uid.to_s + if user + Response::User.new user.to_public + else + Response::ErrorUserNotFound.new + end + end + end + AuthD.requests << DecodeToken end