From 66ebcb662d98593e379f1b8275121f4da9918313 Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Sat, 17 Feb 2024 18:26:23 +0100 Subject: [PATCH] Add authentication by token. --- src/requests/login.cr | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/requests/login.cr b/src/requests/login.cr index 0fcd150..e068286 100644 --- a/src/requests/login.cr +++ b/src/requests/login.cr @@ -1,4 +1,17 @@ class AuthD::Request + def self.perform_login(authd : AuthD::Service, fd : Int32, user : AuthD::User) + user.date_last_connection = Time.local + token = user.to_token + + # Change the date of the last connection. + authd.users_per_uid.update user.uid.to_s, user + + # On successuful connection: store the authenticated user in a hash. + authd.logged_users[fd] = user.to_public + + Response::Login.new (token.to_s authd.configuration.secret_key), user.uid + end + IPC::JSON.message Login, 0 do property login : String property password : String @@ -29,17 +42,25 @@ class AuthD::Request return Response::ErrorInvalidCredentials.new end - user.date_last_connection = Time.local - token = user.to_token - - # Change the date of the last connection. - authd.users_per_uid.update user.uid.to_s, user - - # On successuful connection: store the authenticated user in a hash. - authd.logged_users[fd] = user.to_public - - Response::Login.new (token.to_s authd.configuration.secret_key), user.uid + AuthD::Request.perform_login authd, fd, user.not_nil! end end AuthD.requests << Login + + IPC::JSON.message AuthByToken, 15 do + property token : String + + def initialize(@token) + end + + def handle(authd : AuthD::Service, fd : Int32) + token_payload = AuthD::Token.from_s authd.configuration.secret_key, token + user = authd.users_per_uid.get? token_payload.uid.to_s + + return Response::ErrorUserNotFound.new if user.nil? + + AuthD::Request.perform_login authd, fd, user + end + end + AuthD.requests << AuthByToken end