Fix server unable to create fixed users due to incorrect access to user_data["key"]

This commit is contained in:
allegroai 2020-06-21 23:52:01 +03:00
parent ab3dceed92
commit 5e095af3aa
2 changed files with 14 additions and 20 deletions

View File

@ -1,5 +1,6 @@
import logging import logging
import os import os
import platform
from functools import reduce from functools import reduce
from os import getenv from os import getenv
from os.path import expandvars from os.path import expandvars
@ -15,7 +16,7 @@ from pyparsing import (
DEFAULT_EXTRA_CONFIG_PATH = "/opt/trains/config" DEFAULT_EXTRA_CONFIG_PATH = "/opt/trains/config"
EXTRA_CONFIG_PATH_ENV_KEY = "TRAINS_CONFIG_DIR" EXTRA_CONFIG_PATH_ENV_KEY = "TRAINS_CONFIG_DIR"
EXTRA_CONFIG_PATH_SEP = ":" EXTRA_CONFIG_PATH_SEP = ":" if platform.system() != "Windows" else ';'
EXTRA_CONFIG_VALUES_ENV_KEY_SEP = "__" EXTRA_CONFIG_VALUES_ENV_KEY_SEP = "__"
EXTRA_CONFIG_VALUES_ENV_KEY_PREFIX = f"TRAINS{EXTRA_CONFIG_VALUES_ENV_KEY_SEP}" EXTRA_CONFIG_VALUES_ENV_KEY_PREFIX = f"TRAINS{EXTRA_CONFIG_VALUES_ENV_KEY_SEP}"

View File

@ -10,22 +10,25 @@ from service_repo.auth.fixed_user import FixedUser
def _ensure_auth_user(user_data: dict, company_id: str, log: Logger, revoke: bool = False): def _ensure_auth_user(user_data: dict, company_id: str, log: Logger, revoke: bool = False):
ensure_credentials = {"key", "secret"}.issubset(user_data) key, secret = user_data.get("key"), user_data.get("secret")
if ensure_credentials: if not (key and secret):
user = AuthUser.objects( credentials = None
credentials__match=Credentials( else:
key=user_data["key"], secret=user_data["secret"] creds = Credentials(key=key, secret=secret)
)
).first() user = AuthUser.objects(credentials__match=creds).first()
if user: if user:
if revoke: if revoke:
user.credentials = [] user.credentials = []
user.save() user.save()
return user.id return user.id
credentials = [] if revoke else [creds]
user_id = user_data.get("id", f"__{user_data['name']}__") user_id = user_data.get("id", f"__{user_data['name']}__")
log.info(f"Creating user: {user_data['name']}") log.info(f"Creating user: {user_data['name']}")
user = AuthUser( user = AuthUser(
id=user_id, id=user_id,
name=user_data["name"], name=user_data["name"],
@ -33,9 +36,7 @@ def _ensure_auth_user(user_data: dict, company_id: str, log: Logger, revoke: boo
role=user_data["role"], role=user_data["role"],
email=user_data["email"], email=user_data["email"],
created=datetime.utcnow(), created=datetime.utcnow(),
credentials=[Credentials(key=user_data["key"], secret=user_data["secret"])] if not revoke else [] credentials=credentials,
if ensure_credentials
else None,
) )
user.save() user.save()
@ -68,12 +69,4 @@ def ensure_fixed_user(user: FixedUser, company_id: str, log: Logger):
_ensure_auth_user(user_data=data, company_id=company_id, log=log) _ensure_auth_user(user_data=data, company_id=company_id, log=log)
given_name, _, family_name = user.name.partition(" ") return _ensure_backend_user(user.user_id, company_id, user.name)
User(
id=user.user_id,
company=company_id,
name=user.name,
given_name=given_name,
family_name=family_name,
).save()