3 namespace BookStack\Http\Controllers;
5 use HttpRequestException;
6 use Illuminate\Foundation\Bus\DispatchesJobs;
7 use Illuminate\Http\Exception\HttpResponseException;
8 use Illuminate\Routing\Controller as BaseController;
9 use Illuminate\Foundation\Validation\ValidatesRequests;
10 use Illuminate\Support\Facades\Auth;
11 use Illuminate\Support\Facades\Session;
14 abstract class Controller extends BaseController
16 use DispatchesJobs, ValidatesRequests;
21 protected $currentUser;
28 * Controller constructor.
30 public function __construct()
32 // Get a user instance for the current user
33 $user = auth()->user();
34 if (!$user) $user = User::getDefault();
36 // Share variables with views
37 view()->share('signedIn', auth()->check());
38 view()->share('currentUser', $user);
40 // Share variables with controllers
41 $this->currentUser = $user;
42 $this->signedIn = auth()->check();
46 * Adds the page title into the view.
49 public function setPageTitle($title)
51 view()->share('pageTitle', $title);
55 * Checks for a permission.
57 * @param $permissionName
58 * @return bool|\Illuminate\Http\RedirectResponse
60 protected function checkPermission($permissionName)
62 if (!$this->currentUser || !$this->currentUser->can($permissionName)) {
63 Session::flash('error', trans('errors.permission'));
64 throw new HttpResponseException(
72 protected function checkPermissionOr($permissionName, $callback)
74 $callbackResult = $callback();
75 if ($callbackResult === false) $this->checkPermission($permissionName);