package handlers import ( "fmt" "net/http" "rmser/internal/services/auth" "rmser/pkg/logger" "github.com/gin-gonic/gin" "go.uber.org/zap" ) // AuthHandler обрабатывает HTTP запросы авторизации type AuthHandler struct { service *auth.Service botUsername string } // NewAuthHandler создает новый экземпляр AuthHandler func NewAuthHandler(s *auth.Service, botUsername string) *AuthHandler { return &AuthHandler{service: s, botUsername: botUsername} } // InitDesktopAuth инициализирует desktop авторизацию // POST /api/auth/init-desktop func (h *AuthHandler) InitDesktopAuth(c *gin.Context) { // Вызываем сервис для генерации session_id sessionID, err := h.service.InitDesktopAuth() if err != nil { logger.Log.Error("Ошибка инициализации desktop авторизации", zap.Error(err)) c.JSON(http.StatusInternalServerError, gin.H{ "error": "Ошибка инициализации авторизации", }) return } // Формируем QR URL для Telegram бота qrURL := fmt.Sprintf("https://t.me/%s?start=auth_%s", h.botUsername, sessionID) logger.Log.Info("Desktop авторизация инициализирована", zap.String("session_id", sessionID), zap.String("qr_url", qrURL), ) // Возвращаем ответ с session_id и qr_url c.JSON(http.StatusOK, gin.H{ "session_id": sessionID, "qr_url": qrURL, }) }