/** * Return the Minimum Access for the section * @return string */ function zbase_auth_minimum() { if (zbase_is_back()) { if (zbase_route_username()) { return zbase_route_username_minimum_access(); } return zbase_config_get('auth.access.minimum.back', 'admin'); } return zbase_config_get('auth.access.minimum.front', 'guest'); }
/** * 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; }
/** * Return this URL for Action */ public function actionUrl($action, $task = null) { $params = ['action' => $action, 'task' => $task]; $params['id'] = $this->alphaId(); if (zbase_is_back()) { return zbase_url_from_route('admin.node_' . $this->routeName . '_category', $params); } return zbase_url_from_route('node_' . static::$nodeNamePrefix . '_category', $params); }
/** * Return this URL for Action */ public function actionUrl($action, $task = null) { $params = ['action' => $action, 'task' => $task]; $params['id'] = $this->alphaId(); if (zbase_is_back()) { return zbase_url_from_route('admin.' . $this->routeName(), $params); } return zbase_url_from_route($this->routeName(), $params); }
/** * Event after Action * @param string $action * @param string $url The Default URL to redirect */ protected function _postEvent($action) { if ($this->isPublic() && $this->isNode() && $this->isCreating()) { return zbase_redirect()->to($this->entity()->alphaUrl()); } $isAjax = zbase_request_is_ajax(); $requestMethod = strtolower(zbase_request_method()); if ($isAjax) { if ($requestMethod == 'post') { $e = $this->_v('event.' . zbase_section() . '.' . $action . '.post-json.post', $this->_v('event.' . $action . '.post-json')); } else { $e = $this->_v('event.' . zbase_section() . '.' . $action . '.post-json', $this->_v('event.' . zbase_section() . '.' . $action . '.post')); } } else { if ($requestMethod == 'post') { $e = $this->_v('event.' . zbase_section() . '.' . $action . '.post.post', $this->_v('event.' . $action . '.post.post', null)); } else { $e = $this->_v('event.' . zbase_section() . '.' . $action . '.post', $this->_v('event.' . $action . '.post', null)); } } if (is_null($e)) { if (zbase_is_back()) { if ($this->isCreating()) { $action = 'update'; } $byAlphaId = $this->_v('entity.repo.byAlphaId.route', false); if ($this->entityIsPostInterface($this->entity())) { if (!empty($byAlphaId)) { $params = ['action' => $action, 'id' => $this->entity()->postAlphaId()]; } else { $params = ['action' => $action, 'id' => $this->entity()->postId()]; } } else { if (!empty($byAlphaId)) { $params = ['action' => $action, 'id' => $this->entity()->alphaId()]; } else { $params = ['action' => $action, 'id' => $this->entity()->id()]; } } } else { $params = ['action' => $action, 'id' => $this->entity()->alphaId()]; } if ($action == 'delete') { $params = []; } $url = $this->getModule()->url(zbase_section(), $params); if ($action == 'restore' || $action == 'ddelete') { $url = zbase_url_previous(); } } if (!empty($e)) { if (!empty($e['data'])) { if ($isAjax) { zbase()->json()->addVariables($e['data']); } } if (!empty($e['route'])) { $params = zbase_route_inputs(); if (!empty($e['route']['params'])) { $params = array_merge($params, $e['route']['params']); } if (zbase_is_back()) { $byAlphaId = $this->_v('entity.repo.byAlphaId.route', false); if (!empty($byAlphaId)) { $params['id'] = $this->entity()->alphaId(); } else { $params['id'] = $this->entity()->id(); } } if ($action == 'ddelete') { if (isset($params['id']) && isset($params['action'])) { unset($params['id']); unset($params['action']); } } $e['route']['params'] = $params; $url = zbase_url_from_config($e); } $toUrl = zbase_value_get($e, 'url', false); if (!empty($toUrl)) { $url = $toUrl; } } $enableRedirect = $this->_v('event.' . zbase_section() . '.' . $action . '.post.redirect.enable', $this->_v('event.' . $action . '.post.redirect.enable', true)); if (!empty($url) && !empty($enableRedirect)) { return zbase_redirect()->to($url); } return true; }
/** * Create Action Script * @return string|Javascript */ public function postCreateActionScript($action, $options = []) { // zbase_ajax_post if (!$this->postCheckAction($action)) { throw new \Zbase\Exceptions\ConfigNotFoundException('Action ' . $action . ' not found in the actionMap.' . __CLASS__); } if (method_exists($this, 'createActionScript')) { return $this->createActionScript($action, $options); } $postHtmlId = $this->postHtmlId(); if (!empty($options['zbase-ajax-url'])) { if (zbase_is_back()) { $url = zbase_url_from_route('admin.' . $this->postModuleName(), ['action' => $action, 'id' => $this->postId()]); } else { $url = zbase_url_from_route($this->postModuleName(), ['action' => $action, 'id' => $this->postId()]); } return 'jQuery(\'#btnPost' . ucfirst($action) . $postHtmlId . '\').click(function(e){e.preventDefault();zbase_ajax_post(\'' . $url . '\',{},function(){},{})});'; } /** * zbase_attach_toggle_event(e, ele, showEle, hiddenEle, selectorsToHide, showCb, hiddenCb) */ $script = 'zbase_attach_toggle_event(\'click\', \'#formCancelButton' . ucfirst($action) . $postHtmlId . '\', \'#formPostWrapperAction' . ucfirst($action) . $postHtmlId . '\', \'#postMainWrapperDetails' . $postHtmlId . '\', \'.formPostWrapperAction' . $postHtmlId . '\');'; return $script . 'zbase_attach_toggle_event(\'click\', \'#btnPost' . ucfirst($action) . $postHtmlId . '\', \'#formPostWrapperAction' . ucfirst($action) . $postHtmlId . '\', \'#postMainWrapperDetails' . $postHtmlId . '\', \'.formPostWrapperAction' . $postHtmlId . '\');'; }
/** * Render HTML between <head></head> * * @return string */ function zbase_view_render_head() { $str = ''; zbase()->view()->prepare(); if (zbase_is_angular()) { $str .= '<title ng-bind="pageTitle">' . zbase()->view()->pageTitle() . '</title>'; } else { $str .= '<title>' . zbase()->view()->pageTitle() . '</title>'; } $str .= zbase_view_head_metas_render(); $str .= zbase_view_stylesheets_render(); $str .= zbase_view_head_links_render(); $str .= zbase_view_placeholder_render('head_javascripts'); $str .= zbase_view_placeholder_render('head_scripts'); $str .= EOF . zbase_view_render(zbase_view_file_contents('google.analytics')); $str .= EOF . zbase_view_styles_render(); if (zbase()->system()->inMaintenance() && zbase_is_back()) { $str .= '<style type="text/css"> .header{background-color: maroon !important;} </style>'; } return $str; }
<?php /** * Dx * * @link http://dennesabing.com * @author Dennes B Abing <*****@*****.**> * @license proprietary * @copyright Copyright (c) 2015 ClaremontDesign/MadLabs-Dx * @version 0.0.0.1 * @since Mar 8, 2016 10:37:59 AM * @file widget.php * @project Expression project.name is undefined on line 13, column 15 in Templates/Scripting/EmptyPHP.php. * @package Expression package is undefined on line 14, column 15 in Templates/Scripting/EmptyPHP.php. * */ return ['type' => 'form', 'enable' => function () { return zbase_config_get('modules.account.widgets.notifications.enable', true); }, 'config' => ['entity' => ['name' => 'user', 'method' => 'currentUser', 'repo' => ['method' => 'currentUser']], 'event' => ['email' => ['post' => ['redirect' => ['enable' => false]]]], 'form' => ['startTag' => ['action' => function () { if (zbase_is_back()) { return zbase_url_from_route('admin.account', ['action' => 'email']); } }, 'html' => ['attributes' => ['class' => ['zbase-ajax-form']]]]], 'elements' => ['email' => ['type' => 'email', 'id' => 'email', 'label' => 'Email Address', 'entity' => ['property' => 'email'], 'angular' => ['ngModel' => 'currentUser.email'], 'html' => ['attributes' => ['input' => ['autocomplete' => 'off']]], 'validations' => ['required' => ['enable' => true, 'message' => 'Email address is required.'], 'unique' => ['enable' => true, 'text' => function () { return 'unique:' . zbase_entity('user')->getTable() . ',email,' . zbase_auth_user()->id() . ',user_id'; }, 'message' => 'Email address already exists.'], 'not_in' => ['enable' => true, 'text' => function () { return 'not_in:' . zbase_auth_user()->email; }, 'message' => 'Please provide a different email address.']]]]]];
/** * Search for a view file on the contents folder * @param string $name * @param string $package * @return string */ function zbase_view_file_contents($name, $package = null) { if (preg_match('/\\:\\:/', $name)) { return $name; } $package = !empty($package) ? $package : zbase_view_template_package(); // - check.contents.back.$name if (zbase_is_back()) { $viewFile = $package . '::contents.back.' . $name; if (\View::exists($viewFile)) { return $viewFile; } } // - check contents.$name $viewFile = $package . '::contents.' . $name; if (\View::exists($viewFile)) { return $viewFile; } // - check zbase.contents.$name $viewFile = zbase_tag() . '::contents.' . $name; if (\View::exists($viewFile)) { return $viewFile; } return $name; }
/** * Get the path to the login route. * * @return string */ public function loginPath() { if (zbase_is_back()) { return zbase_url_from_route('admin.login'); } return zbase_url_from_route('login'); }
/** * 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)); } }