mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
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,
|
||
})
|
||
}
|