import datetime class DefaultApiConfig: app: str host: str port: int log_level: str reload: bool @classmethod def as_dict(cls): return { "app": cls.app, "host": cls.host, "port": int(cls.port), "log_level": cls.log_level, "reload": bool(cls.reload), } class ApiConfigs: """Base class for all configurations.""" SECRET: str = ( "59f871a2d2194e96adb36b279d2cc21059f871a2d2194e96adb36b279d2cc21059f871a2d2194e96adb36b279d2cc210s" ) ACCESS_TIME: int = 432000 REFRESH_TIME: int = 864000 DEFAULT_SIZE: int = 10 MIN_SIZE: int = 5 MAX_SIZE: int = 50 ACCESS_TOKEN_TAG: str = "Authorization" REFRESH_TOKEN_TAG: str = "Refresher" ACCESS_TOKEN_LENGTH: int = 72 REFRESH_TOKEN_LENGTH: int = 128 class ApiStatic: PLACEHOLDER = "https://s.tmimgcdn.com/scr/800x500/276800/building-home-nature-logo-vector-template-3_276851-original.jpg" FORGOT_LINK = "https://www.evyos.com.tr/password/create?tokenUrl=" BLACKLIST_LINK = "https://www.evyos.com.tr/support/unknown-login-notice/" APP_DIR = "/home/berkay/git-evyos/api-managment-backend/" @classmethod def forgot_link(cls, forgot_key): return cls.FORGOT_LINK + forgot_key @classmethod def blacklist_login(cls, record_id): return cls.BLACKLIST_LINK + record_id class MainConfig: # Date and Time Configuration DATETIME_FORMAT = "YYYY-MM-DD HH:mm:ss Z" DATETIME_FORMAT_JS = "YYYY-MM-DD HH:mm:ss +0" # Timezone Configuration DEFAULT_TIMEZONE = "GMT+3" # Default timezone for the application SYSTEM_TIMEZONE = "GMT+0" # System timezone (used for internal operations) SUPPORTED_TIMEZONES = ["GMT+0", "GMT+3"] # List of supported timezones class LanguageConfig: SUPPORTED_LANGUAGES = ["en", "tr"] DEFAULT_LANGUAGE = "tr" class ValidationsConfig: SUPPORTED_VALIDATIONS = ["header", "validation", "all"] DEFAULT_VALIDATION = "all" class ApiConfig(DefaultApiConfig): # Application Information APP_NAME = "evyos-auth-api-gateway" TITLE = "WAG API Auth Api Gateway" DESCRIPTION = ( "This api is serves as web auth api gateway only to evyos web services." ) APP_URL = "https://www.auth.eys.gen.tr" # Server Configuration app = "app:app" host = "0.0.0.0" port = 41575 log_level = "info" reload = True class Auth: ACCESS_EMAIL_EXT = "evyos.com.tr" ACCESS_TOKEN_TAG = "evyos-session-key" REFRESHER_TOKEN_TAG = "eys-session-refresher" SECRET_KEY_72 = ( "t3sUAmjTGeTgDc6dAUrB41u2SNg0ZHzj4HTjem95y3fRH1nZXOHIBj163kib6iLybT0gLaxq" ) SECRET_KEY_96 = "7ct8VpiwaP1hR2bVSet4dEEAgepuTZUOnO1QxOgKyDqBR2PkqNhcubSrbUUigQKoQA1PBoeeQn5ZCo24pESmVtKs76nA4EKq" SECRET_KEY_144 = ( "R2p5Rq6KCr6PCfjFYUeH1keF2VWHFEuqINVjBGGnvRA2m10pYUKqfOtIGBcaj2v5wZmElDndzSHGOS7roQsoTelPSok0" + "qqMucurMWE0FGexGpFuJkfPEm9tH2OjMOqegvEetpSVywH0W4Kh4" ) ALGORITHM = "HS256" ACCESS_TOKEN_LENGTH: int = 90 REFRESHER_TOKEN_LENGTH: int = 144 PASSWORD_EXPIRE_DAY = datetime.timedelta(days=30) TOKEN_EXPIRE_MINUTES_1 = datetime.timedelta(minutes=1) TOKEN_EXPIRE_MINUTES_15 = datetime.timedelta(minutes=15) TOKEN_EXPIRE_MINUTES_30 = datetime.timedelta(minutes=30) TOKEN_EXPIRE_DAY_1 = datetime.timedelta(days=1) TOKEN_EXPIRE_DAY_5 = datetime.timedelta(days=5) TOKEN_EXPIRE_DAY_15 = datetime.timedelta(days=15) TOKEN_EXPIRE_DAY_30 = datetime.timedelta(days=30)