Esempio n. 1
0
/**
 * Create a URL Based from a route $name
 * @param type $name
 * @param type $params
 */
function zbase_url_from_route($name, $params = [], $relative = false)
{
    if (!\Route::has($name)) {
        return '#';
    }
    $routes = zbase_config_get('routes');
    $prefix = '';
    $name = str_replace('admin.', zbase_admin_key() . '.', $name);
    $name = str_replace('admin', zbase_admin_key(), $name);
    $usernameRouteEnabled = zbase_route_username();
    if (isset($routes[$name]['usernameroute'])) {
        if ($routes[$name]['usernameroute'] === false) {
            $usernameRouteEnabled = false;
        }
    }
    if (!empty($usernameRouteEnabled)) {
        $usernameRouteParameterName = zbase_route_username_prefix();
        $usernameRoute = zbase_route_username_get();
        $username = zbase_route_input(zbase_route_username_prefix(), false);
        if (!empty($username)) {
            $username = strtolower($username);
            $user = zbase_user_by('username', $username);
            if ($user instanceof \Zbase\Entity\Laravel\User\User && $user->hasUrl()) {
                $usernameRoute = true;
            }
        }
        if (empty($usernameRoute) && zbase_auth_has() && zbase_is_back()) {
            $username = zbase_auth_user()->username();
            $usernameRoute = true;
        }
        if (!empty($usernameRoute)) {
            $prefix = $usernameRouteParameterName;
            if (empty($params[$usernameRouteParameterName])) {
                $params[$usernameRouteParameterName] = $username;
            }
        }
    }
    $name = $prefix . $name;
    if (!empty($relative)) {
        $home = route('index');
        $url = str_replace($home, '', route($name, $params));
    } else {
        $url = route($name, $params);
    }
    if ($usernameRouteEnabled && !empty($usernameRoute)) {
        $url = str_replace($usernameRoute . '/' . $usernameRoute, '/' . $usernameRoute . '/', $url);
    }
    return $url;
}
Esempio n. 2
0
/**
 * Set if Admin here
 */
function zbase_url_parse_admin()
{
    $uri = zbase_url_uri();
    if (!empty($uri)) {
        $uriEx = explode('/', $uri);
        $adminKey = zbase_admin_key();
        foreach ($uriEx as $u) {
            if (!empty($u)) {
                if ($u == $adminKey) {
                    zbase_in_back();
                    return;
                }
            }
        }
    }
}
Esempio n. 3
0
 * routes.home.view.name = view name
 * routes.home.view.enable = true|false
 * routes.home.view.layout = true|false, to return with layout
 * routes.home.method = defaultMethod
 * routes.home.method.post = postMethod
 * routes.home.method.get = getMethod
 * routes.home.form.enable = true|false
 * routes.home.url = /
 * routes.home.params = []
 * routes.home.middleware =
 * routes.home.navIndex = The Index name relative to nav.front.main or nav.main
 * routes.home.middleware.guest = true|false,
 * routes.home.middleware.guestOnly = true|false,
 * routes.home.middleware.auth = true|false,
 * routes.home.middleware.admin = Admin only
 * routes.home.middleware.access = If this !empty(), then, user will be check if he has this access/role. Specific access check zbase_auth_is($access)
 * routes.home.enable = true|false
 * routes.home.httpverb = [get,post, put, patch, delete, options]
 * routes.home.children = child routes.
 * routes.home.backend = true|false, if to be loaded on backend
 * routes.adminkey
 * routes.adminkey.enable = FALSE, should always be false, so system will not process this
 * routes.adminkey.key = admin base URL e.g. domain.com/admin or domain.com/zadamin; default is admin
 */
