shimoda.m@nds-tyo.co.jp 65acc3ce09 style: format適用
2023-05-12 13:39:14 +09:00

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()
)