Class: Lesli::User::SessionService

Inherits:
ApplicationLesliService show all
Defined in:
app/services/lesli/user/session_service.rb

Instance Method Summary collapse

Methods inherited from ApplicationLesliService

#delete, #error, #errors, #errors_as_sentence, #find, #found?, #initialize, #list, #result, #show, #successful?, #update

Constructor Details

This class inherits a constructor from Lesli::ApplicationLesliService

Instance Method Details

#create(user_agent, remote_ip, 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/user/session_service.rb', line 55

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

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

        :agent_os => user_agent[:os] || "unknown",
        :agent_platform => user_agent[:platform] || "unknown",
        :agent_browser => user_agent[:browser] || "unknown",
        :agent_version => user_agent[: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/user/session_service.rb', line 36

def index
    Lesli::User::Session
    .joins(:user)
    .select(
        :id,
        :user_id,
        :first_name,
        :session_source,
        Date2.new.date_time.db_column("created_at", "lesli_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