54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import datetime
|
|
import uuid
|
|
|
|
from pynamodb.attributes import NumberAttribute, UnicodeAttribute
|
|
from pynamodb.models import Model as DynamoDBTableModel
|
|
|
|
from src.system_var import environment
|
|
|
|
|
|
class UserSession(DynamoDBTableModel):
|
|
class Meta:
|
|
table_name = environment.SESSION_TABLE_NAME
|
|
region = environment.AWS_REGION
|
|
session_key = UnicodeAttribute(hash_key=True)
|
|
user_id = UnicodeAttribute()
|
|
id_token = UnicodeAttribute()
|
|
doc_flg = UnicodeAttribute()
|
|
inst_flg = UnicodeAttribute()
|
|
bio_flg = UnicodeAttribute()
|
|
master_mainte_flg = UnicodeAttribute()
|
|
user_flg = UnicodeAttribute()
|
|
refresh_token = UnicodeAttribute()
|
|
csrf_token = UnicodeAttribute()
|
|
last_access_time = NumberAttribute()
|
|
record_expiration_time = NumberAttribute()
|
|
|
|
@classmethod
|
|
def new_last_access_time(cls):
|
|
return datetime.datetime.now().timestamp()
|
|
|
|
@classmethod
|
|
def new_record_expiration_time(cls, expire=environment.SESSION_EXPIRE_MINUTE):
|
|
last_access_time = datetime.datetime.fromtimestamp(cls.new_last_access_time())
|
|
return (last_access_time + datetime.timedelta(minutes=expire)).timestamp()
|
|
|
|
@classmethod
|
|
def new(
|
|
cls, user_id, id_token, refresh_token, csrf_token, doc_flg, inst_flg, bio_flg, master_mainte_flg, user_flg
|
|
):
|
|
return cls(
|
|
session_key=str(uuid.uuid4()),
|
|
user_id=user_id,
|
|
id_token=id_token,
|
|
refresh_token=refresh_token,
|
|
csrf_token=csrf_token,
|
|
doc_flg=doc_flg,
|
|
inst_flg=inst_flg,
|
|
bio_flg=bio_flg,
|
|
master_mainte_flg=master_mainte_flg,
|
|
user_flg=user_flg,
|
|
last_access_time=cls.new_last_access_time(),
|
|
record_expiration_time=cls.new_record_expiration_time()
|
|
)
|