Beispiel #1
0
 public function execute($repository_path, $user_name, $oldrev, $newrev, $refname)
 {
     $repository = $this->repository_factory->getFromFullPath($repository_path);
     if ($repository !== null) {
         $user = $this->user_manager->getUserByUserName($user_name);
         if ($user === null) {
             $user = new PFUser(array('user_id' => 0));
         }
         $this->executeForRepositoryAndUser($repository, $user, $oldrev, $newrev, $refname);
     }
 }
Beispiel #2
0
 public function migrate($username, $project_id, $tv3_id, $tracker_name, $tracker_description, $tracker_short_name)
 {
     $this->logger->info('-- Beginning of migration of tracker v3 ' . $tv3_id . ' to ' . $tracker_name . ' --');
     $user = $this->user_manager->getUserByUserName($username);
     $tracker_id = $this->createTrackerStructure($user, $project_id, $tv3_id, $tracker_name, $tracker_description, $tracker_short_name);
     $xml_path = $this->exportTV3Data($tv3_id);
     $this->importArtifactsData($username, $tracker_id, $xml_path);
     unlink($xml_path);
     $this->logger->info('-- End of migration of tracker v3 ' . $tv3_id . ' to ' . $tracker_name . ' --');
     $this->mail_logger->sendMail($user, $this->project_manager->getProject($project_id), $tv3_id, $tracker_name);
 }
 private function getUserId($user_name)
 {
     $user = $this->user_manager->getUserByUserName($user_name);
     if (!$user) {
         return null;
     }
     return $user->getId();
 }
 /**
  * Return a user member of project
  * 
  * @param Project $project
  * @param String  $userLogin
  * 
  * @return PFUser
  */
 private function getProjectMember(Project $project, $userLogin)
 {
     $user = $this->userManager->getUserByUserName($userLogin);
     if (!$user) {
         throw new SoapFault('3202', "Invalid user login");
     }
     if ($user->isMember($project->getID())) {
         return $user;
     }
     throw new SoapFault('3203', "User not member of project");
 }
 /**
  * Authenticate user but doesn't verify if they are valid
  *
  * @param String $name
  * @param String $password
  * @return PFUser
  * @throws User_InvalidPasswordWithUserException
  * @throws User_InvalidPasswordException
  * @throws User_PasswordExpiredException
  */
 public function authenticate($name, $password)
 {
     $auth_success = false;
     $auth_user_id = null;
     $auth_user_status = null;
     $this->event_manager->processEvent(Event::SESSION_BEFORE_LOGIN, array('loginname' => $name, 'passwd' => $password, 'auth_success' => &$auth_success, 'auth_user_id' => &$auth_user_id, 'auth_user_status' => &$auth_user_status));
     if ($auth_success) {
         $user = $this->user_manager->getUserById($auth_user_id);
     } else {
         $user = $this->user_manager->getUserByUserName($name);
         if (!is_null($user)) {
             $auth_success = $this->authenticateFromDatabase($user, $password);
         }
     }
     if (!$user) {
         throw new User_InvalidPasswordException();
     } else {
         if (!$auth_success) {
             throw new User_InvalidPasswordWithUserException($user);
         }
     }
     return $user;
 }
 /**
  * Instantiates a project with user, groups, admins ...
  *
  * @param string $project_short_name
  * @param string $project_long_name
  * @param string $is_public
  * @param array  $project_members
  * @param array  $project_admins
  */
 protected function createProject($project_short_name, $project_long_name, $is_public, array $project_members, array $project_admins, array $services)
 {
     $user = $this->user_manager->getUserByUserName(self::ADMIN_USER_NAME);
     $this->user_manager->setCurrentUser($user);
     $project = $this->project_creator->create($project_short_name, $project_long_name, array('project' => array('form_license' => 'xrx', 'form_license_other' => '', 'form_short_description' => '', 'is_test' => false, 'is_public' => $is_public, 'services' => $services, 'built_from_template' => 100)));
     $this->project_manager->activate($project);
     foreach ($project_members as $project_member) {
         $this->addMembersToProject($project, $project_member);
     }
     foreach ($project_admins as $project_admin) {
         $this->addAdminToProject($project, $project_admin);
     }
     return $project;
 }
