/**
  * @param Context $context
  * @param Request $request
  */
 public function _execute($context, $request)
 {
     controller_ChangeController::setNoCache();
     $generator = form_CaptchaGenerator::getInstance();
     $renew = $request->hasParameter('renew');
     // Set optionnal parameters.
     if ($request->hasParameter('ml')) {
         $generator->setCodeMaxLength(intval($request->getParameter('ml')));
         if ($renew) {
             $generator->setCodeMinLength(intval($request->getParameter('ml')));
         }
     }
     if ($request->hasParameter('iw')) {
         $generator->setWidth(intval($request->getParameter('iw')));
     }
     if ($request->hasParameter('ih')) {
         $generator->setHeight(intval($request->getParameter('ih')));
     }
     if ($request->hasParameter('fs')) {
         $generator->setFontSize(intval($request->getParameter('fs')));
     }
     if ($request->hasParameter('fd')) {
         $generator->setFontDepth(intval($request->getParameter('fd')));
     }
     // Renders the image.
     if ($renew) {
         $generator->generateCode();
     }
     $generator->render($context->getUser()->getAttribute(CAPTCHA_SESSION_KEY));
     return View::NONE;
 }
Example #2
0
 /**
  * @covers Context::setUser
  * @covers Context::getUser
  */
 public function testSetUser()
 {
     $user = new \User();
     $actual = $this->ctx->getUser();
     $this->assertNull($actual);
     $this->ctx->setUser($user);
     $actual = $this->ctx->getUser($user);
     $this->assertEquals($user, $actual);
 }
Example #3
0
 /**
  * Forward the user with HTTP status code 403 and an (optional) message
  * based on a boolean check
  *
  * @param boolean $condition
  * @param string $message [optional] The message
  */
 public function forward403unless($condition, $message = null)
 {
     if (!$condition) {
         $message = $message === null ? Context::getI18n()->__("You are not allowed to access this page") : htmlentities($message);
         if (Context::getUser()->isGuest()) {
             Context::setMessage('login_message_err', $message);
             Context::setMessage('login_force_redirect', true);
             Context::setMessage('login_referer', Context::getRouting()->generate(Context::getRouting()->getCurrentRouteName(), Context::getRequest()->getParameters()));
             $this->forward(Context::getRouting()->generate('login_page'), 403);
         } else {
             $this->getResponse()->setHttpStatus(403);
             $this->getResponse()->setTemplate('main/forbidden');
         }
     }
 }
 /**
  * Return the current logged in user
  *
  * @return \thebuggenie\core\entities\User
  */
 protected function getUser()
 {
     return Context::getUser();
 }
Example #5
0
 private function createContext()
 {
     $ctx = new Context();
     if ($ctx->getSession()->hasKey('user')) {
         $user = $ctx->getSession()->get('user');
         $ctx->setUser($user);
     } else {
         $ctx->setUser($this->createAnonymousUser());
         $ctx->getSession()->set('user', $ctx->getUser());
     }
     return $ctx;
 }
