package account import ( "api_yal/internal/logger" "api_yal/internal/middleware" "api_yal/internal/repository" "github.com/go-chi/chi/v5" "gorm.io/gorm" ) // RegisterRoutes регистрирует маршруты для работы с аккаунтами func RegisterRoutes(r chi.Router, db *gorm.DB, jwtSecret string) { l := logger.Get() l.Debug("Регистрация маршрутов аккаунтов") // Создаем репозиторий и сервис accountRepo := repository.NewAccountRepository(db) accountService := NewService(accountRepo) accountHandler := NewHandler(accountService) // Публичные маршруты (без аутентификации) r.Group(func(r chi.Router) { r.Post("/forgot-password", accountHandler.ForgotPassword) r.Post("/reset-password", accountHandler.ResetPassword) }) // Защищенные маршруты (требуют аутентификации) r.Group(func(r chi.Router) { r.Use(middleware.AuthMiddleware(jwtSecret)) r.Get("/profile", accountHandler.GetAccountProfile) r.Get("/me", accountHandler.GetAccountByID) r.Put("/me", accountHandler.UpdateAccount) r.Delete("/me", accountHandler.DeleteAccount) r.Post("/change-password", accountHandler.ChangePassword) }) // Административные маршруты (требуют прав администратора) r.Group(func(r chi.Router) { r.Use(middleware.AuthMiddleware(jwtSecret)) r.Use(middleware.AdminOnlyMiddleware) r.Get("/accounts", accountHandler.ListAccounts) r.Get("/account", accountHandler.GetAccountByIDAdmin) r.Put("/account/verify", accountHandler.VerifyAccount) r.Put("/account/status", accountHandler.UpdateAccountStatus) }) l.Info("Маршруты аккаунтов зарегистрированы") }