Опять вопрос по пакету
cybercog/laravel-ban.
Есть код разблокировки пользователя (после блокирования):
/**
* Разблокировка пользователя
* @param int $id
* @return \Illuminate\Http\RedirectResponse
*/
public function unbanUser(int $id){
$user = User::onlyBanned()->find($id);
if($user){
$unbanUser = $user->unban();
if($unbanUser){
flash('Пользователь ' . $user->login . ' успешно разблокирован!')
->success();
return redirect()->intended(route('admin.users'));
}else{
flash('Ошибка при разблокировке пользователя!')->warning();
return redirect()->back();
}
}else{
flash('Невероятно, но тут ошибка!)')->info();
return redirect()->intended(route('admin.users'));
}
}
И view кнопки на разблокировку:
@if($user->isBanned())
<tr class="table-danger">
@else
<tr>
@endif
<th scope="row">{{ $user->id }}</th>
<td>{{ $user->login }}</td>
<td>{{ $user->mail }}</td>
<td>{{ ($user->status) ? 'Активирован' : 'Не активирован' }}</td>
<td>{{ $user->created_at }}</td>
<td>
@can('admin.users.banned')
@if($user->isNotBanned())
<a href="{{ route('admin.users.banned', $user->id) }}">
<i class="fa fa-ban text-danger" style="font-size: 2em;"></i>
</a>
@endif
@endcan
@can('admin.users.endBanned')
@if($user->isBanned())
<a href="{{ route('admin.users.endbanned', $user->id) }}">
<i class="fa fa-check-circle text-success" style="font-size: 2em;"></i>
</a>
@endif
@endcan
</td>
</tr>
При нажатии разблокировка не проходит, т.к. отдаёт null в методе $user->unban(); Сам же $user существует и данные есть.
На всякий случай модель User:
<?php
namespace App;
use Cog\Contracts\Ban\Bannable as BannableContract;
use Cog\Laravel\Ban\Traits\Bannable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements BannableContract{
use Notifiable, HasRoles, Bannable;
protected $fillable = ['login', 'mail', 'password', 'banned_at'];
protected $hidden = ['password', 'remember_token'];
protected $dates = ['deleted_at', 'banned_at'];
/**
* Поле E-Mail адреса для уведомлений
* @return mixed
*/
public function routeNotificationForMail(){
return $this->mail;
}
/**
* Шифруем пароль по умолчанию функцией bcrypt.
* @param $password
*/
public function setPasswordAttribute($password){
$this->attributes['password'] = bcrypt($password);
}
/**
* Не даём заблокированным пользователям заходить в свой аккаунт
* @return bool
*/
public function shouldApplyBannedAtScope(){
return true;
}
}
Заранее спасибо!
UPD: А если в поле удалить deleted_at (точнее сделать null), то выдаёт ошибку: "Trying to get property 'bans' of non-object", а в бд там появляется новая дата (Carbon::now).