package api

import (
	"gitea.zjmud.xyz/phyer/rbac/controllers"
	"gitea.zjmud.xyz/phyer/rbac/middleware"
	"github.com/gin-gonic/gin"
)

func SetupRoutes(r *gin.Engine) {
	// 认证相关路由
	auth := r.Group("/auth")
	{
		auth.POST("/register", controllers.Register)
		auth.POST("/login", controllers.Login)
	}

	// 需要认证的路由
	api := r.Group("/api")
	api.Use(middleware.JWTAuth())
	{
		// 用户管理
		users := api.Group("/users")
		{
			users.GET("/", controllers.GetUsers)
			users.GET("/:id", controllers.GetUser)
			users.PUT("/:id", controllers.UpdateUser)
			users.DELETE("/:id", controllers.DeleteUser)
		}

		// 角色管理
		roles := api.Group("/roles")
		{
			roles.POST("/", controllers.CreateRole)
			roles.GET("/", controllers.GetRoles)
			roles.GET("/:id", controllers.GetRole)
			roles.PUT("/:id", controllers.UpdateRole)
			roles.DELETE("/:id", controllers.DeleteRole)
		}

		// 权限管理
		permissions := api.Group("/permissions")
		{
			permissions.POST("", controllers.CreatePermission)
			permissions.GET("", controllers.GetPermissions)
			permissions.GET("/:id", controllers.GetPermission)
			permissions.PUT("/:id", controllers.UpdatePermission)
			permissions.DELETE("/:id", controllers.DeletePermission)
		}

		// Handle trailing slash redirect
		api.GET("/permissions/", func(c *gin.Context) {
			c.Redirect(301, "/api/permissions")
		})
	}
}