protected function registerInstanceMacro(Router $router)
{
static $seq = 1;
$instanceMacro = function ($key, Closure $callback, $routeOptions = null) use(&$seq) {
$pattern = '{instanceGroup' . $seq++ . '}';
$attributes = ['prefix' => $pattern, 'module' => $key, 'middleware' => ['access']];
if ($routeOptions !== null and is_array($routeOptions)) {
$routeOptions = array_except($routeOptions, ['prefix', 'middleware']);
$attributes = array_merge($attributes, $routeOptions);
if (isset($routeOptions['middleware'])) {
$attributes['middleware'] .= '|' . $routeOptions['middleware'];
}
}
$router = $this;
app('events')->listen('router.before', function ($request, $response) use($router, $attributes, $callback) {
$router->group($attributes, $callback);
});
};
$router->macro('instance', $instanceMacro);
}