<?php namespace Illuminate\Contracts\Auth\Access; interface Gate { /** * Determine if a given ability has been defined. * * @param string $ability * @return bool */ public function has($ability); /** * Define a new ability. * * @param string $ability * @param callable|string $callback * @return $this */ public function define($ability, $callback); /** * Define a policy class for a given class type. * * @param string $class * @param string $policy * @return $this */ public function policy($class, $policy); /** * Determine if the given ability should be granted. * * @param string $ability * @param array|mixed $arguments * @return bool */ public function check($ability, $arguments = []); }