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