Reputation: 189
The session is being destroyed after successfully logged in or there's some error with the guard that couldn't retain the session. When asked for your_session_key the on the view of the dashboard, it provides null.
Route::group(['prefix' => 'admin'], function () {
Route::namespace('Admin')->group(function () {
Route::group(['middleware' => ['admin_middle','auth:admin']] , function () {
Route::get('accounts/', 'AccountsController@index')->name('admin.accounts');
});
});
});
Middleware: App\Http\Middleware\RedirectIfNotAdmin //Registered in Kernel as 'admin_middle' => \App\Http\Middleware\RedirectIfNotAdmin::class,
class RedirectIfNotAdmin
{
public function handle($request, Closure $next, $guard = 'admin')
{
if (!auth()->guard($guard)->check()) {
$request->session()->flash('error', 'You must be an Admin to see this page');
return redirect(route('auth.admin.login'));
}
return $next($request);
}
}
Guard: config/auth.php // Custom Guard
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
AccountsController: Controllers\AccountsController
class AccountsController extends Controller {
public function __construct(AdminRepositoryInterface $adminRepository) {
$this->adminRepo = $adminRepository;
}
private $adminRepo;
public function index(int $id)
{
$admin = $this->adminRepo->findAdminById($id);
$talentRepo = new AdminRepository($admin);
return view('admin.accounts');
}
}
AdminRepositoryInterface: App\Shop\Admins\Repositories\Interfaces\AdminRepositoryInterface;
interface AdminRepositoryInterface extends BaseRepositoryInterface
{
public function findAdminById(int $id) : Admin;
}
AdminRepository: App\Shop\Admins\Repositories\AdminRepository
class AdminRepository extends BaseRepository implements AdminRepositoryInterface
{
public function findAdminById(int $id) : Admin
{
try {
return $this->findOneOrFail($id);
} catch (ModelNotFoundException $e) {
throw new AdminNotFoundException($e);
}
}
}
View: admin\accounts.blade
@if (Session::has('YOUR_SESSION_KEY'))
{{-- do something with session key --}}
@else
{{-- session key does not exist --}} //this has been printed is the ID variable is not passed
@endif
{{$admin->name}}
<br />{{$admin->email}}
Upvotes: 0
Views: 3146
Reputation: 11
It's saying $this->adminRepo
returns null
.
Try initializing your $this->adminRepo
in the controller's constructor. If you typehint the interface, make sure you bind it in a service provider.
https://laravel.com/docs/5.8/container#binding-basics
Upvotes: 1