public function addSessionScripts() { $response = $this->pageStack->getPageResponse(); $session = array(); $session['userId'] = null; $session['lang'] = 'en'; if ($this->pageStack->getSession() && $this->pageStack->getSession()->has('admin_language')) { $session['lang'] = $this->pageStack->getSession()->get('admin_language'); } $session['access'] = $this->acl->check(ACLRequest::create('jarves/entryPoint', ['path' => '/admin'])); if ($this->pageStack->isLoggedIn()) { $user = $this->pageStack->getUser(); $session['userId'] = $user->getId(); $session['username'] = $user->getUsername(); $session['lastLogin'] = $user->getLastLogin(); $session['firstName'] = $user->getFirstName(); $session['lastName'] = $user->getLastName(); // $email = $user->getEmail(); // $session['emailMd5'] = $email ? md5(strtolower(trim($email))) : null; $session['imagePath'] = $user->getImagePath(); } $session['token'] = get_class($this->pageStack->getToken()); $css = 'window._session = ' . json_encode($session) . ';'; $response->addJs($css); }
public function registerForm(Request $request) { if ($this->pageStack->isLoggedIn()) { return $this->templating->renderResponse('JarvesBundle:User:logout.html.twig'); } $user = new User(); $form = $this->formFactory->createBuilder()->setData($user)->add('email', EmailType::class)->add('password', PasswordType::class)->add('save', SubmitType::class, array('label' => 'Register'))->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { } return $this->templating->renderResponse('JarvesBundle:User:register.html.twig', ['form' => $form->createView()]); }
public function checkPageAccess(Node $page) { /** @var Node $oriPage */ $oriPage = $page; if ($page->getAccessFrom() > 0 && $page->getAccessFrom() > time()) { $page = false; } if ($page->getAccessTo() > 0 && $page->getAccessTo() < time()) { $page = false; } if ($page->getAccessFromGroups() != '') { $access = false; $groups = ',' . $page->getAccessFromGroups() . ","; //eg ,2,4,5, $cgroups = null; if ($page['access_need_via'] == 0) { //we need to move this to a extra listener // $cgroups =& $this->getJarves()->getClient()->getUser()->getGroups(); } else { // $htuser = $this->getJarves()->getClient()->login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); // // if ($htuser['id'] > 0) { // $cgroups =& $htuser['groups']; // } } if ($cgroups) { foreach ($cgroups as $group) { if (strpos($groups, "," . $group['group_id'] . ",") !== false) { $access = true; } } } if (!$access) { //maybe we have access through the backend auth? if ($this->pageStack->isLoggedIn()) { foreach ($this->pageStack->getUser()->getGroupIdsArray() as $groupId) { if (false !== strpos($groups, "," . $groupId . ",")) { $access = true; break; } } } } if (!$access) { $page = false; } } if (!$page && ($to = $oriPage->getAccessRedirectTo())) { if (intval($to) > 0) { $to = $this->pageStack->getNodeUrl($to); } return new RedirectResponse($to); } // // if (!$page && $oriPage->getAccessNeedVia() == 1) { // $response = new Response('', 404); // // return $response; // } }
/** * @param array $objectItem * @param array $conditionRule * @param string $objectKey * * @return bool */ public function checkRule($objectItem, $conditionRule, $objectKey = null) { $field = $conditionRule[0]; $operator = $conditionRule[1]; $value = $conditionRule[2]; if (is_numeric($field)) { $ovalue = $field; } else { $ovalue = @$objectItem[$field]; if (null === $ovalue && $objectKey && ($definition = $this->objects->getDefinition($objectKey))) { $tableName = substr($field, 0, strpos($field, '.')); $fieldName = substr($field, strpos($field, '.') + 1); if ($tableName === $definition->getTable()) { $ovalue = $objectItem[$fieldName]; } } } if ($value instanceof ConditionSubSelect) { $value = $value->getValue($objectKey); } //'<', '>', '<=', '>=', '=', 'LIKE', 'IN', 'REGEXP' switch (strtoupper($operator)) { case '!=': case 'NOT EQUAL': return $ovalue != $value; case 'LIKE': $value = preg_quote($value, '/'); $value = str_replace('%', '.*', $value); $value = str_replace('_', '.', $value); return !!preg_match('/^' . $value . '$/', $ovalue); case 'REGEXP': return !!preg_match('/' . preg_quote($value, '/') . '/', $ovalue); case 'NOT IN': return strpos(',' . $value . ',', ',' . $ovalue . ',') === false; case 'IN': return strpos(',' . $value . ',', ',' . $ovalue . ',') !== false; case '<': case 'LESS': return $ovalue < $value; case '>': case 'GREATER': return $ovalue > $value; case '<=': case '=<': case 'LESSEQUAL': return $ovalue <= $value; case '>=': case '=>': case 'GREATEREQUAL': return $ovalue >= $value; case '= CURRENT_USER': case 'EQUAL CURRENT_USER': return $this->pageStack->isLoggedIn() && $ovalue == $this->pageStack->getUser()->getId(); case '!= CURRENT_USER': case 'NOT EQUAL CURRENT_USER': return $this->pageStack->isLoggedIn() && $ovalue != $this->pageStack->getUser()->getId(); case '=': case 'EQUAL': default: return $ovalue == $value; } }