33 lines
1.0 KiB
Plaintext
33 lines
1.0 KiB
Plaintext
|
import Model from require "lapis.db.model"
|
||
|
import Users from require "models"
|
||
|
|
||
|
import locate, autoload from require "locator"
|
||
|
import to_seconds, for_db from locate "datetime"
|
||
|
import settings from autoload "utility"
|
||
|
import time from os
|
||
|
|
||
|
class Sessions extends Model
|
||
|
@create: (values, opts) =>
|
||
|
now = time!
|
||
|
values.opened_at = for_db now
|
||
|
values.closed_at = for_db now + settings["users.session-timeout"]
|
||
|
return super values, opts
|
||
|
|
||
|
get: (cookie) =>
|
||
|
if cookie.session_id
|
||
|
if session = @find id: cookie.session_id
|
||
|
now = time!
|
||
|
if now - to_seconds(session.closed_at) <= 0
|
||
|
if user = Users\find id: session.user_id
|
||
|
session\update closed_at: for_db now + settings["users.session-timeout"]
|
||
|
return user
|
||
|
else
|
||
|
session\update closed_at: for_db now
|
||
|
cookie.session_id = nil
|
||
|
|
||
|
close: (cookie) =>
|
||
|
if cookie.session_id
|
||
|
if session = @find id: cookie.session_id
|
||
|
session\update closed_at: for_db time!
|
||
|
cookie.session_id = nil
|