mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-04-25 11:18:22 +00:00
Add new application structure: - app/main.py - application entry point - app/plugins/ - plugin system with auth plugin: - api/ - REST API endpoints and schemas - authorization/ - auth policies, providers, hooks - domain/ - business logic (service, models, jwt, password) - injection/ - route injection and guards - ops/ - operational utilities - runtime/ - runtime configuration - security/ - middleware, CSRF, dependencies - storage/ - user repositories and models - app/static/ - static assets (scalar.js for API docs) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
29 lines
935 B
Python
29 lines
935 B
Python
"""Write initial admin credentials to a restricted file instead of logs."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
from deerflow.config.paths import get_paths
|
|
|
|
_CREDENTIAL_FILENAME = "admin_initial_credentials.txt"
|
|
|
|
|
|
def write_initial_credentials(email: str, password: str, *, label: str = "initial") -> Path:
|
|
target = get_paths().base_dir / _CREDENTIAL_FILENAME
|
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
content = (
|
|
f"# DeerFlow admin {label} credentials\n# This file is generated on first boot or password reset.\n# Change the password after login via Settings -> Account,\n# then delete this file.\n#\nemail: {email}\npassword: {password}\n"
|
|
)
|
|
|
|
fd = os.open(target, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600)
|
|
with os.fdopen(fd, "w", encoding="utf-8") as fh:
|
|
fh.write(content)
|
|
|
|
return target.resolve()
|
|
|
|
|
|
__all__ = ["write_initial_credentials"]
|