/**
 * Fonction ajoutant en BDD le nouveau membre inscrit et lui envoyant un message contenant son code d'activation
 * d'inscription.
 */
function addDB()
{
    $userToAdd = new User(array("UserName" => $_POST['userName'], "email" => $_POST['email'], "Mdp" => $_POST['mdp']));
    $code_aleatoire = genererCode();
    $adresseAdmin = "*****@*****.**";
    $to = $userToAdd->getEmail();
    $sujet = "Confirmation de l'inscription";
    $entete = "From:" . $adresseAdmin . "\r\n";
    $entete .= "Content-Type: text/html; charset=utf-8\r\n";
    $message = "Nous confirmons que vous êtes officiellement inscrit sur le site EveryDayIdea <br>\n\t\t\t\t\t\t\t\t\tVotre login est : " . $userToAdd->getUserName() . " <br>\n\t\t\t\t\t\t\t\t\tVotre email est : " . $userToAdd->getEmail() . " <br>\n\t\t\t\t\t\t\t\t\tVotre lien d'activation est : <a href='http://www.everydayidea.be/Page/activationInscription.page.php?code=" . $code_aleatoire . "'>Cliquez ici !</a>";
    mail($to, $sujet, $message, $entete);
    /** @var $um : un nouvel user qui va être ajouté à la BDD
        J'ajoute le nouvel user à la BDD*/
    $um = new UserManager(connexionDb());
    $um->addUser($userToAdd);
    /**
     * Ici j'ai besoin de savoir quel est le user id du nouveau membre ajouté pour pouvoir le mettre dans l'ajout du code d'activation de cet user
     * Donc je vais le rechercher en base de donnée où il vient d'être ajouté
     */
    $user = $um->getUserByUserName($userToAdd->getUserName());
    $userid = $user->getId();
    $um->setUserDroit($user, 4);
    /**
     * J'ajoute le nouveau code d'activation à la BDD
     */
    $am = new ActivationManager(connexionDb());
    $activation = new Activation(array("code" => $code_aleatoire, "id_user" => $userid, "libelle" => "Inscription"));
    $am->addActivation($activation);
}
/**
 * Si le user a rempli le formulaire de changement de mdp, la fonction regarde si le login correspond au user
 * possédant ce code d'activation et si cela est vrai, il change son mdp en bdd et delete son code d'activation en BDD
 */
function changementMdp()
{
    if (isset($_POST['userName']) && isset($_POST['mdp']) && $_POST['mdp'] == $_POST['verifmdp'] && goodCode()) {
        $code = $_GET['code'];
        $mdp = $_POST['mdp'];
        $userName = $_POST['userName'];
        $am = new ActivationManager(connexionDb());
        $ac = $am->getActivationByCodeAndLibelle("Récupération", $code);
        $userId = $ac->getIdUser();
        $um = new UserManager(connexionDb());
        /**
         * Je récupère cet user grâce à l'id du user possédant le code d'acti
         */
        $userRecup = $um->getUserById($userId);
        /**
         * Je récupère l'autre user grâce au login qu'il a encodé dans le formulaire
         */
        $userTest = $um->getUserByUserName($userName);
        /**
         * Je compare les deux users pour voir si ce sont les mêmes
         */
        if ($userTest->getUserName() != $userRecup->getUserName()) {
            echo "<section class='row'>";
            echo "<br><br><br><br><br><br><br><br><br><br><br><br><div class='alert alert-danger' role='alert'>Votre nom d'utilisateur ne correspond pas à l'utilisateur possédant ce code d'activation !</div>";
            echo "</section>";
        } else {
            $userRecup->setMdp($mdp);
            $am->deleteActivation($ac);
            $um->updateUserMdp($userRecup);
            echo "<br><br><br><br><br><br><br><br><br><br><br><br><div class='alert alert-success' role='success'>Votre mot de passe a bien été modifié, vous pouvez vous connecter !</div>";
            echo "<meta http-equiv='refresh' content='2; URL=connexion.page.php'>";
        }
    }
}
/**
 * Fonction permettant de vérifier si le formulaire de modification de profil est correct et si il ne contient pas d'erreurs.
 * @param User $user : l'utilisateur qui a fait la demande de changement de profil.
 * @return array : un tableau contenant tous les messages d'erreur liés au formulaire de changement de profil ou un booleen
 * si le formulaire est correct.
 */
