2018-01-23 14:25:41 +00:00
|
|
|
package models
|
|
|
|
|
|
|
|
// DeleteUserByID deletes a user by its ID
|
2018-03-06 11:36:49 +00:00
|
|
|
func DeleteUserByID(id int64, doer *User) error {
|
2018-01-23 14:25:41 +00:00
|
|
|
// Check if the id is 0
|
|
|
|
if id == 0 {
|
2018-01-24 11:58:00 +00:00
|
|
|
return ErrIDCannotBeZero{}
|
2018-01-23 14:25:41 +00:00
|
|
|
}
|
|
|
|
|
2018-01-30 11:22:00 +00:00
|
|
|
// Check if there is > 1 user
|
|
|
|
total, err := x.Count(User{})
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if total < 2 {
|
|
|
|
return ErrCannotDeleteLastUser{}
|
|
|
|
}
|
|
|
|
|
2018-01-23 14:25:41 +00:00
|
|
|
// Delete the user
|
2018-01-30 11:22:00 +00:00
|
|
|
_, err = x.Id(id).Delete(&User{})
|
2018-01-23 14:25:41 +00:00
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2018-03-06 11:36:49 +00:00
|
|
|
// Logging
|
|
|
|
err = logAction(ActionTypeUserDeleted, doer, id)
|
|
|
|
|
2018-01-23 14:25:41 +00:00
|
|
|
return err
|
|
|
|
}
|