/**
  * @param Model $user
  * @return bool
  * @throws GeneralException
  */
 public function delete(Model $user)
 {
     if (access()->id() == $user->id) {
         throw new GeneralException(trans('exceptions.backend.access.users.cant_delete_self'));
     }
     if (parent::delete($user)) {
         event(new UserDeleted($user));
         return true;
     }
     throw new GeneralException(trans('exceptions.backend.access.users.delete_error'));
 }
 /**
  * @param  Model $role
  * @throws GeneralException
  * @return bool
  */
 public function delete(Model $role)
 {
     //Would be stupid to delete the administrator role
     if ($role->id == 1) {
         //id is 1 because of the seeder
         throw new GeneralException(trans('exceptions.backend.access.roles.cant_delete_admin'));
     }
     //Don't delete the role is there are users associated
     if ($role->users()->count() > 0) {
         throw new GeneralException(trans('exceptions.backend.access.roles.has_users'));
     }
     DB::transaction(function () use($role) {
         //Detach all associated roles
         $role->permissions()->sync([]);
         if (parent::delete($role)) {
             event(new RoleDeleted($role));
             return true;
         }
         throw new GeneralException(trans('exceptions.backend.access.roles.delete_error'));
     });
 }