/
foult080
/
hackaton-app
Обзор
Документация
Войти
/
foult080
/
hackaton-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
internal/handler/auth_handler.go
89 строк
2 KB
Foult080
fix(): some fixes for auth
10 июл 2026, 10:58
10 июл 2026, 10:58
ff9ca13
Код
Авторство
О чём код?
package handler import ( "encoding/json" "net/http" "github.com/kkrit/hackaton/internal/dto" "github.com/kkrit/hackaton/internal/middleware" "github.com/kkrit/hackaton/internal/service" "github.com/kkrit/hackaton/pkg/apperror" ) type AuthHandler struct { svc *service.AuthService } func NewAuthHandler(svc *service.AuthService) *AuthHandler { return &AuthHandler{svc: svc} } func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) { r.Body = http.MaxBytesReader(w, r.Body, 1<<20) var req dto.LoginRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { Error(w, apperror.BadRequest("Invalid request body")) return } if err := ValidateRequest(&req); err != nil { Error(w, err) return } result, err := h.svc.Login(r.Context(), &req) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, map[string]interface{}{ "token": result.Token, "refreshToken": result.RefreshToken, "user": result.User, }) } func (h *AuthHandler) Refresh(w http.ResponseWriter, r *http.Request) { r.Body = http.MaxBytesReader(w, r.Body, 1<<20) var req dto.RefreshRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { Error(w, apperror.BadRequest("Invalid request body")) return } if err := ValidateRequest(&req); err != nil { Error(w, err) return } result, err := h.svc.Refresh(r.Context(), req.RefreshToken) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, map[string]interface{}{ "token": result.Token, "refreshToken": result.RefreshToken, "user": result.User, }) } func (h *AuthHandler) GetMe(w http.ResponseWriter, r *http.Request) { user := middleware.GetUser(r.Context()) if user == nil { Error(w, apperror.Unauthorized("Not authenticated")) return } data, err := h.svc.GetMe(r.Context(), user.ID) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, data) }