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