diff --git a/server/dbdata/user.go b/server/dbdata/user.go index 6add617..7834013 100644 --- a/server/dbdata/user.go +++ b/server/dbdata/user.go @@ -66,13 +66,13 @@ func SetUser(v *User) error { return err } -// 验证用户登陆信息 +// 验证用户登录信息 func CheckUser(name, pwd, group string) error { // 获取登入的group数据 groupData := &Group{} err := One("Name", group, groupData) - if err != nil { - return fmt.Errorf("%s %s", name, "No用户组") + if err != nil || groupData.Status != 1 { + return fmt.Errorf("%s - %s", name, "用户组错误") } // 初始化Auth if len(groupData.Auth) == 0 { @@ -89,10 +89,10 @@ func CheckUser(name, pwd, group string) error { return fmt.Errorf("%s %s", "未知的认证方式: ", authType) } auth := makeInstance(authType).(IUserAuth) - return auth.checkUser(name, pwd, groupData.Auth) + return auth.checkUser(name, pwd, groupData) } -// 验证本地用户登陆信息 +// 验证本地用户登录信息 func checkLocalUser(name, pwd, group string) error { // TODO 严重问题 // return nil @@ -110,12 +110,6 @@ func checkLocalUser(name, pwd, group string) error { if !utils.InArrStr(v.Groups, group) { 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信息 pinCode := pwd if !v.DisableOtp { diff --git a/server/dbdata/userauth.go b/server/dbdata/userauth.go index 190e863..fbc3eb5 100644 --- a/server/dbdata/userauth.go +++ b/server/dbdata/userauth.go @@ -9,7 +9,7 @@ var authRegistry = make(map[string]reflect.Type) type IUserAuth interface { 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{} { diff --git a/server/dbdata/userauth_radius.go b/server/dbdata/userauth_radius.go index ef6691e..4d15eb1 100644 --- a/server/dbdata/userauth_radius.go +++ b/server/dbdata/userauth_radius.go @@ -38,16 +38,16 @@ func (auth AuthRadius) checkData(authData map[string]interface{}) error { 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) if name == "" || pl < 1 { return fmt.Errorf("%s %s", name, "密码错误") } - authType := authData["type"].(string) - if _, ok := authData[authType]; !ok { + authType := g.Auth["type"].(string) + if _, ok := g.Auth[authType]; !ok { return fmt.Errorf("%s %s", name, "Radius的radius值不存在") } - bodyBytes, err := json.Marshal(authData[authType]) + bodyBytes, err := json.Marshal(g.Auth[authType]) if err != nil { return fmt.Errorf("%s %s", name, "Radius Marshal出现错误") }