shell bypass 403
<?php namespace Yajra\DataTables\Html; use Illuminate\Contracts\Auth\Access\Authorizable; trait HasAuthorizations { /** * Flag to check if user is authorized to use the button. * * @var bool */ protected $authorized = true; /** * Make a button if condition is true. * * @param bool|callable $condition * @param string|array $options * @return static */ public static function makeIf($condition, $options = []) { if (value($condition)) { return static::make($options); } return static::make([])->authorized(false); } /** * Make a button if the user is authorized. * * @param string $permission * @param string|array $options * @param Authorizable|null $user * @return static */ public static function makeIfCan($permission, $options = [], Authorizable $user = null) { if (is_null($user)) { $user = auth()->user(); } if ($user->can($permission)) { return static::make($options); } return static::make([])->authorized(false); } /** * Make a button if the user is not authorized. * * @param string $permission * @param string|array $options * @param Authorizable|null $user * @return static */ public static function makeIfCannot($permission, $options = [], Authorizable $user = null) { if (is_null($user)) { $user = auth()->user(); } if (! $user->can($permission)) { return static::make($options); } return static::make([])->authorized(false); } /** * Set authorization status of the button. * * @param bool|callable $bool * @return static */ public function authorized($bool) { $this->authorized = value($bool); return $this; } /** * Convert the Fluent instance to an array. * * @return array */ public function toArray() { if ($this->authorized) { return parent::toArray(); } return []; } }