security_seed.go 944 B

1234567891011121314151617181920212223242526
  1. package initialize
  2. import (
  3. "wails-app/internal/global"
  4. )
  5. // EnsureSecurityHardening upgrades both new and existing databases with the
  6. // permission rules required to close the privilege escalation hole where a
  7. // 618 operator could register an 888 admin account via /user/admin_register.
  8. //
  9. // 纵深防御:
  10. // 1. Casbin 层:撤销 618 角色的 admin_register 权限(本函数,覆盖存量数据库)。
  11. // 2. 业务层:Register 接口校验调用者只能创建不高于自身权限的角色
  12. // (internal/api/v1/system/sys_user.go canRegisterAuthority)。
  13. func EnsureSecurityHardening() error {
  14. db := global.GVA_DB
  15. if db == nil {
  16. return nil
  17. }
  18. // 存量库清理:删除历史上授予 618 的注册权限(新库种子已不再写入)
  19. if err := db.Exec("DELETE FROM casbin_rule WHERE v0 = ? AND v1 = ? AND v2 = ?",
  20. "618", "/user/admin_register", "POST").Error; err != nil {
  21. return err
  22. }
  23. return nil
  24. }