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
|