B2C/B2B split: DEFAULT_USER_TIER, ALLOWED_DOMAINS, zero-price filter, InboxRescue branding & pricing page
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/98c1f90b-0287-4908-a0be-ad066c453cc5 Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -97,6 +97,15 @@ class Settings(BaseSettings):
|
||||
ADMIN_EMAIL: Optional[str] = "christianlouis@gmail.com"
|
||||
ADMIN_PASSWORD: Optional[str] = None
|
||||
|
||||
# User defaults & access control
|
||||
# Tier assigned to every new user on registration: free | basic | pro | enterprise
|
||||
DEFAULT_USER_TIER: str = "free"
|
||||
# Comma-separated list of allowed email domains (empty = no restriction).
|
||||
# When set, only addresses from these domains may register or log in.
|
||||
# Useful for B2B / Google Workspace installations.
|
||||
# Example: "company.com,subsidiary.com"
|
||||
ALLOWED_DOMAINS: List[str] = []
|
||||
|
||||
# Mail Server Presets
|
||||
MAIL_SERVER_PRESETS_FILE: str = "app/data/mail_server_presets.json"
|
||||
|
||||
@@ -108,6 +117,23 @@ class Settings(BaseSettings):
|
||||
return [i.strip() for i in v.split(",")]
|
||||
return v
|
||||
|
||||
@field_validator("ALLOWED_DOMAINS", mode="before")
|
||||
@classmethod
|
||||
def assemble_allowed_domains(cls, v: str | List[str]) -> List[str]:
|
||||
"""Parse allowed domains from a comma-separated environment variable"""
|
||||
if isinstance(v, str):
|
||||
return [d.strip().lower() for d in v.split(",") if d.strip()]
|
||||
return [d.lower() for d in v if d]
|
||||
|
||||
@field_validator("DEFAULT_USER_TIER")
|
||||
@classmethod
|
||||
def validate_default_user_tier(cls, v: str) -> str:
|
||||
"""Ensure DEFAULT_USER_TIER is one of the known tier values"""
|
||||
valid = {"free", "basic", "pro", "enterprise"}
|
||||
if v.lower() not in valid:
|
||||
raise ValueError(f"DEFAULT_USER_TIER must be one of {valid}, got '{v}'")
|
||||
return v.lower()
|
||||
|
||||
@field_validator("SECRET_KEY")
|
||||
@classmethod
|
||||
def validate_secret_key(cls, v: str) -> str:
|
||||
|
||||
Reference in New Issue
Block a user