<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\Auth;

class LaratrustController extends Controller
{

    /**
     * Роли для доступа к контроллеру
     *
     * @var array
     */
    protected $accessRoles = [];

    /**
     * Права для доступа к контроллеру
     *
     * @var array
     */
    protected $accessPermissions = [];

    /**
     * Опции доступа (см. Laratrust)
     *
     * @var array
     */
    protected $accessOptions = [];

    public function __construct($checkAuth = false)
    {
        if ($checkAuth) {
            $this->checkAuth();
        }
    }

    public function checkAuth()
    {
//        dd($this->accessPermissions);
        if (
            ($this->accessRoles || $this->accessPermissions)
            && (!Auth::user()
                || !\Auth::user()->ability($this->accessRoles, $this->accessPermissions, null, $this->accessOptions))
        ) {
            abort(403);
        }
    }

    public function callAction($method, $parameters)
    {
        $this->checkAuth();
        return parent::callAction($method, $parameters);
    }
}