return ['routes' => ['adminkey' => ['enable' => false, 'key' => zbase_admin_key()], zbase_admin_key() => ['controller' => ['name' => 'backend', 'method' => 'index', 'enable' => true], 'page' => ['title' => function () {
    return zbase_site_name();
}], 'url' => '/' . zbase_admin_key(), 'middleware' => ['admin' => true], 'enable' => true, 'backend' => true, 'children' => ['login' => ['controller' => ['name' => 'auth', 'method' => 'login', 'enable' => true], 'middleware' => ['guestOnly' => true], 'page' => ['headTitle' => function () {
    return 'Login';
}], 'form' => ['enable' => true], 'backend' => true, 'enable' => true], 'logout' => ['controller' => ['name' => 'auth', 'method' => 'logout', 'enable' => true], 'middleware' => ['auth' => true], 'backend' => true, 'enable' => true], 'file' => ['controller' => ['name' => 'post', 'method' => 'file', 'enable' => true, 'params' => ['table' => null, 'action' => null, 'id' => null, 'file' => null]], 'middleware' => ['auth' => true], 'httpVerb' => ['post', 'get'], 'url' => 'post-file/{table?}/{action?}/{id?}/{file?}', 'backend' => true, 'enable' => true], 'filetmp' => ['controller' => ['name' => 'post', 'method' => 'filetmp', 'enable' => true, 'params' => ['table' => null, 'action' => null, 'id' => null, 'file' => null]], 'middleware' => ['auth' => true], 'httpVerb' => ['post', 'get'], 'url' => 'post-file/{table?}/{action?}/{file?}', 'backend' => true, 'enable' => true]]], 'index' => ['controller' => ['name' => 'page', 'method' => 'index', 'enable' => true], 'url' => '/', 'enable' => true], 'home' => ['controller' => ['name' => 'page', 'method' => 'home', 'enable' => true], 'page' => ['title' => null, 'headTitle' => 'Home', 'subTitle' => null], 'url' => '/home', 'middleware' => ['auth' => true], 'enable' => true], 'login' => ['controller' => ['name' => 'auth', 'method' => 'login', 'enable' => true], 'page' => ['title' => 'Login', 'headTitle' => 'Login', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Login', 'link' => '#']]], 'form' => ['enable' => true], 'url' => '/login', 'middleware' => ['guestOnly' => true], 'enable' => true], 'logout' => ['controller' => ['name' => 'auth', 'method' => 'logout', 'enable' => true], 'url' => '/logout', 'middleware' => ['auth' => true], 'enable' => true], 'register' => ['controller' => ['name' => 'auth', 'method' => 'register', 'enable' => true], 'page' => ['title' => 'Register', 'headTitle' => 'Register', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Register', 'link' => '#']]], 'form' => ['enable' => true], 'url' => '/register', 'middleware' => ['guestOnly' => true], 'enable' => true], 'password' => ['controller' => ['name' => 'password', 'method' => 'index', 'enable' => true], 'form' => ['enable' => true], 'page' => ['title' => 'Reset Password', 'headTitle' => 'Reset Password', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Reset Password', 'link' => '#']]], 'url' => '/password', 'middleware' => ['guestOnly' => true], 'enable' => true], 'password-reset' => ['usernameroute' => false, 'controller' => ['name' => 'password', 'method' => 'reset', 'enable' => true], 'page' => ['title' => 'Reset Password', 'headTitle' => 'Reset Password', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Reset Password', 'link' => '#']]], 'form' => ['enable' => true], 'url' => '/password/reset/{token?}', 'middleware' => ['guestOnly' => true], 'enable' => true], 'email-verify' => ['usernameroute' => false, 'controller' => ['name' => 'auth', 'method' => 'emailVerify', 'enable' => true, 'params' => ['email' => null, 'token' => null]], 'page' => ['title' => 'Verify Email Address', 'headTitle' => 'Verify Email Address', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Verify Email Address', 'link' => '#']]], 'url' => '/email-address/verify/{email?}/{token?}', 'enable' => true], 'update-email-request' => ['usernameroute' => false, 'controller' => ['name' => 'auth', 'method' => 'emailUpdateRequestVerify', 'enable' => true, 'params' => ['email' => null, 'token' => null]], 'page' => ['title' => 'Email Update Request', 'headTitle' => 'Email Update Request', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Email Update Request', 'link' => '#']]], 'url' => '/email-addres-update/request/{email?}/{token?}', 'enable' => true], 'phpinfo' => ['command' => function () {
    return phpinfo();
}, 'url' => '/phpinfo', 'enable' => true], 'contact' => ['controller' => ['name' => 'page', 'method' => 'contact', 'enable' => true], 'form' => ['enable' => true], 'url' => '/contact-us', 'enable' => true, 'page' => ['title' => 'Contact Us', 'headTitle' => 'Contact Us', 'subTitle' => null, 'breadcrumbs' => [['label' => 'Contact Us', 'link' => '#']]]], 'userImage' => ['controller' => ['name' => 'user', 'method' => 'image', 'enable' => true], 'url' => '/user/img/{id?}/{image?}/{w?}/{h?}/{q?}.{ext?}', 'enable' => true], 'nodeImage' => ['controller' => ['name' => 'node', 'method' => 'image', 'enable' => true], 'url' => '/img/{node?}/{id?}/{w?}/{h?}/{q?}.{ext?}', 'enable' => true], 'nodeCategoryImage' => ['controller' => ['name' => 'node', 'method' => 'imageCategory', 'enable' => true], 'url' => '/img-category/{node?}/{id?}/{w?}/{h?}/{q?}.{ext?}', 'enable' => true], 'api' => ['usernameroute' => false, 'controller' => ['name' => 'api', 'method' => 'index', 'enable' => true], 'httpVerb' => ['get', 'post', 'put', 'patch'], 'url' => '/api/{username}/{key}/{format}/{module}/{object}/{method}/{paramOne?}/{paramTwo?}/{paramThree?}/{paramFour?}/{paramFive?}/{paramSix?}', 'enable' => true], 'telegramhook' => ['usernameroute' => false, 'controller' => ['name' => 'telegram', 'method' => 'telegramHook', 'enable' => true], 'httpVerb' => ['post'], 'url' => '/telegram/hook', 'enable' => true], 'file' => ['controller' => ['name' => 'post', 'method' => 'file', 'enable' => true, 'params' => ['table' => null, 'action' => null, 'id' => null, 'file' => null]], 'httpVerb' => ['post', 'get'], 'url' => 'post-file/{table?}/{action?}/{id?}/{file?}', 'enable' => true], 'filetmp' => ['controller' => ['name' => 'post', 'method' => 'filetmp', 'enable' => true, 'params' => ['table' => null, 'action' => null, 'id' => null, 'file' => null]], 'httpVerb' => ['post', 'get'], 'url' => 'post-file-tmp/{table?}/{action?}/{file?}', 'enable' => true]]];
Esempio n. 4
0
/**
 * Create a route
 * @param string $name The Route Name
 * @param array $route The Route configuration
 * @return Response
 */
