public function __invoke(User $user)
 {
     $qb = $this->em->createQueryBuilder();
     $qb2 = $this->em->createQueryBuilder();
     $ids = $qb2->select('IDENTITY(u.group)')->from(User::class, 'u')->where('u.login = :login')->setParameter('login', $user->getLogin())->getQuery()->getArrayResult();
     return $qb->select('ug')->from(UserGroup::class, 'ug')->where($qb->expr()->in('ug.id', array_map(function ($el) {
         return current($el);
     }, $ids)))->orderBy('ug.name')->getQuery()->getResult();
 }
Beispiel #2
0
 public function retrieve($login)
 {
     // Creating or retrieving the user
     $user = $this->entityManager->getRepository("AppBundle:User")->findOneByLogin($login);
     if ($user == null) {
         $user = new User();
         $user->setLogin($login);
     }
     // Updating from Intranet
     $connector = new Connector();
     $connector->authenticate(Connector::SIGN_IN_METHOD_CREDENTIALS, $this->connectorParameters["login"], $this->connectorParameters["password"]);
     if (!$connector->isSignedIn()) {
         throw new \Exception();
     }
     $intranetUser = new \EpitechAPI\Component\User($connector, $user->getLogin());
     $user->updateFromIntranet($intranetUser);
     return $user;
 }
Beispiel #3
0
 public function updateUser(User $user)
 {
     // If the user has not a token, ignore
     if ($user->getToken() == null) {
         return;
     }
     // Connecting with Blih
     $blih = new Blih($user->getLogin());
     $blih->setToken($user->getToken());
     // Getting the repositories
     $blihRepositories = $blih->repository()->all()->body;
     if (!isset($blihRepositories->repositories)) {
         return;
     }
     $blihRepositories = $blihRepositories->repositories;
     $repositories = $user->getRepositories();
     // Removing the repositories removed
     $repositories->forAll(function ($key, Repository $repository) use($blihRepositories) {
         if (!array_key_exists($repository->getName(), $blihRepositories)) {
             $this->entityManager->remove($repository);
         }
         return true;
     });
     // Updating or creating the repositories
     foreach ($blihRepositories as $name => $data) {
         $repository = $this->retrieveOrCreateRepository($user, $name);
         $this->updateRepository($repository);
         $this->entityManager->persist($repository);
     }
     // Updating the user
     $user->setLastRepositoriesUpdateDate(new \DateTime());
     $this->entityManager->persist($user);
     $this->entityManager->flush();
 }