123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package auth
- import (
- "strconv"
- "time"
- xsql "go-common/library/database/sql"
- "go-common/library/ecode"
- "go-common/library/log"
- bm "go-common/library/net/http/blademaster"
- xauth "go-common/library/net/http/blademaster/middleware/auth"
- )
- const (
- _queryBannedUser = "select `expire_time`,`forbid_status` from `forbid_user` where `mid` = ?;"
- )
- // BannedAuth .
- type BannedAuth struct {
- *xauth.Auth
- db *xsql.DB
- }
- // NewBannedAuth .
- func NewBannedAuth(authConf *xauth.Config, dbConf *xsql.Config) *BannedAuth {
- return &BannedAuth{
- Auth: xauth.New(authConf),
- db: xsql.NewMySQL(dbConf),
- }
- }
- // User .
- func (ba *BannedAuth) User(ctx *bm.Context) {
- ba.Auth.User(ctx)
- // 只过滤写接口
- if ctx.Request.Method != "POST" {
- return
- }
- // 获取MID
- var mid int64
- tmp, _ := ctx.Get("mid")
- switch tmp.(type) {
- case int64:
- mid = tmp.(int64)
- }
- if mid == 0 {
- return
- }
- // 过滤封禁用户
- var expired, status int
- row := ba.db.QueryRow(ctx, _queryBannedUser, mid)
- row.Scan(&expired, &status)
- if status == 1 && expired > 0 && expired > int(time.Now().Unix()) {
- // 封禁用户
- log.Infov(ctx, log.KV("log", "user banned "+strconv.Itoa(int(mid))), log.KV("err", ecode.BBQUserBanned))
- ctx.Error = ecode.BBQUserBanned
- ctx.JSON(nil, ecode.BBQUserBanned)
- ctx.Abort()
- }
- }
|