Example #6
0
 public function getPredefinedBreadcrumbLinks($type, $project = null)
 {
     $i18n = Context::getI18n();
     $links = array();
     switch ($type) {
         case 'main_links':
             $links[] = array('url' => Context::getRouting()->generate('home'), 'title' => $i18n->__('Frontpage'));
             $links[] = array('url' => Context::getRouting()->generate('dashboard'), 'title' => $i18n->__('Personal dashboard'));
             $links[] = array('title' => $i18n->__('Issues'));
             $links[] = array('title' => $i18n->__('Teams'));
             $links[] = array('title' => $i18n->__('Clients'));
             $links = Event::createNew('core', 'breadcrumb_main_links', null, array(), $links)->trigger()->getReturnList();
             if (Context::getUser()->canAccessConfigurationPage()) {
                 $links[] = array('url' => make_url('configure'), 'title' => $i18n->__('Configure %sitename', array('%sitename' => Settings::getSiteHeaderName())));
             }
             $links[] = array('url' => Context::getRouting()->generate('about'), 'title' => $i18n->__('About %sitename', array('%sitename' => Settings::getSiteHeaderName())));
             $links[] = array('url' => Context::getRouting()->generate('account'), 'title' => $i18n->__('Account details'));
             break;
         case 'project_summary':
             $links['project_dashboard'] = array('url' => Context::getRouting()->generate('project_dashboard', array('project_key' => $project->getKey())), 'title' => $i18n->__('Dashboard'));
             $links['project_releases'] = array('url' => Context::getRouting()->generate('project_release_center', array('project_key' => $project->getKey())), 'title' => $i18n->__('Releases'));
             $links['project_roadmap'] = array('url' => Context::getRouting()->generate('project_roadmap', array('project_key' => $project->getKey())), 'title' => $i18n->__('Roadmap'));
             $links['project_team'] = array('url' => Context::getRouting()->generate('project_team', array('project_key' => $project->getKey())), 'title' => $i18n->__('Team overview'));
             $links['project_statistics'] = array('url' => Context::getRouting()->generate('project_statistics', array('project_key' => $project->getKey())), 'title' => $i18n->__('Statistics'));
             $links['project_timeline'] = array('url' => Context::getRouting()->generate('project_timeline', array('project_key' => $project->getKey())), 'title' => $i18n->__('Timeline'));
             $links['project_issues'] = array('url' => Context::getRouting()->generate('project_issues', array('project_key' => $project->getKey())), 'title' => $i18n->__('Issues'));
             $links = Event::createNew('core', 'breadcrumb_project_links', null, array(), $links)->trigger()->getReturnList();
             $links['project_release_center'] = array('url' => Context::getRouting()->generate('project_release_center', array('project_key' => $project->getKey())), 'title' => $i18n->__('Release center'));
             $links['project_settings'] = array('url' => Context::getRouting()->generate('project_settings', array('project_key' => $project->getKey())), 'title' => $i18n->__('Settings'));
             break;
         case 'client_list':
             foreach (\thebuggenie\core\entities\Client::getAll() as $client) {
                 if ($client->hasAccess()) {
                     $links[] = array('url' => Context::getRouting()->generate('client_dashboard', array('client_id' => $client->getID())), 'title' => $client->getName());
                 }
             }
             break;
         case 'team_list':
             foreach (\thebuggenie\core\entities\Team::getAll() as $team) {
                 if ($team->hasAccess()) {
                     $links[] = array('url' => Context::getRouting()->generate('team_dashboard', array('team_id' => $team->getID())), 'title' => $team->getName());
                 }
             }
             break;
     }
     return $links;
 }