function isValidForm(User $user)
{
    $config = getConfigFile()['CONSTANTE'];
    $UserName = $_POST['userName'];
    $Email = $_POST['email'];
    $Mdp = $_POST['Mdp'];
    $MdpBis = $_POST['MdpBis'];
    $tel = $_POST['Tel'];
    $MdpActuel = $_POST['MdpActuel'];
    if ($Mdp == '') {
        $Mdp = NULL;
        $MdpBis = NULL;
    }
    $userTest = new User(array("UserName" => $UserName, "email" => $Email, "Mdp" => $Mdp, "tel" => $tel));
    $tab = array("RETURN" => false, "ERROR" => array());
    $nameValable = false;
    $emailValable = false;
    $mdpValable = false;
    $nameExistant = false;
    $mailExistant = false;
    $goodMdp = false;
    $boolean_name = false;
    $boolean_mdp = false;
    $mdpIdentique = false;
    $noMdp = false;
    $um = new UserManager(connexionDb());
    $nameVerif = $um->getUserByUserName($userTest->getUserName());
    if ($nameVerif->getUserName() != NULL && $user->getUserName() != $UserName) {
        $nameExistant = true;
        $tab['ERROR']['Name'] = "Nom déjà existant ";
    }
    if (champsEmailValable($Email)) {
        $emailValable = true;
    } else {
        $tab['ERROR']['EmailValable'] = "Votre email contient des caractères indésirables";
    }
    if (champsEmailValable($UserName)) {
        $nameValable = true;
    } else {
        $tab['ERROR']['NameValable'] = "Votre nom d'utilisateur contient des caractères indésirables";
    }
    $mailVerif = $um->getUserByEmail($userTest->getEmail());
    if ($mailVerif->getUserName() != NULL && $user->getEmail() != $Email) {
        $mailExistant = true;
        $tab['ERROR']['Email'] = "Email déjà existant";
    }
    if ($user->getMdp() == hash("sha256", $MdpActuel . $user->getSalt())) {
        $goodMdp = true;
    } else {
        $tab['ERROR']['MdpActuel'] = "Mauvais mot de passe actuel ! Annulation de la modification";
    }
    if (isset($UserName) and strlen($UserName) >= $config['size_user_name']) {
        $boolean_name = true;
    } else {
        $tab['ERROR']['UserName'] = "******" . $config['size_user_name'] . ")";
    }
    if (isset($Mdp) and isset($MdpBis) and $Mdp == $MdpBis and $Mdp != NULL) {
        if (strlen($Mdp) >= $config['size_user_mdp']) {
            $boolean_mdp = true;
        } else {
            $tab['ERROR']['Mdp'] = "Mots de passe trop court (min: " . $config['size_user_mdp'] . ")";
        }
        if (champsMdpValable($Mdp)) {
            $mdpValable = true;
        } else {
            $tab['ERROR']['mdpValable'] = "Votre mot de passe contient des caractères indésirables";
        }
    } else {
        $noMdp = true;
    }
    if (isset($Mdp) and isset($MdpBis) and $Mdp != $MdpBis) {
        $tab['ERROR']['Mdp'] = "Le mot de passe et le mot de passe de vérification sont différents";
    } else {
        $mdpIdentique = true;
    }
    $tab['RETURN'] = ($boolean_mdp && $mdpValable || $noMdp and $boolean_name and !$nameExistant and !$mailExistant and $goodMdp && $mdpIdentique && $nameValable && $emailValable);
    if ($tab['RETURN']) {
        if (isset($UserName) and $userTest->getUserName() != $user->getUserName()) {
            $user->setUserName($UserName);
        }
        if (isset($Email) and $userTest->getEmail() != $user->getEmail()) {
            $user->setEmail($Email);
        }
        if (isset($Mdp) and strlen($Mdp) > 4 and hash("sha256", $userTest->getMdp() . $userTest->getSalt()) != $user->getMdp()) {
            $user->setMdp($Mdp);
            $user->setHashMdp();
        }
        if (isset($tel) and $tel != $user->getTel()) {
            $user->setTel($tel);
        }
        $um->updateUserProfil($user);
        $userToReconnect = $um->getUserById($user->getId());
        setSessionUser($userToReconnect);
    }
    return $tab;
}
/**
 * Fonction vérifiant l'identité du membre et le connectant si il possède la bonne identité.
 * @return array : tableau de message d'erreur dans le cas où ses informations sont fausses, si il est banni ou encore
 * si il ne s'est pas activé.
 */
