feat(api): REST на chi + huma с auth-ручками и OpenAPI 3.1
- переход на chi + huma (решение D-006): huma отдаёт типизированные ручки и генерирует документ, auth-ручки живут на chi (cookie и заголовки напрямую) - единый формат ошибок: код (auth.invalid_credentials, auth.2fa_required, perm.denied и т.д.) + человекочитаемое сообщение (AGENT.md 8.5) - cookie сессии __Host-session: HttpOnly, SameSite=Lax, Secure при TLS; альтернатива — Bearer-токен для desktop/CLI (AGENT.md 8.1) - ручки: register, login, logout, logout-all, sessions, step-up, 2fa/setup, 2fa/enable, users/@me; IP и User-Agent прокидываются из запроса в контекст - /api/v1/openapi.json: объединённый документ (схемы huma + контракт auth) - тесты: регистрация через API с cookie, ошибки входа, обязательная сессия, валидация, наличие всех путей в OpenAPI
This commit is contained in:
+9
-1
@@ -13,9 +13,11 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"glchat/internal/auth"
|
||||
"glchat/internal/config"
|
||||
"glchat/internal/database"
|
||||
"glchat/internal/server"
|
||||
"glchat/internal/store"
|
||||
)
|
||||
|
||||
// Build metadata is injected with -ldflags "-X main.version=... -X main.commit=... -X main.buildDate=...".
|
||||
@@ -129,7 +131,13 @@ func run() error {
|
||||
stopMaintenance := db.RunMaintenance(ctx, logger, cfg.Maintenance)
|
||||
defer stopMaintenance()
|
||||
|
||||
srv := server.New(cfg, db, logger)
|
||||
st := store.New(db)
|
||||
authService, err := auth.New(ctx, cfg, st, logger)
|
||||
if err != nil {
|
||||
return fmt.Errorf("initialize authentication: %w", err)
|
||||
}
|
||||
|
||||
srv := server.New(cfg, db, logger, server.Deps{Store: st, Auth: authService})
|
||||
errCh := make(chan error, 1)
|
||||
go func() {
|
||||
logger.Info("http server listening",
|
||||
|
||||
Reference in New Issue
Block a user