55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
import os
|
|
from pathlib import Path
|
|
from typing import Any
|
|
from pydantic_settings import BaseSettings
|
|
|
|
class Settings(BaseSettings):
|
|
RUNTIME_ENV: str = "development"
|
|
ENVIRONMENT: str = "development"
|
|
DATABASE_URL: str = "mysql+pymysql://Adithiyan:Adithiyan$2025Mysql@127.0.0.1:3306/ifixkartecommerceadmin"
|
|
CORE_DATABASE_URL: str = "mysql+pymysql://Adithiyan:Adithiyan$2025Mysql@127.0.0.1:3306/ifixkartecommerceadmin"
|
|
CRM_DATABASE_URL: str = "mysql+pymysql://Adithiyan:Adithiyan$2025Mysql@127.0.0.1:3306/ifixkartcrm"
|
|
COMMERCE_DATABASE_URL: str = "mysql+pymysql://Adithiyan:Adithiyan$2025Mysql@127.0.0.1:3306/ifixkartecommerce"
|
|
JWT_PRIVATE_KEY_PATH: str = "jwt_private.pem"
|
|
JWT_PUBLIC_KEY_PATH: str = "jwt_public.pem"
|
|
ALGORITHM: str = "RS512"
|
|
ACCESS_TOKEN_EXPIRE_MIN: int = 1440
|
|
REFRESH_TOKEN_EXPIRE_DAYS: int = 120
|
|
PROJECT_NAME: str = "iFixKart"
|
|
MAX_FAILED_LOGIN: int = 5
|
|
LOCKOUT_MINUTES: int = 15
|
|
SECRET_KEY: str
|
|
PUBLIC_API_KEY: str
|
|
GOOGLE_CLIENT_ID: str = ""
|
|
GOOGLE_CLIENT_SECRET: str = ""
|
|
GOOGLE_REDIRECT_URI: str = ""
|
|
RAZORPAY_KEY_ID: str = "rzp_test_TTUzPFYF0hRV89"
|
|
RAZORPAY_KEY_SECRET: str = "74tmlSkS4qK7zQaH1zclQfeH"
|
|
RAZORPAY_WEBHOOK_SECRET: str = "6TjjXgErPG3@ZpM"
|
|
RAZORPAY_ENABLED: bool = True
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
extra = "ignore"
|
|
|
|
settings = Settings()
|
|
|
|
def load_private_key_bytes(path=None):
|
|
p = Path(path or settings.JWT_PRIVATE_KEY_PATH)
|
|
if not p.is_absolute():
|
|
# resolve relative to project root (parent of app directory)
|
|
project_root = Path(__file__).resolve().parents[3]
|
|
p = project_root / p
|
|
if not p.exists():
|
|
raise FileNotFoundError(f"Private key not found at {p}")
|
|
return p.read_bytes()
|
|
|
|
def load_public_key_bytes(path=None):
|
|
p = Path(path or settings.JWT_PUBLIC_KEY_PATH)
|
|
if not p.is_absolute():
|
|
# resolve relative to project root (parent of app directory)
|
|
project_root = Path(__file__).resolve().parents[3]
|
|
p = project_root / p
|
|
if not p.exists():
|
|
raise FileNotFoundError(f"Public key not found at {p}")
|
|
return p.read_bytes()
|