public function executeSignin(dmWebRequest $request) { if ($this->getUser()->isAuthenticated()) { return $this->redirect('@homepage'); } $this->setLayout(realpath(dirname(__FILE__) . '/..') . '/templates/layout'); if ($request->getParameter('skip_browser_detection')) { $this->getService('browser_check')->markAsChecked(); } elseif (!$this->getService('browser_check')->check()) { return 'Browser'; } $this->form = new DmSigninAdminForm(); if ($request->isMethod('post')) { if ($request->getReferer() != '') { if (!strpos($request->getReferer(), $request->getHost(), 0) > -1) { $this->getResponse()->setStatusCode(403); return; } } else { $this->getResponse()->setStatusCode(403); return; } $this->form->bindRequest($request); if ($this->form->isValid()) { $this->getUser()->signin($this->form->getValue('user'), $this->form->getValue('remember')); if ($this->getUser()->can('admin')) { $redirectUrl = $this->getUser()->getReferer($request->getReferer()); $this->redirect($redirectUrl ? $redirectUrl : '@homepage'); } else { try { $this->redirect($this->getService('script_name_resolver')->get('front')); } catch (dmException $e) { // user can't go in admin, and front script_name can't be found. $this->redirect('@homepage'); } } } } else { if ($request->isXmlHttpRequest()) { $this->getResponse()->setHeaderOnly(true); $this->getResponse()->setStatusCode(401); return sfView::NONE; } // if we have been forwarded, then the referer is the current URL // if not, this is the referer of the current request $this->getUser()->setReferer($this->getContext()->getActionStack()->getSize() > 1 ? $request->getUri() : $request->getReferer()); $module = sfConfig::get('sf_login_module'); if ($this->getModuleName() != $module) { return $this->redirect($module . '/' . sfConfig::get('sf_login_action')); } $this->getResponse()->setStatusCode(401); } }
/** * Override this method to redirect the user to some page * just after he(she) successfully registered. */ protected function redirectRegisteredUser(dmWebRequest $request) { $this->redirect($request->getReferer()); }
protected function redirectSignedInUser(dmWebRequest $request) { $redirectUrl = $this->getUser()->getReferer($request->getReferer()); $this->redirect('' != $redirectUrl ? $redirectUrl : '@homepage'); }
protected function redirectSignedInUser(dmWebRequest $request) { $redirectUrl = $this->getUser()->getReferer($request->getReferer()); // add ?_=1 to avoid browser cache >:l $this->redirect('' != $redirectUrl ? $redirectUrl . '?_=1' : '@homepage'); }