zammad/zammad

View on GitHub
lib/sessions/event/who_am_i.rb

Summary

Maintainability
A
1 hr
Test Coverage
# Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

class Sessions::Event::WhoAmI < Sessions::Event::Base
  database_connection_required

=begin

Event module to send `who am i` to client connection.

To execute this manually, just paste the following into the browser console

  App.WebSocket.send({event:'who_am_i'})

=end

  def run

    if !@session || !@session['id']
      return {
        event: 'who_am_i',
        data:  {
          message: 'session not authenticated',
        },
      }
    end

    user = User.find_by(id: @session['id'])

    if !user
      return {
        event: 'who_am_i',
        data:  {
          message: "No such user with id #{@session['id']}",
        },
      }
    end
    attributes = user.attributes
    attributes.delete('password')
    {
      event: 'who_am_i',
      data:  {
        message: 'session authenticated',
        user:    attributes,
      },
    }
  end

end