function doConnect()
{
    $tabRetour = array();
    $mdp = $_POST['mdp'];
    $userName = $_POST['userName'];
    $manager = new UserManager(connexionDb());
    $tabUser = $manager->getAllUser();
    $userToConnect = new User(array("UserName" => $userName, "Mdp" => $mdp));
    $userFound = $manager->getUserByUserName($userName);
    /**
     * Je vérifie sur le user est dans la base de donnée et existe bel et bien
     */
    $echec = false;
    if ($userFound->getId() != NULL) {
        foreach ($tabUser as $elem) {
            //$mdp == hash("sha256", $elem->getMdp());
            //password_verify($mdp, $elem->getMdp())
            if ($userName == $elem->getUserName() && hash("sha256", $userToConnect->getMdp() . $userFound->getSalt()) == $elem->getMdp()) {
                $echec = false;
                $userToConnect = $elem;
                $id = $elem->getId();
                break;
            } else {
                $echec = true;
            }
        }
    } else {
        $echec = true;
    }
    /**
     * Je vérifie que le user n'a pas besoin de s'activer avant de se connecter, l'user pouvant avoir
     * deux code (inscription et mdp oublié), je vérifie que c'est bien le code d'inscription
     */
    $needActi = false;
    $banni = false;
    if (isset($id)) {
        $acManager = new ActivationManager(connexionDb());
        $act = $acManager->getActivationByLibelleAndId("Inscription", $id);
        if (isset($act) && $act->getCode() != NULL) {
            $needActi = true;
        } else {
            $needActi = false;
        }
    }
    $userToConnect = $manager->getUserById($userToConnect->getId());
    if ($echec == true) {
        $tabRetour['Error'] = "<div class='alert alert-danger' role='alert'>Erreur lors de la connexion, veuillez rééssayer avec le bon login ou mot de passe !</div>";
    } else {
        if ($userToConnect->getDroit()[0]->getId() == 6) {
            $tabRetour['Error'] = "<div class='alert alert-danger' role='alert'>Vous êtes banni, impossible de vous connecter !</div>";
            $banni = true;
        } else {
            if ($needActi == true) {
                $tabRetour['Activation'] = "<div class='alert alert-danger' role='alert'>Vous devez activer votre compte avant la connexion !</div>";
            } else {
                $user = $manager->getUserById($id);
                $manager->updateUserConnect($user);
                //$_SESSION['User'] = $user;
                setSessionUser($user);
                echo "Bienvenue sur EveryDayIdea !";
            }
        }
    }
    $tabRetour['Retour'] = !$echec;
    $tabRetour['Valide'] = !$needActi;
    $tabRetour['Banni'] = !$banni;
    return $tabRetour;
}