Primo Committ
This commit is contained in:
44
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php
vendored
Normal file
44
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Auth\Access;
|
||||
|
||||
use Illuminate\Contracts\Auth\Access\Gate;
|
||||
|
||||
trait Authorizable
|
||||
{
|
||||
/**
|
||||
* Determine if the entity has the given abilities.
|
||||
*
|
||||
* @param iterable|string $abilities
|
||||
* @param array|mixed $arguments
|
||||
* @return bool
|
||||
*/
|
||||
public function can($abilities, $arguments = [])
|
||||
{
|
||||
return app(Gate::class)->forUser($this)->check($abilities, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the entity does not have the given abilities.
|
||||
*
|
||||
* @param iterable|string $abilities
|
||||
* @param array|mixed $arguments
|
||||
* @return bool
|
||||
*/
|
||||
public function cant($abilities, $arguments = [])
|
||||
{
|
||||
return ! $this->can($abilities, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the entity does not have the given abilities.
|
||||
*
|
||||
* @param iterable|string $abilities
|
||||
* @param array|mixed $arguments
|
||||
* @return bool
|
||||
*/
|
||||
public function cannot($abilities, $arguments = [])
|
||||
{
|
||||
return $this->cant($abilities, $arguments);
|
||||
}
|
||||
}
|
||||
127
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php
vendored
Normal file
127
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Auth\Access;
|
||||
|
||||
use Illuminate\Contracts\Auth\Access\Gate;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
trait AuthorizesRequests
|
||||
{
|
||||
/**
|
||||
* Authorize a given action for the current user.
|
||||
*
|
||||
* @param mixed $ability
|
||||
* @param mixed|array $arguments
|
||||
* @return \Illuminate\Auth\Access\Response
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function authorize($ability, $arguments = [])
|
||||
{
|
||||
[$ability, $arguments] = $this->parseAbilityAndArguments($ability, $arguments);
|
||||
|
||||
return app(Gate::class)->authorize($ability, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Authorize a given action for a user.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user
|
||||
* @param mixed $ability
|
||||
* @param mixed|array $arguments
|
||||
* @return \Illuminate\Auth\Access\Response
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function authorizeForUser($user, $ability, $arguments = [])
|
||||
{
|
||||
[$ability, $arguments] = $this->parseAbilityAndArguments($ability, $arguments);
|
||||
|
||||
return app(Gate::class)->forUser($user)->authorize($ability, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Guesses the ability's name if it wasn't provided.
|
||||
*
|
||||
* @param mixed $ability
|
||||
* @param mixed|array $arguments
|
||||
* @return array
|
||||
*/
|
||||
protected function parseAbilityAndArguments($ability, $arguments)
|
||||
{
|
||||
if (is_string($ability) && strpos($ability, '\\') === false) {
|
||||
return [$ability, $arguments];
|
||||
}
|
||||
|
||||
$method = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3)[2]['function'];
|
||||
|
||||
return [$this->normalizeGuessedAbilityName($method), $ability];
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize the ability name that has been guessed from the method name.
|
||||
*
|
||||
* @param string $ability
|
||||
* @return string
|
||||
*/
|
||||
protected function normalizeGuessedAbilityName($ability)
|
||||
{
|
||||
$map = $this->resourceAbilityMap();
|
||||
|
||||
return $map[$ability] ?? $ability;
|
||||
}
|
||||
|
||||
/**
|
||||
* Authorize a resource action based on the incoming request.
|
||||
*
|
||||
* @param string $model
|
||||
* @param string|null $parameter
|
||||
* @param array $options
|
||||
* @param \Illuminate\Http\Request|null $request
|
||||
* @return void
|
||||
*/
|
||||
public function authorizeResource($model, $parameter = null, array $options = [], $request = null)
|
||||
{
|
||||
$parameter = $parameter ?: Str::snake(class_basename($model));
|
||||
|
||||
$middleware = [];
|
||||
|
||||
foreach ($this->resourceAbilityMap() as $method => $ability) {
|
||||
$modelName = in_array($method, $this->resourceMethodsWithoutModels()) ? $model : $parameter;
|
||||
|
||||
$middleware["can:{$ability},{$modelName}"][] = $method;
|
||||
}
|
||||
|
||||
foreach ($middleware as $middlewareName => $methods) {
|
||||
$this->middleware($middlewareName, $options)->only($methods);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the map of resource methods to ability names.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function resourceAbilityMap()
|
||||
{
|
||||
return [
|
||||
'index' => 'viewAny',
|
||||
'show' => 'view',
|
||||
'create' => 'create',
|
||||
'store' => 'create',
|
||||
'edit' => 'update',
|
||||
'update' => 'update',
|
||||
'destroy' => 'delete',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of resource methods which do not have model parameters.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function resourceMethodsWithoutModels()
|
||||
{
|
||||
return ['index', 'create', 'store'];
|
||||
}
|
||||
}
|
||||
20
vendor/laravel/framework/src/Illuminate/Foundation/Auth/User.php
vendored
Normal file
20
vendor/laravel/framework/src/Illuminate/Foundation/Auth/User.php
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Auth;
|
||||
|
||||
use Illuminate\Auth\Authenticatable;
|
||||
use Illuminate\Auth\MustVerifyEmail;
|
||||
use Illuminate\Auth\Passwords\CanResetPassword;
|
||||
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
|
||||
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
|
||||
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Foundation\Auth\Access\Authorizable;
|
||||
|
||||
class User extends Model implements
|
||||
AuthenticatableContract,
|
||||
AuthorizableContract,
|
||||
CanResetPasswordContract
|
||||
{
|
||||
use Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail;
|
||||
}
|
||||
Reference in New Issue
Block a user