webworld888/app/Http/Middleware/RequiredDF.php
2021-10-26 19:14:12 +09:00

74 lines
2.2 KiB
PHP

<?php
/**
* RequiredDF.php
*
* PHP version 7
*
* @category Middleware
* @package App\Http\Middleware
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
namespace App\Http\Middleware;
use App\Facades\XeDynamicField;
use Closure;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
/**
* Class RequiredDF
*
* @category Middleware
* @package App\Http\Middleware
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
class RequiredDF
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request request
* @param \Closure $next to be called next
*
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check() &&
!Auth::user()->isAdmin() &&
!$request->routeIs('auth.pending_admin', 'auth.pending_email', 'auth.register.add', 'logout')
) {
$fields = XeDynamicField::gets('user');
if (count($fields) < 1) {
return $next($request);
}
$rules = Collection::make($fields)->filter(function ($field) {
return $field->isEnabled();
})->map(function ($field) {
return $field->getRules();
})->collapse()->filter(function ($rules) {
$rules = array_map('\Illuminate\Support\Str::snake', explode('|', $rules));
return in_array('required', $rules);
})->map(function () {
return 'required';
});
if (Validator::make(Auth::user()->getAttributes(), $rules->all())->fails()) {
return redirect()->route('auth.register.add');
}
}
return $next($request);
}
}