fix(ticket): remove obsolete ticket permissions

This commit is contained in:
mlogclub
2026-05-02 20:48:44 +08:00
parent 3eea8f29b7
commit d9130d6d56
2 changed files with 123 additions and 0 deletions
@@ -13,6 +13,9 @@ func init() {
if err := resetLightweightTicketData(ctx.Tx); err != nil {
return err
}
if err := deleteObsoleteTicketPermissions(ctx.Tx); err != nil {
return err
}
permissions, err := ensurePermissions(ctx.Tx)
if err != nil {
@@ -29,6 +32,38 @@ func init() {
})
}
func deleteObsoleteTicketPermissions(tx *gorm.DB) error {
codes := obsoleteTicketPermissionCodes()
if len(codes) == 0 {
return nil
}
permissionIDs := tx.Model(&models.Permission{}).Select("id").Where("code IN ?", codes)
if err := tx.Where("permission_id IN (?)", permissionIDs).Delete(&models.RolePermission{}).Error; err != nil {
return err
}
permissionIDs = tx.Model(&models.Permission{}).Select("id").Where("code IN ?", codes)
if err := tx.Where("permission_id IN (?)", permissionIDs).Delete(&models.UserPermission{}).Error; err != nil {
return err
}
return tx.Where("code IN ?", codes).Delete(&models.Permission{}).Error
}
func obsoleteTicketPermissionCodes() []string {
return []string{
"ticket.reply",
"ticket.close",
"ticket.reopen",
"ticketResolutionCode.view",
"ticketResolutionCode.create",
"ticketResolutionCode.update",
"ticketResolutionCode.delete",
"ticketPriorityConfig.view",
"ticketPriorityConfig.create",
"ticketPriorityConfig.update",
"ticketPriorityConfig.delete",
}
}
func resetLightweightTicketData(tx *gorm.DB) error {
for _, table := range lightweightTicketResetTables(tx) {
if !tx.Migrator().HasTable(table) {