更新
This commit is contained in:
1 parent
5718a00e31
commit
1850ac640e
226 files changed
+37772
-12071
No files matched your search
@@ -2,7 +2,6 @@ package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"sort"
|
||||
"strconv"
|
||||
@@ -10,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"server/models"
|
||||
"server/pkg/identity"
|
||||
"server/pkg/jwtutil"
|
||||
|
||||
"github.com/beego/beego/v2/client/orm"
|
||||
@@ -35,34 +35,17 @@ func (c *BackendArticleCategoryController) cmsClaims() (*jwtutil.Claims, error)
|
||||
}
|
||||
|
||||
func cmsBackendClaims(c *beego.Controller) (*jwtutil.Claims, error) {
|
||||
auth := c.Ctx.Request.Header.Get("Authorization")
|
||||
if auth == "" {
|
||||
return nil, fmt.Errorf("未登录")
|
||||
}
|
||||
parts := strings.SplitN(auth, " ", 2)
|
||||
if len(parts) != 2 || parts[0] != "Bearer" {
|
||||
return nil, fmt.Errorf("认证信息格式错误")
|
||||
}
|
||||
claims, err := jwtutil.ParseToken(parts[1])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("无效的token")
|
||||
}
|
||||
if claims.UserType != "backend" {
|
||||
return nil, fmt.Errorf("无权访问")
|
||||
}
|
||||
return claims, nil
|
||||
return identity.Claims(c.Ctx.Request.Header.Get("Authorization"), identity.EndBackend)
|
||||
}
|
||||
|
||||
// cmsEffectiveTid 取当前 CMS 请求的租户 ID。
|
||||
//
|
||||
// 只认令牌 claims,不认 ?tid= 与 X-Tenant-Id:这两个入参此前会覆盖登录态,
|
||||
// 任何 backend 账号改一下参数就能读写别的企业站点内容。
|
||||
// 前端仍会带自己的 tid(同值),忽略即可,不影响正常调用。
|
||||
// 公开门户的租户解析走 cmsPortalTid(无登录态,按域名/参数定位站点),不在此列。
|
||||
func cmsEffectiveTid(c *beego.Controller, claims *jwtutil.Claims) uint64 {
|
||||
_ = c.ParseForm(1 << 20)
|
||||
if tid, err := c.GetUint64("tid"); err == nil && tid > 0 {
|
||||
return tid
|
||||
}
|
||||
if h := strings.TrimSpace(c.Ctx.Request.Header.Get("X-Tenant-Id")); h != "" {
|
||||
if v, e := strconv.ParseUint(h, 10, 64); e == nil {
|
||||
return v
|
||||
}
|
||||
}
|
||||
_ = c.ParseForm(1 << 20) // 部分调用方依赖这里触发表单解析
|
||||
if claims != nil && claims.TenantId > 0 {
|
||||
return uint64(claims.TenantId)
|
||||
}
|
||||
@@ -171,7 +154,8 @@ func cmsCategoryToMap(row models.CmsArticleCategory) map[string]interface{} {
|
||||
func (c *BackendArticleController) ContentStats() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -250,7 +234,8 @@ func (c *BackendArticleController) ContentStats() {
|
||||
func (c *BackendArticleController) List() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -334,7 +319,8 @@ func (c *BackendArticleController) ListAll() {
|
||||
func (c *BackendArticleController) Detail() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -390,7 +376,8 @@ type cmsArticlePayload struct {
|
||||
func (c *BackendArticleController) Create() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -459,7 +446,8 @@ func (c *BackendArticleController) Create() {
|
||||
func (c *BackendArticleController) Update() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -515,7 +503,8 @@ func (c *BackendArticleController) Update() {
|
||||
func (c *BackendArticleController) Delete() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -547,7 +536,8 @@ func (c *BackendArticleController) Delete() {
|
||||
func (c *BackendArticleController) setArticleFlag(field string, value int8) {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -580,7 +570,8 @@ func (c *BackendArticleController) setArticleFlag(field string, value int8) {
|
||||
func (c *BackendArticleController) Publish() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -631,7 +622,8 @@ func (c *BackendArticleController) Publish() {
|
||||
func (c *BackendArticleController) Unpublish() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -669,7 +661,8 @@ func (c *BackendArticleController) Untop() { c.setArticleFlag("top", 0) }
|
||||
func (c *BackendArticleCategoryController) List() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -725,7 +718,8 @@ func (c *BackendArticleCategoryController) List() {
|
||||
func (c *BackendArticleCategoryController) ListAll() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -763,7 +757,8 @@ func (c *BackendArticleCategoryController) ListAll() {
|
||||
func (c *BackendArticleCategoryController) Detail() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -806,7 +801,8 @@ type cmsCategoryPayload struct {
|
||||
func (c *BackendArticleCategoryController) Create() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -857,7 +853,8 @@ func (c *BackendArticleCategoryController) Create() {
|
||||
func (c *BackendArticleCategoryController) Update() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -923,7 +920,8 @@ func (c *BackendArticleCategoryController) Update() {
|
||||
func (c *BackendArticleCategoryController) Delete() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
@@ -989,7 +987,8 @@ func (c *BackendArticleCategoryController) Delete() {
|
||||
func (c *BackendArticleCategoryController) UpdateStatus() {
|
||||
claims, err := c.cmsClaims()
|
||||
if err != nil {
|
||||
c.cmsJSONErr(401, 401, err.Error())
|
||||
code := identity.Status(err)
|
||||
c.cmsJSONErr(code, code, err.Error())
|
||||
return
|
||||
}
|
||||
tid := cmsEffectiveTid(&c.Controller, claims)
|
||||
|
||||
Reference in new issue
Block a user