/**
  * @param Request $request
  * @param TokenInterface $token
  * @return RedirectResponse
  */
 public function onAuthenticationSuccess(Request $request, TokenInterface $token)
 {
     // Get current user
     $currentUser = $this->security->getToken()->getUser();
     $currentUsername = $currentUser->getUsername();
     if ($currentUsername != 'sys' && $currentUsername != 'admin') {
         // Get Ldap User
         $ldapUser = $this->ldap->findUserByUsername($currentUser->getUsername());
         // Get DB Stored User
         $dbUser = $this->em->getRepository('SpiritDevDBoxUserBundle:User')->find($currentUser->getId());
         // Merge DB User with Ldap User
         $dbUser->setDn($ldapUser->getDn());
         $dbUser->setLastName($ldapUser->getLastName());
         $dbUser->setFirstName($ldapUser->getFirstName());
         $dbUser->setEmail($ldapUser->getEmail());
         $dbUser->setEmailCanonical($ldapUser->getEmail());
         $dbUser->setUsername($ldapUser->getUsername());
         $dbUser->setUsernameCanonical($ldapUser->getUsername());
         $dbUser->setLanguage($ldapUser->getLanguage());
         // Save in db
         $this->em->flush();
         // Update session user
         $this->security->getToken()->setUser($dbUser);
     }
     // Redirect
     $referer_url = $this->router->generate('spirit_dev_dbox_portal_bundle_introduction');
     return new RedirectResponse($referer_url);
 }
 public function testRefreshUser()
 {
     $username = '******';
     $user = new TestUser();
     $user->setUsername($username);
     $this->ldapManager->expects($this->once())->method('findUserByUsername')->with($this->equalTo($username))->will($this->returnValue($user));
     $this->assertEquals($user, $this->userProvider->refreshUser($user));
 }
Beispiel #3
0
 /**
  * Use the parents hydrate first and after this do the LDAP
  * roles to internal roles mapping.
  *
  * @param \FR3D\LdapBundle\Model\LdapUserInterface $user
  * @param array $entry
  * @return \FR3D\LdapBundle\Model\LdapUserInterface
  */
 protected function hydrate(LdapUserInterface $user, array $entry)
 {
     $ldapManager = parent::hydrate($user, $entry);
     if (!empty($this->mapping) && !empty($entry['memberof']) && $user instanceof User) {
         /** @var $objUser \Rts\Bundle\UserBundle\Entity\User */
         $objUser = $this->em->getRepository(get_class($user))->findOneBy(array('username' => $user->getUsername()));
         if ($objUser) {
             $roles = array();
             $this->em->persist($objUser);
             $objUser->setRoles(array());
             foreach ($this->mapping as $role => $ldapRoles) {
                 foreach ($ldapRoles as $ldapRole) {
                     if (in_array($ldapRole, $entry['memberof'])) {
                         $roles[] = $role;
                     }
                 }
             }
             $objUser->setRoles($roles);
             $this->em->flush();
         }
         $user->setRoles(array());
         foreach ($this->mapping as $role => $ldapRoles) {
             foreach ($ldapRoles as $ldapRole) {
                 if (in_array($ldapRole, $entry['memberof'])) {
                     $user->addRole($role);
                 }
             }
         }
     }
     return $ldapManager;
 }
 public function testFilterValueUtf8()
 {
     $filter = 'ÄÖÜäöü߀';
     $escaped = LdapManager::escapeValue($filter);
     $unescaped = LdapManager::unescapeValue($escaped);
     $this->assertEquals($filter, $unescaped);
 }