@@ -127,6 +127,25 @@ func (s *Service) IsSystemInitialized() bool {
127127 return value == "true"
128128}
129129
130+ // IsDefaultCredentials 检查当前账号密码是否是默认的
131+ func (s * Service ) IsDefaultCredentials () bool {
132+ storedUsername , _ := s .GetSystemConfig (ConfigKeyAdminUsername )
133+ storedPasswordHash , _ := s .GetSystemConfig (ConfigKeyAdminPassword )
134+
135+ fmt .Printf ("🔍 检查默认凭据: username=%s (expected=%s), hasHash=%v\n " ,
136+ storedUsername , DefaultAdminUsername , storedPasswordHash != "" )
137+
138+ if storedUsername != DefaultAdminUsername {
139+ fmt .Printf ("🔍 用户名不匹配,非默认凭据\n " )
140+ return false
141+ }
142+
143+ // 验证密码是否是默认密码
144+ isDefaultPassword := s .VerifyPassword (DefaultAdminPassword , storedPasswordHash )
145+ fmt .Printf ("🔍 密码验证结果: %v\n " , isDefaultPassword )
146+ return isDefaultPassword
147+ }
148+
130149// AuthenticateUser 用户登录验证
131150func (s * Service ) AuthenticateUser (username , password string ) bool {
132151 storedUsername , _ := s .GetSystemConfig (ConfigKeyAdminUsername )
@@ -277,8 +296,8 @@ func (s *Service) InitializeSystem() (string, string, error) {
277296 return "" , "" , errors .New ("系统已初始化" )
278297 }
279298
280- username := "nodepass"
281- password := generateRandomPassword ( 12 )
299+ username := DefaultAdminUsername
300+ password := DefaultAdminPassword
282301
283302 passwordHash , err := s .HashPassword (password )
284303 if err != nil {
@@ -366,6 +385,11 @@ func (s *Service) ChangePassword(username, currentPassword, newPassword string)
366385 return false , "当前密码不正确"
367386 }
368387
388+ // 验证新密码不能与默认密码相同
389+ if newPassword == DefaultAdminPassword {
390+ return false , "新密码不能与默认密码相同,请设置一个安全的密码"
391+ }
392+
369393 // 加密新密码
370394 hash , err := s .HashPassword (newPassword )
371395 if err != nil {
@@ -389,6 +413,8 @@ func (s *Service) ChangeUsername(currentUsername, newUsername string) (bool, str
389413 return false , "当前用户名不正确"
390414 }
391415
416+ // 允许设置任何用户名,包括默认用户名
417+
392418 // 更新系统配置中的用户名
393419 if err := s .SetSystemConfig (ConfigKeyAdminUsername , newUsername ); err != nil {
394420 return false , "更新用户名失败"
@@ -412,6 +438,56 @@ func (s *Service) ChangeUsername(currentUsername, newUsername string) (bool, str
412438 return true , "用户名修改成功"
413439}
414440
441+ // UpdateSecurity 同时修改用户名和密码
442+ func (s * Service ) UpdateSecurity (currentUsername , currentPassword , newUsername , newPassword string ) (bool , string ) {
443+ // 验证当前用户身份
444+ if ! s .AuthenticateUser (currentUsername , currentPassword ) {
445+ return false , "当前密码不正确"
446+ }
447+
448+ // 验证新密码不能与默认密码相同
449+ if newPassword == DefaultAdminPassword {
450+ return false , "新密码不能与默认密码相同,请设置一个安全的密码"
451+ }
452+
453+ // 允许设置任何用户名,包括默认用户名
454+
455+ // 加密新密码
456+ hash , err := s .HashPassword (newPassword )
457+ if err != nil {
458+ return false , "密码加密失败"
459+ }
460+
461+ // 更新用户名
462+ if err := s .SetSystemConfig (ConfigKeyAdminUsername , newUsername ); err != nil {
463+ return false , "更新用户名失败"
464+ }
465+
466+ // 更新密码
467+ if err := s .SetSystemConfig (ConfigKeyAdminPassword , hash ); err != nil {
468+ // 如果密码更新失败,回滚用户名
469+ s .SetSystemConfig (ConfigKeyAdminUsername , currentUsername )
470+ return false , "更新密码失败"
471+ }
472+
473+ // 更新数据库中的会话记录
474+ s .db .Model (& models.UserSession {}).Where ("username = ?" , currentUsername ).Update ("username" , newUsername )
475+
476+ // 更新缓存中的会话
477+ sessionCache .Range (func (key , value interface {}) bool {
478+ sess := value .(Session )
479+ if sess .Username == currentUsername {
480+ sess .Username = newUsername
481+ sessionCache .Store (key , sess )
482+ }
483+ return true
484+ })
485+
486+ // 使所有现有 Session 失效
487+ s .invalidateAllSessions ()
488+ return true , "账号信息修改成功"
489+ }
490+
415491// ResetAdminPassword 重置管理员密码并返回新密码
416492func (s * Service ) ResetAdminPassword () (string , string , error ) {
417493 // 确认系统已初始化
0 commit comments