diff --git a/lib/dborm/dborm.go b/lib/dborm/dborm.go index 1f782c0d..1bd598c4 100644 --- a/lib/dborm/dborm.go +++ b/lib/dborm/dborm.go @@ -11,8 +11,6 @@ import ( "strings" "be.ems/lib/log" - "be.ems/lib/oauth" - "be.ems/src/modules/system/model" _ "github.com/go-sql-driver/mysql" "xorm.io/xorm" @@ -29,7 +27,7 @@ type Menu struct { Title string `json:"title"` Icon string `json:"icon"` Href string `json:"href"` - ParentId int `json:"parent_id` + ParentId int `json:"parent_id"` Remark int `json:"remark"` } @@ -149,7 +147,7 @@ func ConstructInsertSQL(tableName string, insertData interface{}) (string, []str for c, v := range r.(map[string]interface{}) { log.Tracef("c: %v v: %v", c, v) if cl == "" { - cl = fmt.Sprintf("%s", c) + cl = fmt.Sprint(c) } else { cl = fmt.Sprintf("%s, %s", cl, c) } @@ -510,33 +508,6 @@ const ( MeasureTaskStatusDeleted = "Deleted" ) -type MTask struct { - Id int `json:"id" xorm:"pk 'id' autoincr"` - - NeSet struct { - NEs []string `json:"nes"` - } `json:"neSet" xorm:"ne_set"` - KpiSet struct { - Code string `json:"Code"` - KPIs []string `json:"KPIs` - } `json:"kpiSet" xorm:"kpi_set"` - StartTime string `json:"startTime" xorm:"start_time"` - EndTime string `json:"endTime" xorm:"end_time"` - Periods []struct { - Start string `json:"start"` - End string `json:"end"` - } `json:"Periods" xorm:"periods` - Schedule struct { - Type string `json:"type"` - Days []int `json:"days"` - } `json:"schedule" xorm:"schedule"` - GranulOption string `json:"granulOption" xorm:"granul_option"` - Status string `json:"status" xorm:"status"` - CreateTime string `json:"createTime" xorm:"create_time"` - UpdateTime string `json:"updateTime" xorm:"update_time"` - DeleteTime string `json:"deleteTime xorm:"delete_time"` -} - type ScheduleJ struct { Type string `json:"Type"` Days []int `json:"Days"` @@ -665,40 +636,6 @@ func XormUpdateTableByWhere(whereCondition string, tableName string, tbInfo inte return affected, nil } -type User struct { - Id int `json:"id" xorm:"pk 'id' autoincr"` - AccountId string `json:"accountId"` - Name string `json:"name" xorm:"name"` - Sn string `json:"sn"` - Gender string `json:"gender"` - Description string `json:"description"` - TelephoneNumber string `json:"telephoneNumber" xorm:"telephone_number"` - Mobile string `json:"mobile"` - Email string `json:"email" xorm:"email"` - StartTime string `json:"startTime" xorm:"start_time"` - EndTime string `json:"endTime" xorm:"end_time"` - IdCardNumber string `json:"idCardNumber"` - EmployeeNumber string `json:"employeeNumber"` - Organize string `json:"organize"` - EmployeeType string `json:"employeeType"` - SupporterCorpName string `json:"supporterCorpName"` - RealName string `json:"realName" xorm:"real_name"` - Password string `json:"password" xorm:"password"` - PasswordSha512 string `json:"passwordSha512"` - ChangePasswordFlag int `json:"changePasswordFlag"` - PasswordExpiration string `json:"passwordExpiration"` - Status string `json:"status"` - UserExpiration string `json:"userExpiration"` - GroupName string `json:"groupId" xorm:"group_name"` - Profile string `json:"profile" xorm:"profile"` - Phone string `json:"phone" xorm:"phone"` - CreateTime string `json:"createTime" xorm:"create_time"` - UpdateTime string `json:"updateTime" xorm:"update_time"` - - // 角色对象组 - Roles []model.SysRole `json:"roles" xorm:"-"` -} - // 记录密码登录错误次数 func pwdErrCountAdd(accountId, profileStr string, reset bool) int { if profileStr == "" { @@ -803,117 +740,6 @@ func pwdErrCountAdd(accountId, profileStr string, reset bool) int { return count } -func XormCheckLoginUser(name, password, cryptArgo string) (bool, *User, error) { - log.Info("XormCheckLoginUser processing... ") - - user := new(User) - // has, err := xEngine.Table("user").Where("name='%s' and password=PASSWORD('%s')", name, password).Get(user) - switch cryptArgo { - case "mysql": - has, err := xEngine.SQL("select * from user where account_id=? and password=PASSWORD(?)", name, password).Exist() - if err != nil || has == false { - log.Error("Failed to check user from database:", err) - - return false, nil, err - } - case "md5": - has, err := xEngine. - SQL("select * from user where account_id=? and password=MD5(?)", name, password).Exist() - if err != nil || has == false { - log.Error("Failed to check user from database:", err) - return false, nil, err - } - case "bcrypt": - has, err := xEngine.Table("user").Where("account_id=?", name).Get(user) - if err != nil || !has { - log.Error("Failed to get user from database:", err) - return false, nil, err - } - if oauth.BcryptCompare(user.Password, password) != nil { - err := errors.New("Incorrect user name or password") - log.Error(err) - // 记录错误 - errCoutn := pwdErrCountAdd(user.AccountId, user.Profile, false) - if errCoutn > 3 { - // 登录失败次数过多,请30分钟后重试 - return false, nil, errors.New("Login failed too many times, please retry after 30 minutes") - } - return false, nil, err - } - // 重置错误次数 - pwdErrCountAdd(user.AccountId, user.Profile, true) - default: - errMsg := "Incorrect crypt algoritmo" - log.Error("crypt:%s", errMsg) - return false, nil, errors.New(errMsg) - } - - // enum('Active','Closed','Locked','Pending') - errMsg := "" - switch user.Status { - case "Closed": - errMsg = "Account disabled" // 账户已禁用 - case "Locked": - errMsg = "Account locked" // 账户已锁定 - case "Pending": - // errMsg = "账户已挂起" - _, err := xEngine.Exec("UPDATE user SET status = 'Active' WHERE account_id = ?", user.AccountId) - if err != nil { - return false, nil, err - } - } - if errMsg != "" { - log.Error("user Status:%s", errMsg) - return false, nil, errors.New(errMsg) - } - - // 密码到期时间 - if user.PasswordExpiration != "" { - arr := strings.Split(user.PasswordExpiration, " ") - if len(arr) > 0 { - t, err := time.Parse("2006-01-02", arr[0]) - if err != nil { - return false, nil, err - } - if t.Before(time.Now()) { - errMsg := "Password expiration time" // 密码到期时间 - // 读取配置信息 - result, err := XormGetConfig("Security", "pwdStrong") - if err != nil { - return false, nil, err - } - data := make(map[string]any) - err = json.Unmarshal([]byte(result["value_json"].(string)), &data) - if err != nil { - log.Error("json Unmarshal:%s", errMsg) - return false, nil, err - } - errMsg = data["outTimeMsg"].(string) - log.Error("PasswordExpiration:%s", errMsg) - return false, nil, errors.New(errMsg) - } - } - } - - // 用户到期时间 - if user.UserExpiration != "" { - arr := strings.Split(user.UserExpiration, " ") - if len(arr) > 0 { - t, err := time.Parse("2006-01-02", arr[0]) - if err != nil { - return false, nil, err - } - if t.Before(time.Now()) { - errMsg := "User account expiration" // 用户账户到期 - log.Error("UserExpiration:%s", errMsg) - return false, nil, errors.New(errMsg) - } - } - } - - return true, user, nil -} - func XormIsExistUser(accid string) (bool, error) { log.Info("XormIsExistUser processing... ") @@ -1000,22 +826,22 @@ func XormInsertSession(name, host, token string, expires uint32, sessionFlag str if err != nil { return affected, err } - if exist == true { - affected, err = xSession.Table("session").Where("account_id = ? and host = ?", name, host).Update(session) + if exist { + affected, _ = xSession.Table("session").Where("account_id = ? and host = ?", name, host).Update(session) } else { - affected, err = xSession.InsertOne(session) + affected, _ = xSession.InsertOne(session) } } else { // single session for a user exist, err := xEngine.Table("session").Where("status = 'online' and account_id = ?", name).Exist() if err != nil { return affected, err } - if exist == true { + if exist { // todo... err := errors.New("user is logged in") return -1, err } else { - affected, err = xSession.InsertOne(session) + affected, _ = xSession.InsertOne(session) } } xSession.Commit() diff --git a/lib/routes/routes.go b/lib/routes/routes.go index a3143d02..f85af98a 100644 --- a/lib/routes/routes.go +++ b/lib/routes/routes.go @@ -287,12 +287,6 @@ func init() { Register("POST", dbrest.UriDbStop, dbrest.DbStop, nil) Register("POST", dbrest.CustomUriDbStop, dbrest.DbStop, nil) - // 系统备份 - Register("POST", dbrest.UriDbBackup, dbrest.DbBackup, nil) - Register("POST", dbrest.CustomUriDbBackup, dbrest.DbBackup, nil) - Register("POST", dbrest.UriConfBackup, dbrest.ConfBackup, nil) - Register("POST", dbrest.CustomUriConfBackup, dbrest.ConfBackup, nil) - // 日志表备份 Register("POST", lm.ExtBackupDataUri, lm.ExtDatabaseBackupData, nil) Register("POST", lm.CustomExtBackupDataUri, lm.ExtDatabaseBackupData, nil) diff --git a/lib/services/file.go b/lib/services/file.go index 439f814a..4243cda6 100644 --- a/lib/services/file.go +++ b/lib/services/file.go @@ -329,7 +329,7 @@ func uploadSizeLimit(buf *bytes.Buffer, part *multipart.Part, maxLimit int64, li } maxLimit -= n if maxLimit < 0 { - return fmt.Errorf(limitError) + return fmt.Errorf("%s", limitError) } return nil } diff --git a/lib/services/services.go b/lib/services/services.go index 8b55bf41..22b128ce 100644 --- a/lib/services/services.go +++ b/lib/services/services.go @@ -16,11 +16,11 @@ import ( "strconv" "strings" + "be.ems/lib/config" "be.ems/lib/dborm" "be.ems/lib/global" "be.ems/lib/log" "be.ems/lib/oauth" - "be.ems/restagent/config" "github.com/gorilla/mux" ) @@ -560,23 +560,10 @@ func CheckExtValidRequest(w http.ResponseWriter, r *http.Request) (string, error return token, nil } -func ResponseStatusOK200Login(w http.ResponseWriter, token string, user *dborm.User) { +func ResponseStatusOK200Login(w http.ResponseWriter, token string) { var oAuthResponse SucceedOAuthResponse oAuthResponse.AccessToken = token oAuthResponse.Expires = strconv.Itoa((int)(config.GetExpiresFromConfig())) - oAuthResponse.ChangePasswordFlag = user.ChangePasswordFlag - oAuthResponse.GroupName = user.GroupName - ResponseWithJson(w, http.StatusOK, oAuthResponse) -} - -func ResponseStatusOK200LoginWhitRP(w http.ResponseWriter, token string, user *dborm.User, roles, perms []string) { - var oAuthResponse SucceedOAuthResponse - oAuthResponse.AccessToken = token - oAuthResponse.Expires = strconv.Itoa((int)(config.GetExpiresFromConfig())) - oAuthResponse.ChangePasswordFlag = user.ChangePasswordFlag - oAuthResponse.GroupName = user.GroupName - oAuthResponse.Roles = roles - oAuthResponse.Perms = perms ResponseWithJson(w, http.StatusOK, oAuthResponse) }