Files
tp/main_dc/yalarba/api_yal/internal/domain/account/router.go
T
valitovgaziz 75b2f3f6b2 On branch main
modified:   main_dc/yalarba/api_yal/internal/domain/account/dto.go
	new file:   main_dc/yalarba/api_yal/internal/domain/account/errors.go
	modified:   main_dc/yalarba/api_yal/internal/domain/account/handler.go
	modified:   main_dc/yalarba/api_yal/internal/domain/account/router.go
	modified:   main_dc/yalarba/api_yal/internal/domain/account/service.go
	new file:   main_dc/yalarba/api_yal/internal/domain/account/types.go
	new file:   main_dc/yalarba/api_yal/internal/middleware/admin.go
	modified:   main_dc/yalarba/api_yal/internal/middleware/auth.go
	new file:   main_dc/yalarba/api_yal/internal/middleware/context.go
	new file:   main_dc/yalarba/api_yal/internal/middleware/logging.go
	modified:   main_dc/yalarba/api_yal/internal/router/router.go
last but not yet commit
2026-03-31 09:43:18 +05:00

51 lines
1.8 KiB
Go

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("Маршруты аккаунтов зарегистрированы")
}