合作页面的内容

This commit is contained in:
李琦
2026-01-16 09:32:46 +08:00
parent a23b718865
commit 3bcef22487
15 changed files with 819 additions and 432 deletions

View File

@@ -2,14 +2,12 @@ package main
import (
"log"
"net/http"
"os"
"strings"
"github.com/gin-gonic/gin"
"github.com/niangaodev/art-code/config"
"github.com/niangaodev/art-code/handlers"
"github.com/niangaodev/art-code/middleware"
"github.com/niangaodev/art-code/utils"
)
func main() {
@@ -17,40 +15,17 @@ func main() {
config.InitDB()
defer config.CloseDB()
// 初始化ip2region (如果文件不存在,将降级为普通IP记录)
// 请确保在server根目录或合适位置放入 ip2region.xdb
utils.InitIP2Region("ip2region.xdb")
// 创建Gin引擎
router := gin.Default()
router := gin.New()
// 配置CORS
router.Use(func(c *gin.Context) {
// 获取允许的域名,优先从环境变量获取,否则使用默认值
allowedOrigins := os.Getenv("ALLOWED_ORIGINS")
if allowedOrigins == "" {
allowedOrigins = "http://localhost:5173,http://localhost:3000" // 开发环境默认值
}
// 检查请求来源是否在允许列表中
requestOrigin := c.Request.Header.Get("Origin")
if requestOrigin != "" {
// 简单的CORS origin检查
for _, origin := range strings.Split(allowedOrigins, ",") {
if strings.TrimSpace(origin) == requestOrigin {
c.Writer.Header().Set("Access-Control-Allow-Origin", requestOrigin)
break
}
}
}
c.Writer.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(http.StatusNoContent)
return
}
c.Next()
})
// 配置中间件
router.Use(middleware.CorsMiddleware())
router.Use(middleware.AccessLogMiddleware()) // 添加访问日志中间件
router.Use(gin.Recovery())
// API路由组
api := router.Group("/api")
@@ -132,9 +107,12 @@ func main() {
authAdmin.PUT("/settings", middleware.PermissionMiddleware("settings", "update"), handlers.AdminUpdateSetting)
authAdmin.DELETE("/settings/:key", middleware.PermissionMiddleware("settings", "delete"), handlers.AdminDeleteSetting)
// 仪表盘统计
authAdmin.GET("/dashboard/stats", middleware.PermissionMiddleware("dashboard", "read"), handlers.GetDashboardStats)
// 文章管理
authAdmin.GET("/posts", middleware.PermissionMiddleware("posts", "read"), handlers.AdminGetPosts)
authAdmin.POST("/posts", middleware.PermissionMiddleware("posts", "create"), handlers.AdminCreatePost)
authAdmin.POST("/posts", middleware.PermissionMiddleware("posts", "create"), handlers.CreatePost)
authAdmin.PUT("/posts/:id", middleware.PermissionMiddleware("posts", "update"), handlers.AdminUpdatePost)
authAdmin.DELETE("/posts/:id", middleware.PermissionMiddleware("posts", "delete"), handlers.AdminDeletePost)