mirror of https://github.com/bjdgyc/anylink.git
修复用户组停用时的登录问题 + 优化IUserAuth的checkUser参数
This commit is contained in:
parent
f46a30488a
commit
8ede613488
|
@ -66,13 +66,13 @@ func SetUser(v *User) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证用户登陆信息
|
// 验证用户登录信息
|
||||||
func CheckUser(name, pwd, group string) error {
|
func CheckUser(name, pwd, group string) error {
|
||||||
// 获取登入的group数据
|
// 获取登入的group数据
|
||||||
groupData := &Group{}
|
groupData := &Group{}
|
||||||
err := One("Name", group, groupData)
|
err := One("Name", group, groupData)
|
||||||
if err != nil {
|
if err != nil || groupData.Status != 1 {
|
||||||
return fmt.Errorf("%s %s", name, "No用户组")
|
return fmt.Errorf("%s - %s", name, "用户组错误")
|
||||||
}
|
}
|
||||||
// 初始化Auth
|
// 初始化Auth
|
||||||
if len(groupData.Auth) == 0 {
|
if len(groupData.Auth) == 0 {
|
||||||
|
@ -89,10 +89,10 @@ func CheckUser(name, pwd, group string) error {
|
||||||
return fmt.Errorf("%s %s", "未知的认证方式: ", authType)
|
return fmt.Errorf("%s %s", "未知的认证方式: ", authType)
|
||||||
}
|
}
|
||||||
auth := makeInstance(authType).(IUserAuth)
|
auth := makeInstance(authType).(IUserAuth)
|
||||||
return auth.checkUser(name, pwd, groupData.Auth)
|
return auth.checkUser(name, pwd, groupData)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证本地用户登陆信息
|
// 验证本地用户登录信息
|
||||||
func checkLocalUser(name, pwd, group string) error {
|
func checkLocalUser(name, pwd, group string) error {
|
||||||
// TODO 严重问题
|
// TODO 严重问题
|
||||||
// return nil
|
// return nil
|
||||||
|
@ -110,12 +110,6 @@ func checkLocalUser(name, pwd, group string) error {
|
||||||
if !utils.InArrStr(v.Groups, group) {
|
if !utils.InArrStr(v.Groups, group) {
|
||||||
return fmt.Errorf("%s %s", name, "用户组错误")
|
return fmt.Errorf("%s %s", name, "用户组错误")
|
||||||
}
|
}
|
||||||
groupData := &Group{}
|
|
||||||
err = One("Name", group, groupData)
|
|
||||||
if err != nil || groupData.Status != 1 {
|
|
||||||
return fmt.Errorf("%s - %s", name, "用户组错误")
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断otp信息
|
// 判断otp信息
|
||||||
pinCode := pwd
|
pinCode := pwd
|
||||||
if !v.DisableOtp {
|
if !v.DisableOtp {
|
||||||
|
|
|
@ -9,7 +9,7 @@ var authRegistry = make(map[string]reflect.Type)
|
||||||
|
|
||||||
type IUserAuth interface {
|
type IUserAuth interface {
|
||||||
checkData(authData map[string]interface{}) error
|
checkData(authData map[string]interface{}) error
|
||||||
checkUser(name string, pwd string, authData map[string]interface{}) error
|
checkUser(name, pwd string, g *Group) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeInstance(name string) interface{} {
|
func makeInstance(name string) interface{} {
|
||||||
|
|
|
@ -38,16 +38,16 @@ func (auth AuthRadius) checkData(authData map[string]interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (auth AuthRadius) checkUser(name string, pwd string, authData map[string]interface{}) error {
|
func (auth AuthRadius) checkUser(name, pwd string, g *Group) error {
|
||||||
pl := len(pwd)
|
pl := len(pwd)
|
||||||
if name == "" || pl < 1 {
|
if name == "" || pl < 1 {
|
||||||
return fmt.Errorf("%s %s", name, "密码错误")
|
return fmt.Errorf("%s %s", name, "密码错误")
|
||||||
}
|
}
|
||||||
authType := authData["type"].(string)
|
authType := g.Auth["type"].(string)
|
||||||
if _, ok := authData[authType]; !ok {
|
if _, ok := g.Auth[authType]; !ok {
|
||||||
return fmt.Errorf("%s %s", name, "Radius的radius值不存在")
|
return fmt.Errorf("%s %s", name, "Radius的radius值不存在")
|
||||||
}
|
}
|
||||||
bodyBytes, err := json.Marshal(authData[authType])
|
bodyBytes, err := json.Marshal(g.Auth[authType])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s %s", name, "Radius Marshal出现错误")
|
return fmt.Errorf("%s %s", name, "Radius Marshal出现错误")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue