modified: internal/server/server.go
new file: internal/utils/oauth_utils.go add utils oauth state generate
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"serv_golang_rest_api/internal/handlers"
|
"serv_golang_rest_api/internal/handlers"
|
||||||
|
"serv_golang_rest_api/internal/middleware"
|
||||||
"serv_golang_rest_api/internal/repository"
|
"serv_golang_rest_api/internal/repository"
|
||||||
"serv_golang_rest_api/internal/service"
|
"serv_golang_rest_api/internal/service"
|
||||||
|
|
||||||
@@ -21,11 +22,11 @@ func New(db *gorm.DB) *Server {
|
|||||||
router: chi.NewRouter(),
|
router: chi.NewRouter(),
|
||||||
db: db,
|
db: db,
|
||||||
}
|
}
|
||||||
s.configureRouter()
|
s.configureRouter(db)
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) configureRouter() {
|
func (s *Server) configureRouter(db *gorm.DB) {
|
||||||
// Общие middleware
|
// Общие middleware
|
||||||
for _, middleware := range handlers.CommonMiddleware() {
|
for _, middleware := range handlers.CommonMiddleware() {
|
||||||
s.router.Use(middleware)
|
s.router.Use(middleware)
|
||||||
@@ -36,20 +37,43 @@ func (s *Server) configureRouter() {
|
|||||||
|
|
||||||
// API routes
|
// API routes
|
||||||
s.router.Route("/api/v1", func(r chi.Router) {
|
s.router.Route("/api/v1", func(r chi.Router) {
|
||||||
s.setupUserRoutes(r)
|
s.setupUserRoutes(r, db)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) setupUserRoutes(r chi.Router) {
|
func (s *Server) setupUserRoutes(r chi.Router, db *gorm.DB) {
|
||||||
userRepo := repository.NewUserRepository(s.db)
|
userRepo := repository.NewUserRepository(s.db)
|
||||||
userService := service.NewUserService(userRepo)
|
userService := service.NewUserService(userRepo)
|
||||||
userHandler := handlers.NewUserHandler(userService)
|
userHandler := handlers.NewUserHandler(userService)
|
||||||
|
|
||||||
|
authHandler := &handlers.AuthHandler{DB: db}
|
||||||
|
oauthHandler := &handlers.OAuthHandler{DB: db}
|
||||||
|
|
||||||
|
// Публичные маршруты
|
||||||
|
r.Route("/auth", func(r chi.Router) {
|
||||||
|
r.Post("/register", authHandler.Register)
|
||||||
|
r.Post("/login", authHandler.Login)
|
||||||
|
|
||||||
|
// OAuth routes
|
||||||
|
r.Get("/google", oauthHandler.GoogleLogin)
|
||||||
|
r.Get("/google/callback", oauthHandler.GoogleCallback)
|
||||||
|
r.Get("/yandex", oauthHandler.YandexLogin)
|
||||||
|
r.Get("/yandex/callback", oauthHandler.YandexCallback)
|
||||||
|
r.Get("/vk", oauthHandler.VKLogin)
|
||||||
|
r.Get("/vk/callback", oauthHandler.VKCallback)
|
||||||
|
})
|
||||||
|
|
||||||
|
// Защищенные маршруты
|
||||||
|
r.Route("/api", func(r chi.Router) {
|
||||||
|
r.Use(middleware.AuthMiddleware)
|
||||||
|
|
||||||
r.Route("/users", func(r chi.Router) {
|
r.Route("/users", func(r chi.Router) {
|
||||||
r.Get("/", userHandler.GetAllUsers)
|
r.Get("/", userHandler.GetAllUsers)
|
||||||
r.Post("/", userHandler.CreateUser)
|
r.Post("/", userHandler.CreateUser)
|
||||||
r.Get("/{id}", userHandler.GetUser)
|
r.Get("/{id}", userHandler.GetUser)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) healthCheck(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) healthCheck(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// utils/oauth_utils.go
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GenerateState generates a random state string for OAuth
|
||||||
|
func GenerateState() string {
|
||||||
|
b := make([]byte, 16)
|
||||||
|
rand.Read(b)
|
||||||
|
return fmt.Sprintf("%x", b)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user