mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Use UTC for tokens_valid_from in user config
This commit is contained in:
parent
2a6c0ca751
commit
9ec0044458
@ -38,7 +38,7 @@ class Users(BaseModel):
|
||||
superuser = BooleanField(default=False)
|
||||
lang = CharField(default="en_EN")
|
||||
support_logs = CharField(default="")
|
||||
valid_tokens_from = DateTimeField(default=datetime.datetime.now)
|
||||
valid_tokens_from = DateTimeField(default=Helpers.get_utc_now)
|
||||
server_order = CharField(default="")
|
||||
preparing = BooleanField(default=False)
|
||||
hints = BooleanField(default=True)
|
||||
@ -261,6 +261,8 @@ class HelperUsers:
|
||||
|
||||
@staticmethod
|
||||
def update_user(user_id, up_data=None):
|
||||
for item in up_data:
|
||||
print(item, type(item))
|
||||
if up_data is None:
|
||||
up_data = {}
|
||||
if up_data:
|
||||
|
@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import time
|
||||
from datetime import datetime
|
||||
from typing import Optional, Dict, Any, Tuple
|
||||
import jwt
|
||||
from jwt import PyJWTError
|
||||
@ -62,7 +63,14 @@ class Authentication:
|
||||
user = HelperUsers.get_user(user_id)
|
||||
# TODO: Have a cache or something so we don't constantly
|
||||
# have to query the database
|
||||
if int(user.get("valid_tokens_from").timestamp()) < iat:
|
||||
|
||||
valid_tokens_from_str = user.get("valid_tokens_from")
|
||||
|
||||
# Convert the string to a datetime object
|
||||
valid_tokens_from_dt = datetime.strptime(
|
||||
valid_tokens_from_str, "%Y-%m-%d %H:%M:%S.%f%z"
|
||||
)
|
||||
if int(valid_tokens_from_dt.timestamp()) < iat:
|
||||
# Success!
|
||||
return key, data, user
|
||||
return None
|
||||
|
@ -19,7 +19,8 @@ import shutil
|
||||
import shlex
|
||||
import subprocess
|
||||
import itertools
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
import time
|
||||
from socket import gethostname
|
||||
from contextlib import redirect_stderr, suppress
|
||||
import libgravatar
|
||||
@ -640,6 +641,10 @@ class Helpers:
|
||||
version = f"{major}.{minor}.{sub}"
|
||||
return str(version)
|
||||
|
||||
@staticmethod
|
||||
def get_utc_now() -> datetime:
|
||||
return datetime.fromtimestamp(time.time(), tz=timezone.utc)
|
||||
|
||||
def encode_pass(self, password):
|
||||
return self.passhasher.hash(password)
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import datetime
|
||||
import logging
|
||||
from app.classes.web.base_api_handler import BaseApiHandler
|
||||
from app.classes.shared.helpers import Helpers
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -13,7 +14,7 @@ class ApiAuthInvalidateTokensHandler(BaseApiHandler):
|
||||
|
||||
logger.debug(f"Invalidate tokens for user {auth_data[4]['user_id']}")
|
||||
self.controller.users.raw_update_user(
|
||||
auth_data[4]["user_id"], {"valid_tokens_from": datetime.datetime.now()}
|
||||
auth_data[4]["user_id"], {"valid_tokens_from": Helpers.get_utc_now()}
|
||||
)
|
||||
|
||||
self.finish_json(200, {"status": "ok"})
|
||||
|
@ -1,10 +1,11 @@
|
||||
import peewee
|
||||
import datetime
|
||||
from app.classes.shared.helpers import Helpers
|
||||
|
||||
|
||||
def migrate(migrator, database, **kwargs):
|
||||
migrator.add_columns(
|
||||
"users", valid_tokens_from=peewee.DateTimeField(default=datetime.datetime.now)
|
||||
"users", valid_tokens_from=peewee.DateTimeField(default=Helpers.get_utc_now)
|
||||
)
|
||||
migrator.drop_columns("users", ["api_token"])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user