diff --git a/pkg/bastion/shell.go b/pkg/bastion/shell.go index 3bb0d78..91a8d3a 100644 --- a/pkg/bastion/shell.go +++ b/pkg/bastion/shell.go @@ -2132,7 +2132,16 @@ GLOBAL OPTIONS: if err := myself.CheckRoles([]string{"admin"}); err != nil { return err } - + if err := dbmodels.UserKeysByIdentifiers(db, c.Args()).Find(&dbmodels.UserKey{}).Error; err != nil { + var user dbmodels.User + if err := dbmodels.UsersByIdentifiers(db, c.Args()).First(&user).Error; err != nil { + return err + } + if err := dbmodels.UserKeysByUserID(db, []string{fmt.Sprint(user.ID)}).Find(&dbmodels.UserKey{}).Error; err != nil { + return err + } + return dbmodels.UserKeysByUserID(db, []string{fmt.Sprint(user.ID)}).Delete(&dbmodels.UserKey{}).Error + } return dbmodels.UserKeysByIdentifiers(db, c.Args()).Delete(&dbmodels.UserKey{}).Error }, }, diff --git a/pkg/dbmodels/dbmodels.go b/pkg/dbmodels/dbmodels.go index 0197ab3..c235941 100644 --- a/pkg/dbmodels/dbmodels.go +++ b/pkg/dbmodels/dbmodels.go @@ -371,6 +371,9 @@ func UserKeysPreload(db *gorm.DB) *gorm.DB { func UserKeysByIdentifiers(db *gorm.DB, identifiers []string) *gorm.DB { return db.Where("id IN (?)", identifiers) } +func UserKeysByUserID(db *gorm.DB, identifiers []string) *gorm.DB { + return db.Where("user_id IN (?)", identifiers) +} // UserRole helpers