function zbase_route_response($name, $route)
{
    if (!empty(zbase_is_maintenance())) {
        return zbase_response(view(zbase_view_file('maintenance')));
    }
    $redirect = zbase_value_get($route, 'redirect', false);
    if (!empty($redirect)) {
        return redirect()->to($redirect);
    }
    $response = zbase_value_get($route, 'response', false);
    if (!empty($response)) {
        return $response;
    }
    /**
     * If we are using username in routes,
     * 	we have to check if the username exists in DB.
     * 	This is checked in zbase_route_username_get()
     * 	if the zbase_route_username_get() returns false, means
     * 	that the route is not a username or username didn't exists.
     * 	Here we check against all other Routes  if the prefix is in our
     * 	list of routes, if not found, throw NotFoundHttpException
     */
    $useUsernameRoute = zbase_route_username();
    $usernameRoute = zbase_route_username_get();
    $usernameRouteCheck = zbase_data_get($route, 'usernameRouteCheck', true);
    if (empty($usernameRouteCheck)) {
        /**
         * Will not check for username route
         */
        $useUsernameRoute = false;
    }
    //if($usernameRoute === false && !empty($useUsernameRoute))
    if ($name == 'index' && zbase_auth_has() && !empty($useUsernameRoute)) {
        return redirect()->to('/' . zbase_auth_real()->username);
    }
    if ($usernameRoute === false && !empty($useUsernameRoute)) {
        $uri = zbase_url_uri();
        $adminKey = zbase_admin_key();
        if (!empty($uri)) {
            $uriEx = explode('/', $uri);
            if (!empty($uriEx)) {
                foreach ($uriEx as $uriV) {
                    if (!empty($uriV)) {
                        /**
                         * If it isn't an admin key, check it against given Routes
                         */
                        if ($uriV !== $adminKey) {
                            $routes = zbase_config_get('routes', []);
                            if (!empty($routes)) {
                                foreach ($routes as $rName => $r) {
                                    if (!empty($r['enable']) && !empty($r['url'])) {
                                        $urlEx = explode('/', $r['url']);
                                        if (!empty($urlEx)) {
                                            foreach ($urlEx as $urlExV) {
                                                if (!empty($urlExV)) {
                                                    if ($uriV == $urlExV) {
                                                        /**
                                                         * Found it, valid URL
                                                         */
                                                        $validUrlPrefix = true;
                                                    }
                                                    /**
                                                     * Will deal only with the first not empty value so break it.
                                                     */
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                    if (!empty($validUrlPrefix)) {
                                        /**
                                         * Found it, break it
                                         */
                                        $name = $rName;
                                        $route = $r;
                                        break;
                                    }
                                }
                            }
                        } else {
                            return redirect(zbase_url_from_route('home'));
                        }
                        /**
                         * Will deal only with the first not empty value so break it.
                         */
                        break;
                    }
                }
                if (empty($validUrlPrefix)) {
                    /**
                     * Only if routeName is not the index
                     */
                    if ($name != 'index') {
                        // $response = new \Zbase\Exceptions\NotFoundHttpException();
                        // return $response->render(zbase_request(), $response);
                    }
                }
            }
        }
    }
    $usernameRoutePrefix = zbase_route_username_prefix();
    $originalRouteName = str_replace($usernameRoutePrefix, '', $name);
    zbase()->setCurrentRouteName($name);
    $guest = true;
    $authed = false;
    $guestOnly = false;
    $middleware = !empty($route['middleware']) ? $route['middleware'] : false;
    $backend = !empty($route['backend']) ? $route['backend'] : false;
    if ($name == 'password-reset' && zbase_auth_has()) {
        \Auth::guard()->logout();
        return redirect(zbase_url_from_current());
    }
    if (!empty($backend)) {
        //		zbase_in_back();
    }
    if (preg_match('/\\?usernameroute/', zbase_url_uri()) > 0 && !empty($useUsernameRoute) && zbase_auth_has()) {
        return redirect()->to('/' . zbase_auth_user()->username() . '/home');
    }
    if (!empty($useUsernameRoute) && zbase_auth_has() && $usernameRoute != zbase_auth_user()->username()) {
        return redirect(zbase_url_from_route($originalRouteName, [$usernameRoutePrefix => zbase_auth_user()->username()]));
    }
    if (!empty($middleware)) {
        if (is_array($middleware)) {
            $access = isset($middleware['access']) ? $middleware['access'] : false;
            if (!empty($access) && is_array($access)) {
                if (!zbase_auth_has()) {
                    zbase_session_set('__loginRedirect', zbase_url_from_current());
                    return redirect(zbase_url_from_route('login'));
                }
                if (zbase_auth_has() && !zbase_auth_is($access)) {
                    return zbase_abort(401, ucfirst($access) . ' is needed to access the page.');
                }
            } else {
                $guest = isset($middleware['guest']) ? $middleware['guest'] : false;
                $authed = isset($middleware['auth']) ? $middleware['auth'] : false;
                $adminAuthed = isset($middleware['admin']) ? $middleware['admin'] : false;
                if ($adminAuthed) {
                    $authed = true;
                }
                $guestOnly = isset($middleware['guestOnly']) ? $middleware['guestOnly'] : false;
            }
        }
    }
    if (empty($access)) {
        if (!empty($backend)) {
            if (!empty($usernameRoute)) {
                /**
                 * If user is loggedIn and this is admin side and this is not logIn page,
                 * redirect to users dashboard.
                 * User can only access his own dashboard via /{usernameroute?}/admin
                 */
                if (zbase_auth_has() && zbase_auth_is(zbase_route_username_minimum_access()) && zbase_is_back() && $usernameRoute != zbase_auth_user()->username()) {
                    return redirect(zbase_url_from_route('admin', [$usernameRoutePrefix => zbase_auth_user()->username]));
                }
                if ((empty(zbase_auth_has()) || !zbase_auth_is('user')) && $name != $usernameRoutePrefix . 'admin.login') {
                    zbase_session_set('__loginRedirect', zbase_url_from_current());
                    return redirect(zbase_url_from_route('admin.login'));
                }
            } else {
                if ((empty(zbase_auth_has()) || !zbase_auth_is('admin')) && $name != 'admin.login') {
                    zbase_session_set('__loginRedirect', zbase_url_from_current());
                    return redirect(zbase_url_from_route('admin.login'));
                }
            }
        } else {
            if (!empty($guestOnly) && zbase_auth_has()) {
                return redirect(zbase_url_from_route('home'));
            }
            if (!empty($usernameRoute)) {
                if (!empty($authed) && !zbase_auth_has() && $name != $usernameRoutePrefix . 'login') {
                    zbase_session_set('__loginRedirect', zbase_url_from_current());
                    return redirect(zbase_url_from_route('login'));
                }
            } else {
                if (!empty($authed) && !zbase_auth_has() && $name != 'login') {
                    zbase_session_set('__loginRedirect', zbase_url_from_current());
                    return redirect(zbase_url_from_route('login'));
                }
            }
        }
    }
    $params = zbase_route_inputs();
    $requestMethod = zbase_request_method();
    $controller = !empty($route['controller']) ? $route['controller'] : null;
    $command = !empty($route['command']) ? $route['command'] : false;
    if (!empty($command) && $command instanceof \Closure) {
        $command();
        exit;
    }
    if (!empty($controller) && !empty($controller['name']) && !empty($route['controller']['enable'])) {
        $controllerName = !empty($route['controller']['name']) ? $route['controller']['name'] : null;
        $controllerMethod = !empty($route['controller']['method'][$requestMethod]) ? $route['controller']['method'][$requestMethod] : (!empty($route['controller']['method']) ? $route['controller']['method'] : 'index');
        if (!empty($controllerName)) {
            $controllerConfig = zbase_config_get('controller.class.' . $controllerName, null);
            if (!empty($controllerConfig) && !empty($controllerConfig['enable'])) {
                $controllerClass = zbase_controller_create_name(zbase_config_get('controller.class.' . $controllerName . '.name', Zbase\Http\Controllers\__FRAMEWORK__\PageController::class));
                $controllerObject = zbase_object_factory($controllerClass, !empty($route['controller']['params']) ? $route['controller']['params'] : []);
                zbase()->setController($controllerObject->setName($controllerName)->setActionName($controllerMethod)->setRouteParameters($params));
                zbase_view_page_details($route);
                return zbase_response($controllerObject->{$controllerMethod}());
            }
        }
    }
    $view = !empty($route['view']) ? $route['view'] : null;
    if (!empty($view) && !empty($view['name']) && !empty($route['view']['enable'])) {
        zbase_view_page_details($route);
        if (!empty($route['view']['content'])) {
            $params['content'] = zbase_data_get($route['view']['content'], null);
        }
        if ($view['name'] == 'type.js') {
            zbase_response_format_set('javascript');
        }
        return zbase_response(zbase_view_render(zbase_view_file($view['name']), $params));
    }
}