Class: LesliShield::UserSessionService

Inherits:
Lesli::ApplicationLesliService
  • Object
show all
Defined in:
app/services/lesli_shield/user_session_service.rb

Instance Method Summary collapse

Instance Method Details

#create(remote_ip, user_agent = nil, session_source = "devise_standard_session") ⇒ Object

create a new session



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'app/services/lesli_shield/user_session_service.rb', line 55

def create(remote_ip, user_agent=nil, session_source="devise_standard_session")

    # register a new unique session
    current_session = current_user.sessions.create({
        :remote => remote_ip,

        :agent_os => user_agent&.dig(:os) || "unknown",
        :agent_platform => user_agent&.dig(:platform) || "unknown",
        :agent_browser => user_agent&.dig(:browser) || "unknown",
        :agent_version => user_agent&.dig(:version) || "unknown",
        
        :session_source => session_source,
        :last_used_at => Date2.new.get,

        :usage_count => 1
    })

    # register or sync the current_user with the user representation on Firebase
    #Courier::One::Firebase::User.sync_user(@resource) if defined? CloudOne

    self.response(current_session)
end

#indexObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/services/lesli_shield/user_session_service.rb', line 36

def index
    LesliShield::User::Session
    .joins(:user)
    .select(
        :id,
        :user_id,
        :first_name,
        :session_source,
        Date2.new.date_time.db_column("created_at", "lesli_shield_user_sessions"),
        Date2.new.date_time.db_column("last_used_at"),
        Date2.new.date_time.db_column("expiration_at"),
        "CONCAT_WS(' ', agent_platform, agent_os, '/', agent_browser, agent_version) as device"
    )
    .page(query[:pagination][:page])
    .per(query[:pagination][:perPage])
    .order(updated_at: :desc)
end