新增本地用户设置过期时间

This commit is contained in:
wsczx
2022-10-16 02:47:32 +08:00
parent 7b83154245
commit a533ee0a78
8 changed files with 56 additions and 4 deletions

View File

@@ -3,6 +3,7 @@ package dbdata
import (
"errors"
"reflect"
"time"
"xorm.io/xorm"
)
@@ -61,6 +62,19 @@ func One(fieldName string, value interface{}, data interface{}) error {
return nil
}
// 用户过期时间到达后,更新用户状态,并返回一个状态为过期的用户切片
func CheckUserlimittime() []interface{} {
var user map[int64]User
var limitUser []interface{}
u := &User{Status: 2}
xdb.Where("limittime < ?", time.Now()).And("status = ?", 1).Update(u)
xdb.Where("status= ?", 2).Find(u)
for _, v := range user {
limitUser = append(limitUser, v.Username)
}
return limitUser
}
func CountAll(data interface{}) int {
n, _ := xdb.Count(data)
return int(n)

View File

@@ -30,6 +30,7 @@ type User struct {
Email string `json:"email" xorm:"varchar(255)"`
// Password string `json:"password"`
PinCode string `json:"pin_code" xorm:"varchar(32)"`
LimitTime time.Time `json:"limittime" xorm:"Datetime limittime"`
OtpSecret string `json:"otp_secret" xorm:"varchar(255)"`
DisableOtp bool `json:"disable_otp" xorm:"Bool"` // 禁用otp
Groups []string `json:"groups" xorm:"Text"`

View File

@@ -104,7 +104,12 @@ func checkLocalUser(name, pwd, group string) error {
v := &User{}
err := One("Username", name, v)
if err != nil || v.Status != 1 {
return fmt.Errorf("%s %s", name, "用户名错误")
switch v.Status {
case 0:
return fmt.Errorf("%s %s", name, "用户不存在或用户已停用")
case 2:
return fmt.Errorf("%s %s", name, "用户已过期")
}
}
// 判断用户组信息
if !utils.InArrStr(v.Groups, group) {