Files
ForbiddenStarsApp/backend/app/auth/dev_stub.py
T
NotBigGhostandClaude Opus 5 ec1e94119c Чистка: устаревшие комментарии и подсказки, export-скрипт, мусорный файл
Комментарии про методы входа приведены к факту (логин/пароль и Telegram везде,
stub только в development): config.py, .env.example, telegram.py, dev_stub.py,
dev_auth.py, login.py. admin_login.py больше не обещает «строже игроцкого» —
описаны реальные лимиты; client_ip — адрес за прокси уже даёт uvicorn.

Подсказки деплоя: run.ps1/run.sh (build-push на ПК, `up -d` на Pi), compose,
.env.example (build-push.ps1), Caddyfile (туннель-контейнер вместо autossh);
ratelimit.py ссылается на core/events.py вместо CLAUDE.md.

Удалены неиспользуемые scripts/export-prod.sh (с блоком export-ignore в
.gitattributes и упоминаниями в README), db/init_db.py и случайно закоммиченный
файл «h -u origin dev…». #70

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
2026-09-19 03:12:16 +03:00

24 lines
874 B
Python

"""Dev-провайдер: вход без секрета по нику/идентификатору (только development)."""
from __future__ import annotations
from typing import Any
from app.auth.provider import AuthProvider, ExternalIdentity
from app.core.errors import ValidationError
class DevStubProvider(AuthProvider):
name = "stub"
def authenticate(self, payload: dict[str, Any]) -> ExternalIdentity:
nickname = (payload.get("nickname") or "").strip()
external_id = str(payload.get("external_id") or nickname).strip()
if not external_id:
raise ValidationError("Укажите никнейм для входа.")
return ExternalIdentity(
provider=self.name,
external_id=external_id,
suggested_nickname=nickname or external_id,
raw=dict(payload),
)