mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-20 17:57:54 +00:00
Merge branch 'dev'
This commit is contained in:
@@ -326,16 +326,13 @@ func (e *SysUser) SysUserUpdatePwd(c *gin.Context) {
|
||||
// 数据权限检查
|
||||
p := actions.GetPermissionFromContext(c)
|
||||
|
||||
object := &system.SysUser{
|
||||
UserId: p.UserId,
|
||||
Password: pwd.Password,
|
||||
}
|
||||
serviceSysUser := service.SysUser{}
|
||||
serviceSysUser.Orm = db
|
||||
serviceSysUser.Log = log
|
||||
err = serviceSysUser.UpdateSysUser(object, p)
|
||||
err = serviceSysUser.UpdateSysUserPwd(user.GetUserId(c), pwd.OldPassword, pwd.NewPassword, p)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
e.Error(c, http.StatusForbidden, err, "密码修改失败")
|
||||
return
|
||||
}
|
||||
e.OK(c, nil, "密码修改成功")
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
log "github.com/go-admin-team/go-admin-core/logger"
|
||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||
"gorm.io/gorm"
|
||||
@@ -20,7 +19,6 @@ func (u *Login) GetUser(tx *gorm.DB) (user SysUser, role SysRole, err error) {
|
||||
log.Errorf("get user error, %s", err.Error())
|
||||
return
|
||||
}
|
||||
fmt.Println(user.Password, u.Password)
|
||||
_, err = pkg.CompareHashAndPassword(user.Password, u.Password)
|
||||
if err != nil {
|
||||
log.Errorf("user login error, %s", err.Error())
|
||||
|
||||
@@ -113,5 +113,6 @@ func (s *SysUserById) GenerateM() (common.ActiveRecord, error) {
|
||||
|
||||
// PassWord 密码
|
||||
type PassWord struct {
|
||||
Password string `json:"password"`
|
||||
NewPassword string `json:"newPassword" binding:"required"`
|
||||
OldPassword string `json:"oldPassword" binding:"required"`
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package service
|
||||
import (
|
||||
"errors"
|
||||
|
||||
log "github.com/go-admin-team/go-admin-core/logger"
|
||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"go-admin/app/admin/models/system"
|
||||
@@ -115,29 +117,46 @@ func (e *SysUser) RemoveSysUser(d cDto.Control, c common.ActiveRecord, p *action
|
||||
}
|
||||
|
||||
// UpdateSysUserPwd 修改SysUser对象密码
|
||||
func (e *SysUser) UpdateSysUserPwd(c *system.SysUser, p *actions.DataPermission) error {
|
||||
func (e *SysUser) UpdateSysUserPwd(id int, oldPassword, newPassword string, p *actions.DataPermission) error {
|
||||
var err error
|
||||
|
||||
if c.Password == "" {
|
||||
if newPassword == "" {
|
||||
return nil
|
||||
}
|
||||
c := &system.SysUser{}
|
||||
|
||||
err = c.Encrypt()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
db := e.Orm.Model(c).
|
||||
err = e.Orm.Model(c).
|
||||
Scopes(
|
||||
actions.Permission(c.TableName(), p),
|
||||
).Where(c.GetId()).Updates(c)
|
||||
if db.Error != nil {
|
||||
).Where(id).Select("UserId", "Password", "Salt").First(c).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return errors.New("无权更新该数据")
|
||||
}
|
||||
e.Log.Errorf("db error: %s", err)
|
||||
return err
|
||||
}
|
||||
var ok bool
|
||||
ok, err = pkg.CompareHashAndPassword(c.Password, oldPassword)
|
||||
if err != nil {
|
||||
e.Log.Errorf("CompareHashAndPassword error, %s", err.Error())
|
||||
return err
|
||||
}
|
||||
if !ok {
|
||||
err = errors.New("incorrect Password")
|
||||
e.Log.Warnf("user[%d] %s", id, err.Error())
|
||||
return err
|
||||
}
|
||||
c.Password = newPassword
|
||||
db := e.Orm.Model(c).Where(id).Select("Password", "Salt").Updates(c)
|
||||
if err = db.Error; err != nil {
|
||||
e.Log.Errorf("db error: %s", err)
|
||||
return err
|
||||
}
|
||||
if db.RowsAffected == 0 {
|
||||
return errors.New("无权更新该数据")
|
||||
|
||||
err = errors.New("set password error")
|
||||
log.Warnf("db update error")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ require (
|
||||
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5
|
||||
github.com/casbin/casbin/v2 v2.25.1
|
||||
github.com/gin-gonic/gin v1.6.3
|
||||
github.com/go-admin-team/go-admin-core v1.3.1-0.20210324084642-7c164d76fc11
|
||||
github.com/go-admin-team/go-admin-core v1.3.1
|
||||
github.com/google/uuid v1.2.0
|
||||
github.com/mojocn/base64Captcha v1.3.1
|
||||
github.com/mssola/user_agent v0.5.2
|
||||
|
||||
@@ -33,7 +33,7 @@ func (m *{{.ClassName}}Search) Bind(ctx *gin.Context) error {
|
||||
log := api.GetRequestLogger(ctx)
|
||||
err := ctx.ShouldBind(m)
|
||||
if err != nil {
|
||||
log.Debugf("ShouldBind error: %s", err.Error())
|
||||
log.Warnf("ShouldBind error: %s", err.Error())
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -63,12 +63,12 @@ func (s *{{.ClassName}}Control) Bind(ctx *gin.Context) error {
|
||||
log := api.GetRequestLogger(ctx)
|
||||
err := ctx.ShouldBindUri(s)
|
||||
if err != nil {
|
||||
log.Debugf("ShouldBindUri error: %s", err.Error())
|
||||
log.Warnf("ShouldBindUri error: %s", err.Error())
|
||||
return err
|
||||
}
|
||||
err = ctx.ShouldBind(s)
|
||||
if err != nil {
|
||||
log.Debugf("ShouldBind error: %s", err.Error())
|
||||
log.Warnf("ShouldBind error: %s", err.Error())
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -111,12 +111,12 @@ func (s *{{.ClassName}}ById) Bind(ctx *gin.Context) error {
|
||||
log := api.GetRequestLogger(ctx)
|
||||
err := ctx.ShouldBindUri(s)
|
||||
if err != nil {
|
||||
log.Debugf("ShouldBindUri error: %s", err.Error())
|
||||
log.Warnf("ShouldBindUri error: %s", err.Error())
|
||||
return err
|
||||
}
|
||||
err = ctx.ShouldBind(s)
|
||||
if err != nil {
|
||||
log.Debugf("ShouldBind error: %s", err.Error())
|
||||
log.Warnf("ShouldBind error: %s", err.Error())
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) {
|
||||
service{{.ClassName}} := service.{{.ClassName}}{}
|
||||
service{{.ClassName}}.Orm = db
|
||||
service{{.ClassName}}.Log = log
|
||||
err = service{{.ClassName}}.Insert{{.ClassName}}(object.(*(models.{{.ClassName}})))
|
||||
err = service{{.ClassName}}.Insert{{.ClassName}}(object.(*models.{{.ClassName}}))
|
||||
if err != nil {
|
||||
log.Errorf("Insert {{.ClassName}} error, %s", err.Error())
|
||||
e.Error(c, http.StatusInternalServerError, err, "创建失败")
|
||||
|
||||
Reference in New Issue
Block a user