修复后台新建/重置密码误触发强制改密
仅部署 bootstrap 首个超级管理员需强制改一次初始密码, 新建管理员与重置密码不再设置 password_must_change。
This commit is contained in:
@@ -77,13 +77,14 @@ func (r *Repository) Create(ctx context.Context, req CreateAdminRequest) (*Admin
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
// 仅部署 bootstrap 首个超级管理员会强制改密;后台新建账号不强制。
|
||||||
admin := model.AdminUser{
|
admin := model.AdminUser{
|
||||||
Username: req.Username,
|
Username: req.Username,
|
||||||
PasswordHash: string(hash),
|
PasswordHash: string(hash),
|
||||||
Nickname: req.Nickname,
|
Nickname: req.Nickname,
|
||||||
Status: "active",
|
Status: "active",
|
||||||
TokenVersion: 1,
|
TokenVersion: 1,
|
||||||
PasswordMustChange: true,
|
PasswordMustChange: false,
|
||||||
}
|
}
|
||||||
if err := r.db.WithContext(ctx).Create(&admin).Error; err != nil {
|
if err := r.db.WithContext(ctx).Create(&admin).Error; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -201,10 +202,11 @@ func (r *Repository) ResetPassword(ctx context.Context, id uint64, newPwd string
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
// 管理员重置密码后直接可用,不再二次强制改密(强制改密仅用于 bootstrap 初始账号)。
|
||||||
return r.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
return r.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||||
if err := tx.Model(&admin).Updates(map[string]any{
|
if err := tx.Model(&admin).Updates(map[string]any{
|
||||||
"password_hash": string(hash),
|
"password_hash": string(hash),
|
||||||
"password_must_change": true,
|
"password_must_change": false,
|
||||||
}).Error; err != nil {
|
}).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user