Example #7
0
 public function getPredefinedBreadcrumbLinks($type, $project = null)
 {
     $i18n = Context::getI18n();
     $links = array();
     switch ($type) {
         case 'main_links':
             $links[] = array('url' => Context::getRouting()->generate('home'), 'title' => $i18n->__('Frontpage'));
             $links[] = array('url' => Context::getRouting()->generate('dashboard'), 'title' => $i18n->__('Personal dashboard'));
             $links[] = array('title' => $i18n->__('Issues'));
             if (Context::getUser()->hasPageAccess('teamlist')) {
                 $links[] = array('url' => make_url('team_list'), 'title' => $i18n->__('Teams'));
             }
             if (Context::getUser()->hasPageAccess('clientlist')) {
                 $links[] = array('url' => make_url('client_list'), 'title' => $i18n->__('Clients'));
             }
             $links = Event::createNew('core', 'breadcrumb_main_links', null, array(), $links)->trigger()->getReturnList();
             if (Context::getUser()->canAccessConfigurationPage()) {
                 $links[] = array('url' => make_url('configure'), 'title' => $i18n->__('Configure %sitename', array('%sitename' => Settings::getSiteHeaderName())));
             }
             $links[] = array('url' => Context::getRouting()->generate('about'), 'title' => $i18n->__('About %sitename', array('%sitename' => Settings::getSiteHeaderName())));
             $links[] = array('url' => Context::getRouting()->generate('account'), 'title' => $i18n->__('Account details'));
             $root_projects = array_merge(\thebuggenie\core\entities\Project::getAllRootProjects(true), \thebuggenie\core\entities\Project::getAllRootProjects(false));
             $first = true;
             foreach ($root_projects as $project) {
                 if (!$project->hasAccess()) {
                     continue;
                 }
                 if ($first) {
                     $first = false;
                     $links[] = array('separator' => true);
                 }
                 $links[] = array('url' => Context::getRouting()->generate('project_dashboard', array('project_key' => $project->getKey())), 'title' => $project->getName());
             }
             break;
         case 'project_summary':
             $links['project_dashboard'] = array('url' => Context::getRouting()->generate('project_dashboard', array('project_key' => $project->getKey())), 'title' => $i18n->__('Dashboard'));
             $links['project_releases'] = array('url' => Context::getRouting()->generate('project_releases', array('project_key' => $project->getKey())), 'title' => $i18n->__('Releases'));
             $links['project_roadmap'] = array('url' => Context::getRouting()->generate('project_roadmap', array('project_key' => $project->getKey())), 'title' => $i18n->__('Roadmap'));
             $links['project_team'] = array('url' => Context::getRouting()->generate('project_team', array('project_key' => $project->getKey())), 'title' => $i18n->__('Team overview'));
             $links['project_statistics'] = array('url' => Context::getRouting()->generate('project_statistics', array('project_key' => $project->getKey())), 'title' => $i18n->__('Statistics'));
             $links['project_timeline'] = array('url' => Context::getRouting()->generate('project_timeline', array('project_key' => $project->getKey())), 'title' => $i18n->__('Timeline'));
             $links['project_issues'] = array('url' => Context::getRouting()->generate('project_issues', array('project_key' => $project->getKey())), 'title' => $i18n->__('Issues'));
             $links = Event::createNew('core', 'breadcrumb_project_links', null, array(), $links)->trigger()->getReturnList();
             $links['project_release_center'] = array('url' => Context::getRouting()->generate('project_release_center', array('project_key' => $project->getKey())), 'title' => $i18n->__('Release center'));
             $links['project_settings'] = array('url' => Context::getRouting()->generate('project_settings', array('project_key' => $project->getKey())), 'title' => $i18n->__('Settings'));
             break;
         case 'client_list':
             foreach (\thebuggenie\core\entities\Client::getAll() as $client) {
                 if ($client->hasAccess()) {
                     $links[] = array('url' => Context::getRouting()->generate('client_dashboard', array('client_id' => $client->getID())), 'title' => $client->getName());
                 }
             }
             break;
         case 'team_list':
             foreach (\thebuggenie\core\entities\Team::getAll() as $team) {
                 if ($team->hasAccess()) {
                     $links[] = array('url' => Context::getRouting()->generate('team_dashboard', array('team_id' => $team->getID())), 'title' => $team->getName());
                 }
             }
             break;
         case 'configure':
             $config_sections = Settings::getConfigSections($i18n);
             foreach ($config_sections as $key => $sections) {
                 foreach ($sections as $section) {
                     if ($key == Settings::CONFIGURATION_SECTION_MODULES) {
                         $url = is_array($section['route']) ? make_url($section['route'][0], $section['route'][1]) : make_url($section['route']);
                         $links[] = array('url' => $url, 'title' => $section['description']);
                     } else {
                         $links[] = array('url' => make_url($section['route']), 'title' => $section['description']);
                     }
                 }
             }
             break;
     }
     return $links;
 }
Example #8
0
 /**
  * Forward the user with HTTP status code 403 and an (optional) message
  * based on a boolean check
  *
  * @param boolean $condition
  * @param string $message [optional] The message
  */
 public function forward403unless($condition, $message = null)
 {
     if (!$condition) {
         $message = $message === null ? Context::getI18n()->__("You are either not allowed to access this page or don't have access to perform this action") : $message;
         if (Context::getUser()->isGuest()) {
             Context::setMessage('login_message_err', htmlentities($message));
             Context::setMessage('login_force_redirect', true);
             Context::setMessage('login_referer', Context::getRouting()->generate(Context::getRouting()->getCurrentRouteName(), Context::getRequest()->getParameters()));
             $this->forward(Context::getRouting()->generate('login_page'), Response::HTTP_STATUS_FORBIDDEN);
         } elseif (Context::getRequest()->isAjaxCall()) {
             $this->getResponse()->setHttpStatus(Response::HTTP_STATUS_FORBIDDEN);
             throw new \Exception($message);
         } else {
             throw new \thebuggenie\core\framework\exceptions\ActionNotAllowedException($message);
         }
     }
 }