init
This commit is contained in:
56
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php
vendored
Normal file
56
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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 has any of the given abilities.
|
||||
*
|
||||
* @param iterable|string $abilities
|
||||
* @param array|mixed $arguments
|
||||
* @return bool
|
||||
*/
|
||||
public function canAny($abilities, $arguments = [])
|
||||
{
|
||||
return app(Gate::class)->forUser($this)->any($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);
|
||||
}
|
||||
}
|
||||
131
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php
vendored
Normal file
131
vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
<?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) && ! str_contains($ability, '\\')) {
|
||||
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|array $model
|
||||
* @param string|array|null $parameter
|
||||
* @param array $options
|
||||
* @param \Illuminate\Http\Request|null $request
|
||||
* @return void
|
||||
*/
|
||||
public function authorizeResource($model, $parameter = null, array $options = [], $request = null)
|
||||
{
|
||||
$model = is_array($model) ? implode(',', $model) : $model;
|
||||
|
||||
$parameter = is_array($parameter) ? implode(',', $parameter) : $parameter;
|
||||
|
||||
$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'];
|
||||
}
|
||||
}
|
||||
66
vendor/laravel/framework/src/Illuminate/Foundation/Auth/EmailVerificationRequest.php
vendored
Normal file
66
vendor/laravel/framework/src/Illuminate/Foundation/Auth/EmailVerificationRequest.php
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Auth;
|
||||
|
||||
use Illuminate\Auth\Events\Verified;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class EmailVerificationRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
if (! hash_equals((string) $this->route('id'),
|
||||
(string) $this->user()->getKey())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (! hash_equals((string) $this->route('hash'),
|
||||
sha1($this->user()->getEmailForVerification()))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Fulfill the email verification request.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function fulfill()
|
||||
{
|
||||
if (! $this->user()->hasVerifiedEmail()) {
|
||||
$this->user()->markEmailAsVerified();
|
||||
|
||||
event(new Verified($this->user()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the validator instance.
|
||||
*
|
||||
* @param \Illuminate\Validation\Validator $validator
|
||||
* @return void
|
||||
*/
|
||||
public function withValidator($validator)
|
||||
{
|
||||
return $validator;
|
||||
}
|
||||
}
|
||||
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