/** * Processor to remove user from system * @param User $user * @return mixed */ public function deleteUser(User $user) { // Preparing variables $returnValues['processor'] = 'delete_user'; $returnValues['username'] = $user->getCommonName() . ' (' . $user->getId() . ')'; // If user if ($user) { // Removing LDAP User try { $returnValues['ldapIssue'] = $this->ldapDriver->ldapRemoveUser($user); } catch (\Exception $e) { $returnValues['ldapIssue'] = false; } // Remove VCS user try { $returnValues['vcsIssue'] = $this->gitlabApi->deleteUser($user); } catch (\Exception $e) { $returnValues['vcsIssue'] = false; } // Remove PM user try { $returnValues['pmIssue'] = $this->redmineApi->deleteUser($user); } catch (\Exception $e) { $returnValues['pmIssue'] = false; } // Remove CI User // try { // $returnValues['ciIssue'] = $this->container->get('spirit_dev_dbox_portal_bundle.api.jenkins')->deleteUser($user); // } catch (\Exception $e) { $returnValues['ciIssue'] = 'Deprecated !'; // } // Remove QA User $returnValues['qaIssue'] = $this->sonarApi->deleteUser($user); // Remove demands $demands = $this->em->getRepository('SpiritDevDBoxPortalBundle:Demand')->findBy(array('applicant' => $user)); $status = $this->em->getRepository('SpiritDevDBoxPortalBundle:Status')->findOneBy(array('canonicalName' => 'new')); foreach ($demands as $demand) { $demand->setApplicant(null); $demand->setStatus($status); } // Remove projects $projectsOwned = $this->em->getRepository('SpiritDevDBoxPortalBundle:Project')->findBy(array('owner' => $user)); foreach ($projectsOwned as $project) { $project->setOwner(null); } // $projectMembers = $em->getRepository('SpiritDevDBoxPortalBundle:Project')->findBy(array('teamMembers'=>$user)); // foreach ($projectMembers as $project) { // $project->removeTeamMember($user); // } // Remove DB User $this->em->remove($user); // Save changes $this->em->flush(); $returnValues['dbIssue'] = true; // Send mail $this->mailer->accountUpdate($user, "deletion"); $returnValues['mailIssue'] = true; } else { $returnValues['ldapIssue'] = false; $returnValues['vcsIssue'] = false; $returnValues['pmIssue'] = false; $returnValues['ciIssue'] = false; $returnValues['qaIssue'] = false; $returnValues['dbIssue'] = false; $returnValues['mailIssue'] = false; } // Return values return $returnValues; }
/** * @param User $user * @return mixed */ public function createUser(User $user) { // Fast Return in case of server stopped if (!$this->isServerAvailable()) { return null; } // Create user $newUser = $this->gitLabClient->api($this::API_USERS)->create($user->getEmail(), '1234567890', array('username' => $user->getUsername(), 'name' => $user->getCommonName(), 'provider' => $this->ldapProvider, 'extern_uid' => $user->getDn(), 'confirm' => false, 'projects_limit' => 0)); // Return created user return $newUser; }
/** * Create User * @param User $user * @return mixed * @deprecated */ public function createUser(User $user) { // Fast Return in case of server stopped if (!$this->isServerAvailable()) { return null; } // Initialize values $userPathFolder = $this->userBasePath . $user->getUsername(); $fs = new Filesystem(); // Create user dir try { $fs->mkdir($userPathFolder, 0755); $fs->chown($userPathFolder, 'jenkins'); $fs->chgrp($userPathFolder, 'jenkins'); } catch (IOExceptionInterface $e) { // dump("An error occurred while creating your directory at " . $e->getPath()); } // Updating return values $retval['userPath'] = $userPathFolder; $retval['userPathCreated'] = $fs->exists($userPathFolder); // Creating config file $userConfigFile = $userPathFolder . "/config.xml"; if ($fs->exists($this->userConfigFileTemplate) && $fs->exists($userPathFolder)) { // Opening config template $xmlTemplate = simplexml_load_file($this->userConfigFileTemplate); // Overriding some values $xmlTemplate->fullName = $user->getCommonName(); $xmlTemplate->properties->{'hudson.tasks.Mailer_-UserProperty'}->emailAddress = $user->getEmail(); // Writing new file in user space $dom = dom_import_simplexml($xmlTemplate)->ownerDocument; $dom->formatOutput = true; $fileToWrite = fopen($userConfigFile, "w"); fwrite($fileToWrite, $dom->saveXML()); fclose($fileToWrite); $fs->chmod($userConfigFile, 0644); $fs->chown($userConfigFile, 'jenkins'); $fs->chgrp($userConfigFile, 'jenkins'); // Updating return values $retval['templateExists'] = true; $retval['userConfFile'] = $fs->exists($userConfigFile); } else { $retval['userConfFile'] = false; $retval['templateExists'] = false; } // Updating Jenkins global rights if (file_exists($this->configFile)) { // Config file backup $retval['confFileBackuped'] = $this->backupConfigFile(); // Opening config file $xmlFile = simplexml_load_file($this->configFile); // Overriding some values $authorizations = $xmlFile->authorizationStrategy; $authorizations->addChild("permission", "hudson.model.Hudson.Read:" . $user->getUsername()); // Overriding config file $dom = dom_import_simplexml($xmlFile)->ownerDocument; $dom->formatOutput = true; $fileToWrite = fopen($this->configFile, "w"); fwrite($fileToWrite, $dom->saveXML()); fclose($fileToWrite); // Updating return values $retval['confFileUpdated'] = $fs->exists($this->configFile); } else { $retval['confFileBackuped'] = false; $retval['confFileUpdated'] = false; } // Restarting jenkins $retval['hostRestarted'] = $this->reloadHost(); // Return values if ($retval['userPathCreated'] && $retval['confFileUpdated'] && $retval['userConfFile']) { return true; } else { return false; } // return $retval; }
/** * Activate user * @param User $user * @return mixed */ public function activateUser(User $user) { // Fast Return in case of server stopped if (!$this->serverAvailable) { return null; } try { $issue = $this->sonarClient->api('users')->update(array("login" => $user->getUsername(), "name" => $user->getCommonName(), "password" => 'azerty', "password_confirmation" => 'azerty', "active" => true, "email" => $user->getEmail())); return true; } catch (\Exception $e) { return false; } }