forked from all_user/stat_center
- 新增 advitise v2: info/location/bind/click-stat/day-click-stat 模型与 对应的 service、api、router、proto 定义 - models/index.go 注册 5 个新模型的索引初始化 - 鉴权白名单: /rsdownload/ 改为 /download/,放行 advitise v2 的 get/click 接口 - statg/config: proxyUrl 增加 fileRes1 - common/genId: lid 生成逻辑补充 - 新增 91fans / huangguo 的 mobileconfig 描述文件 - 新增 deploy/nginx/cpcdownload.mfcg.me.conf 网关配置 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
146 lines
3.8 KiB
Go
146 lines
3.8 KiB
Go
package auth
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"stat/common/enum/consts"
|
|
"stat/common/utils"
|
|
"stat/middleware/define"
|
|
"stat/models/adminMod"
|
|
"stat/service/agentSer"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// gin 验证中间件
|
|
|
|
var (
|
|
// 白名单,不需要验证token的api
|
|
whiteList = []string{
|
|
"/swagger/*",
|
|
"/swagger",
|
|
"/favicon.ico",
|
|
"/api/stat/admin/login",
|
|
"/api/stat/admin/verify",
|
|
"/api/stat/agent/imgVerify",
|
|
"/api/stat/agent/login",
|
|
"/api/stat/agent/verify",
|
|
"/api/stat/billserver/callback",
|
|
"/api/stat/version/bottonclick",
|
|
"/api/stat/version/bottonlist",
|
|
"/api/stat/version/crossbottonclick",
|
|
"/api/stat/share/list",
|
|
"/api/stat/ads/get",
|
|
"/api/stat/ads/click",
|
|
"/api/stat/commodity/info",
|
|
"/api/stat/commodity/rechargeType",
|
|
"/api/stat/commodity/buy",
|
|
"/api/stat/commodity/order",
|
|
"/api/stat/version/app",
|
|
"/api/stat/userInvite/userlist",
|
|
"/api/stat/userInvite/incomelist",
|
|
"/api/stat/userInvite/district",
|
|
"/api/stat/user/districtcode",
|
|
"/api/stat/callback/rchg/bill",
|
|
"/api/stat/blocDailyStatTotal/list",
|
|
"/api/stat/adminbloc/login",
|
|
"/api/stat/channelCodeStat/list",
|
|
"/api/stat/loufeng/sync",
|
|
"/api/stat/districtMinuteStat/list",
|
|
"/api/stat/loufeng/uploadImg",
|
|
"/api/stat/loufeng/complaint", //楼凤投诉
|
|
"/api/stat/model/sync", //嫩模同步
|
|
"/api/stat/novel/sync",
|
|
"/api/stat/novel/audio/sync",
|
|
"/api/stat/file/upload",
|
|
"/api/stat/model/syncBroker",
|
|
"/api/stat/loufeng/complaint",
|
|
"/api/stat/loufeng/queryComplaint",
|
|
"/api/stat/openinstall/auth",
|
|
"/api/stat/openinstall/total",
|
|
"/api/stat/openinstall/info",
|
|
"/api/stat/openinstall/growth",
|
|
"/api/stat/openinstall/allstat",
|
|
"/api/stat/openinstall/active",
|
|
"/api/stat/activity/h5/info",
|
|
"/api/stat/activity/h5/giftinfo",
|
|
"/api/stat/activity/h5/draw",
|
|
"/api/stat/landPageConfig/getByType",
|
|
"/api/stat/media/m3u8",
|
|
"/api/stat/media/enkey",
|
|
"/api/stat/version/h5/config",
|
|
"/api/stat/version/channel/newLink",
|
|
"/api/stat/inner/botStatList",
|
|
"/api/stat/inner/appList",
|
|
"/api/stat/inner/appDownload",
|
|
"/api/stat/inner/botMonthStat",
|
|
"/api/stat/inner/sendTgMessage",
|
|
"/api/stat/activity/visit",
|
|
"/api/stat/landPage/summary/downTotal/list",
|
|
"/api/stat/web/apps/get",
|
|
"/api/stat/web/apps/click",
|
|
"/api/stat/inner/recharge/list",
|
|
"/api/stat/inner/rechargebotcmd/list",
|
|
"/api/stat/daily-stat/jtspV2",
|
|
"/api/stat/daily-stat/hour",
|
|
"/api/stat/daily-stat/rank",
|
|
"/api/stat/daily-stat/total",
|
|
"/download/",
|
|
"/api/stat/advitise/v2/get",
|
|
"/api/stat/advitise/v2/click",
|
|
}
|
|
)
|
|
|
|
func Auth(ctx *gin.Context) {
|
|
for _, w := range whiteList {
|
|
if strings.HasPrefix(ctx.Request.URL.Path, w) {
|
|
return
|
|
}
|
|
}
|
|
|
|
authToken := func() (int, error) {
|
|
checkToken := ctx.Request.Header.Get("Authorization")
|
|
if checkToken == "" {
|
|
return http.StatusBadRequest, define.NoToken
|
|
}
|
|
claims, err := define.ParseToken(checkToken)
|
|
if err != nil {
|
|
return http.StatusMovedPermanently, define.RepeatLogin
|
|
}
|
|
|
|
if claims.Type == define.Admin {
|
|
has, err := adminMod.CheckToken(ctx, checkToken)
|
|
if err != nil {
|
|
return http.StatusBadRequest, err
|
|
}
|
|
if !has {
|
|
return http.StatusMovedPermanently, define.RepeatLogin
|
|
}
|
|
} else if claims.Type == define.Channel {
|
|
//fmt.Println("", claims.Type, claims.ShowMagic)
|
|
if claims.ShowMagic > "3" {
|
|
return consts.ShowMagic, nil
|
|
}
|
|
err := agentSer.CheckToken(ctx, claims.Name, checkToken)
|
|
if err != nil {
|
|
return http.StatusBadRequest, err
|
|
}
|
|
}
|
|
ctx.Set(utils.AdminAccountKey, claims.Name)
|
|
ctx.Set(utils.AccountTypeKey, claims.Type)
|
|
|
|
return 0, nil
|
|
}
|
|
|
|
statusCode, err := authToken()
|
|
if err != nil || statusCode != 0 {
|
|
if statusCode == consts.ShowMagic {
|
|
ctx.AbortWithStatusJSON(200, gin.H{})
|
|
} else {
|
|
ctx.AbortWithStatusJSON(statusCode, gin.H{"msg": fmt.Sprintf("%+v", err)})
|
|
}
|
|
|
|
}
|
|
}
|