更新前后端代码
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"filestoragesystem/internal/service"
|
||||
"filestoragesystem/internal/utils"
|
||||
)
|
||||
|
||||
// SiteStatus 站点状态中间件
|
||||
// 站点关闭(维护模式)时:放行状态接口/登录接口/管理员请求,其余返回503
|
||||
func SiteStatus(adminSvc *service.AdminService) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
if adminSvc.IsSiteEnabled() {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
||||
// 放行的路径
|
||||
path := c.Request.URL.Path
|
||||
if path == "/api/v1/status" || path == "/api/v1/auth/login" {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
||||
// 已认证的管理员放行(需在Auth之后挂载)
|
||||
if IsAdmin(c) {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
|
||||
msg := "系统维护中,请稍后再访问"
|
||||
if m, ok := adminSvc.SiteStatus()["maintenance_msg"].(string); ok && m != "" {
|
||||
msg = m
|
||||
}
|
||||
c.AbortWithStatusJSON(http.StatusServiceUnavailable, utils.Response{
|
||||
Code: http.StatusServiceUnavailable, Message: msg,
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user