mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
Merge remote-tracking branch 'origin/v2.3.0release' into v2.3.0release
This commit is contained in:
commit
44af6740c7
@ -5,9 +5,11 @@ import (
|
||||
imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
|
||||
"Open_IM/pkg/common/log"
|
||||
"Open_IM/pkg/utils"
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type CheckLoginLimitReq struct {
|
||||
@ -22,18 +24,20 @@ func CheckLoginLimit(c *gin.Context) {
|
||||
req := CheckLoginLimitReq{}
|
||||
if err := c.BindJSON(&req); err != nil {
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), err.Error())
|
||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.ErrArgs, "errMsg": err.Error()})
|
||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
|
||||
return
|
||||
}
|
||||
ip := c.Request.Header.Get("X-Forward-For")
|
||||
if ip == "" {
|
||||
ip = c.ClientIP()
|
||||
}
|
||||
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "IP: ", ip)
|
||||
user, err := imdb.GetUserIPLimit(req.UserID)
|
||||
if err != nil {
|
||||
if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) {
|
||||
errMsg := req.OperationID + " imdb.GetUserByUserID failed " + err.Error() + req.UserID
|
||||
log.NewError(req.OperationID, errMsg)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.ErrDB.ErrCode, "errMsg": errMsg})
|
||||
return
|
||||
}
|
||||
|
||||
if err := imdb.UpdateIpReocord(req.UserID, ip); err != nil {
|
||||
|
@ -57,6 +57,7 @@ func SetPassword(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
if Limited {
|
||||
log.NewInfo(params.OperationID, utils.GetSelfFuncName(), "is limited", ip, "params:", params)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.RegisterLimit, "errMsg": "limited"})
|
||||
return
|
||||
}
|
||||
|
@ -189,9 +189,9 @@ type UserIpRecord struct {
|
||||
LastLoginTime time.Time `gorm:"column:last_login_time"`
|
||||
LastLoginIp string `gorm:"column:last_login_ip;size:15"`
|
||||
LoginTimes int32 `gorm:"column:login_times"`
|
||||
LoginLimit int32 `gorm:"column:login_limit"`
|
||||
}
|
||||
|
||||
// ip limit login
|
||||
type IpLimit struct {
|
||||
Ip string `gorm:"column:ip;primary_key;size:15"`
|
||||
LimitRegister int32 `gorm:"column:limit_register;size:1"`
|
||||
@ -200,6 +200,7 @@ type IpLimit struct {
|
||||
LimitTime time.Time `gorm:"column:limit_time"`
|
||||
}
|
||||
|
||||
// ip login
|
||||
type UserIpLimit struct {
|
||||
UserID string `gorm:"column:user_id;primary_key;size:64"`
|
||||
Ip string `gorm:"column:ip;primary_key;size:15"`
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/db"
|
||||
"Open_IM/pkg/utils"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
@ -50,11 +51,6 @@ func UserRegister(user db.User) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func DeleteUser(userID string) (i int64) {
|
||||
i = db.DB.MysqlDB.DefaultGormDB().Table("users").Where("user_id=?", userID).Delete(db.User{}).RowsAffected
|
||||
return i
|
||||
}
|
||||
|
||||
func GetAllUser() ([]db.User, error) {
|
||||
var userList []db.User
|
||||
err := db.DB.MysqlDB.DefaultGormDB().Table("users").Find(&userList).Error
|
||||
@ -165,15 +161,12 @@ func BlockUser(userID, endDisableTime string) error {
|
||||
return err
|
||||
}
|
||||
if end.Before(time.Now()) {
|
||||
return constant.ErrDB
|
||||
return errors.New("endDisableTime is before now")
|
||||
}
|
||||
var blockUser db.BlackList
|
||||
db.DB.MysqlDB.DefaultGormDB().Table("black_lists").Where("uid=?", userID).First(&blockUser)
|
||||
if blockUser.UserId != "" {
|
||||
db.DB.MysqlDB.DefaultGormDB().Model(&blockUser).Where("uid=?", blockUser.UserId).Update("end_disable_time", end)
|
||||
// if user.LoginLimit != 2 {
|
||||
// db.DB.MysqlDB.DefaultGormDB().Table("users").Where("user_id=?", blockUser.UserId).Update("login_limit", 2)
|
||||
// }
|
||||
return nil
|
||||
}
|
||||
blockUser = db.BlackList{
|
||||
@ -181,21 +174,12 @@ func BlockUser(userID, endDisableTime string) error {
|
||||
BeginDisableTime: time.Now(),
|
||||
EndDisableTime: end,
|
||||
}
|
||||
result := db.DB.MysqlDB.DefaultGormDB().Create(&blockUser)
|
||||
if result.Error == nil {
|
||||
// if user.LoginLimit != 2 {
|
||||
// db.DB.MysqlDB.DefaultGormDB().Table("users").Where("user_id=?", blockUser.UserId).Update("login_limit", 2)
|
||||
// }
|
||||
}
|
||||
return result.Error
|
||||
err = db.DB.MysqlDB.DefaultGormDB().Create(&blockUser).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func UnBlockUser(userID string) error {
|
||||
err := db.DB.MysqlDB.DefaultGormDB().Where("uid=?", userID).Delete(&db.BlackList{}).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return db.DB.MysqlDB.DefaultGormDB().Table("users").Where("user_id=?", userID).Update("login_limit", 0).Error
|
||||
return db.DB.MysqlDB.DefaultGormDB().Where("uid=?", userID).Delete(&db.BlackList{}).Error
|
||||
}
|
||||
|
||||
type BlockUserInfo struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user