/** * @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)); }
/** * 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); }