diff --git a/library/Class/DigitalResource/Config.php b/library/Class/DigitalResource/Config.php index 763c7a957f441556d032fcf0709d238e351f54ae..84a2f333828c1509e3af56a0c9d7101a18611103 100644 --- a/library/Class/DigitalResource/Config.php +++ b/library/Class/DigitalResource/Config.php @@ -250,4 +250,36 @@ class Class_DigitalResource_Config extends Class_Entity { return $view->tag('p', $this->_('Cette ressource ne prend pas en charge l\'affichage du l\'url de moissonnage'), ['class' => 'error']); } + + + public function getTestUser() { + $login = $this->getName() . '_test_user'; + $user = ($user = Class_Users::findFirstBy(['login' => $login])) + ? $user + : Class_Users::newInstance(['login' => $login, + 'password' => $login]); + + $user->save(); + $group = $this->getTestGroup(); + $group->addUser($user)->save(); + + return $user; + } + + + public function getTestGroup() { + $group_name = $this->getName() . '_test_group'; + $group = ($group = Class_UserGroup::findFirstBy(['libelle' => $group_name])) + ? $group + : Class_UserGroup::newInstance(['libelle' => $group_name]); + + $group->save(); + + if(!$permission = Class_Permission::findFirstBy(['code' => $this->getName()])) + return $group; + + $permission->permitTo($group, new Class_Entity()); + + return $group; + } } \ No newline at end of file diff --git a/library/Class/DigitalResource/Controller.php b/library/Class/DigitalResource/Controller.php index 311a8676ee81e04b0a6d88277cfca3be9c5084a6..faabadc2616c5464a672e46889dc1e2964a07dbc 100644 --- a/library/Class/DigitalResource/Controller.php +++ b/library/Class/DigitalResource/Controller.php @@ -62,6 +62,17 @@ class Class_DigitalResource_Controller extends ZendAfi_Controller_Action { } + public function trySsoAction() { + if (!Class_Users::getIdentity()->isSuperAdmin()) { + $this->_helper->notify($this->_('Vous n\'avez pas les droits suffisants pour utiliser cette fonctionnalité.')); + return $this->_redirectToReferer(); + } + + ZendAfi_Auth::getInstance()->logUser($this->_config->getTestUser()); + $this->_forward('sso'); + } + + protected function _afterLoginRedirectTo($url, $message = null) { if($message) $this->_helper->notify($message); diff --git a/library/ZendAfi/View/Helper/DigitalResource/Dashboard.php b/library/ZendAfi/View/Helper/DigitalResource/Dashboard.php index f555dc312ec4c8c105b993ddc83eed5c39ddb478..4cdbb5448821f5940ae22e47f01917f9f1cf7607 100644 --- a/library/ZendAfi/View/Helper/DigitalResource/Dashboard.php +++ b/library/ZendAfi/View/Helper/DigitalResource/Dashboard.php @@ -192,24 +192,8 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard extends ZendAfi_View_Helper_ return implode($html); } - $login = $this->_config->getName() . '_test_user'; - $user = ($user = Class_Users::findFirstBy(['login' => $login])) - ? $user - : Class_Users::newInstance(['login' => $login, - 'password' => $login]); - - $user->save(); - - if(!$permission = Class_Permission::findFirstBy(['code' => $this->_config->getName()])) - return implode($html); - - $group_name = $this->_config->getName() . '_test_group'; - $group = ($group = Class_UserGroup::findFirstBy(['libelle' => $group_name])) - ? $group - : Class_UserGroup::newInstance(['libelle' => $group_name]); - - $group->addUser($user)->save(); - $permission->permitTo($group, new Class_Entity()); + $user = $this->_config->getTestUser(); + $group = $this->_config->getTestGroup(); $html [] = $this->_tag('h5', $this->_('Groupe créé pour ce test')) . $this->_tag('ul', @@ -241,11 +225,8 @@ class ZendAfi_View_Helper_DigitalResource_Dashboard extends ZendAfi_View_Helper_ . $this->_tag('pre', $url) . $this->view->button((new Class_Entity) ->setUrl($this->view->url(['action' => 'try-sso'])) - ->setText($this->_('Essayer le SSO')) - ->setAttribs(['title' => - $this->_('Essayez de vous connecter en SSO à la plateforme "%s" avec l\'utilisateur "%s"', - $this->_config->getName(), - $user->getLogin())])); + ->setText($this->_('Essayer le SSO avec l\'utilisateur "%s"', + $user->getLogin()))); if(!$this->_config->getSsoValidateUrl()) { $html [] = $this->_tag('p', $this->_('Cette ressource ne prend pas en charge la validation du ticket de connexion SSO'), ['class' => 'error']) ; diff --git a/library/digital_resources/Skilleos/tests/SkilleosTest.php b/library/digital_resources/Skilleos/tests/SkilleosTest.php index 6de1e0edd7e4ecee98b7b94d3df5adebfa50bae6..f93255d6371fa7041692b17637994880030ffa5a 100644 --- a/library/digital_resources/Skilleos/tests/SkilleosTest.php +++ b/library/digital_resources/Skilleos/tests/SkilleosTest.php @@ -387,4 +387,28 @@ class SkilleosDashboardTest extends SkilleosServiceTestCase { public function getCatalogueUrlShouldBePresent() { $this->assertXPathContentContains('//pre', 'http://moncompte.skilleos.com/rest/api/trainings'); } +} + + + + +class SkilleosDashboardTrySsoTest extends SkilleosServiceTestCase { + public function setUp() { + parent::setUp(); + + $user = $this->fixture('Class_Users', + ['id' => 5, + 'login' => 'super_admin', + 'password' => 'super', + 'role_level' => ZendAfi_Acl_AdminControllerRoles::SUPER_ADMIN]); + + ZendAfi_Auth::getInstance()->logUser($user); + $this->dispatch('/Skilleos_Plugin/index/try-sso', true); + } + + + /** @test */ + public function shouldJavascriptRedirectToMoncompteDotSkilleos() { + $this->assertXPathContentContains('//script', 'document.location.href="http://skilleos.com/sigb/sso/?casid=QUEST&ticket'); + } } \ No newline at end of file