/**
  * {@inheritdoc}
  */
 public function add(User $user)
 {
     $manager = $this->getEntityManager();
     $roleRepository = $this->getEntityManager()->getRepository('SEN_User:Role');
     $roles = array_map(function (Role $role) use($roleRepository) {
         return $roleRepository->findOneBy(['name' => (string) $role]);
     }, $user->getRoles());
     $userCopy = new User($user->getCredentials(), $user->getSimpleProfile(), $user->getFollowing(), $roles, $user->getActivation());
     $manager->persist($userCopy);
     $manager->flush();
     $created = $this->findOneByName($user->getCredentials()->getUsername());
     return $created;
 }
 public function testAddUserRoleGeneric()
 {
     $user = new User(new Credentials('Ma27', 'test-pwd'), new UserDetails('*****@*****.**', new \DateTime(), new \DateTime()), [], [new Role(Role::ADMIN)]);
     $roles = $user->getRoles();
     $this->assertCount(2, $roles);
     $this->assertSame(Role::USER, (string) $user->getRoles()[1]);
 }
 /**
  * Creates a security user from the actual symfony user
  *
  * @param User $user
  *
  * @return SecurityUser
  */
 private function toSecurityUser(User $user)
 {
     return new SecurityUser($user->getCredentials()->getUsername(), $user->getCredentials()->getPassword()->getHash(), $this->toSecurityRole($user->getRoles()), $user->getSimpleProfile()->isLocked());
 }