<commit_before><?php

class AppUser extends sfBasicSecurityUser {

    const SESSION_COMPTE_LOGIN = "COMPTE_LOGIN";
    const SESSION_COMPTE_DOC = "COMPTE_DOC_ID";
    const SESSION_USURPATION_URL_BACK = "USURPATION_URL_BACK";
    const NAMESPACE_COMPTE = "COMPTE";
    const NAMESPACE_COMPTE_ORIGIN = "COMPTE_ORIGIN";
    const CREDENTIAL_ADMIN = "admin";

    public function signInOrigin($login_or_compte) {

        $compte = $this->registerCompteByNamespace($login_or_compte, self::NAMESPACE_COMPTE_ORIGIN);

        $this->setAuthenticated(true);
        $this->signIn($login_or_compte);
    }

    public function signIn($login_or_compte) {
        $compte = $this->registerCompteByNamespace($login_or_compte, self::NAMESPACE_COMPTE);

        if ($compte && $compte->exist('droits')) {
            foreach ($compte->droits as $droit) {
                $roles = Roles::getRoles($droit);
                $this->addCredentials($roles);
            }
        }
    }

    protected function registerCompteByNamespace($login_or_compte, $namespace) {

        if (is_object($login_or_compte) && $login_or_compte instanceof Compte) {
            $compte = $login_or_compte;
            $login = $compte->getLogin();
        } else {

            $compte = CompteClient::getInstance()->findByLogin($login_or_compte);
            $login = $login_or_compte;
        }

        if(!$compte) {
            throw new sfException("Le compte est nul : ".$compte->_id);
        }

        $this->setAttribute(self::SESSION_COMPTE_LOGIN, $login, $namespace);

        if ($compte->isNew()) {
            $this->setAttribute(self::SESSION_COMPTE_DOC, $compte, $namespace);
        } else {
            $this->setAttribute(self::SESSION_COMPTE_DOC, $compte->_id, $namespace);
        }

        return $compte;
    }

    public function signOut() {
        $this->clearCredentials();
        $this->getAttributeHolder()->removeNamespace(self::NAMESPACE_COMPTE);
    }

    public function signOutOrigin() {
        $this->signOut();<commit_msg>bug deconnexion usurpation lorsque le login est passé plutot que le compte<commit_after><?php

class AppUser extends sfBasicSecurityUser {

    const SESSION_COMPTE_LOGIN = "COMPTE_LOGIN";
    const SESSION_COMPTE_DOC = "COMPTE_DOC_ID";
    const SESSION_USURPATION_URL_BACK = "USURPATION_URL_BACK";
    const NAMESPACE_COMPTE = "COMPTE";
    const NAMESPACE_COMPTE_ORIGIN = "COMPTE_ORIGIN";
    const CREDENTIAL_ADMIN = "admin";

    public function signInOrigin($login_or_compte) {

        $compte = $this->registerCompteByNamespace($login_or_compte, self::NAMESPACE_COMPTE_ORIGIN);

        $this->setAuthenticated(true);
        $this->signIn($login_or_compte);
    }

    public function signIn($login_or_compte) {
        $compte = $this->registerCompteByNamespace($login_or_compte, self::NAMESPACE_COMPTE);

        if ($compte && $compte->exist('droits')) {
            foreach ($compte->droits as $droit) {
                $roles = Roles::getRoles($droit);
                $this->addCredentials($roles);
            }
        }
    }

    protected function registerCompteByNamespace($login_or_compte, $namespace) {

        if (is_object($login_or_compte) && $login_or_compte instanceof Compte) {
            $compte = $login_or_compte;
            $login = $compte->getLogin();
        } else {

            if ($compte = CompteClient::getInstance()->findByLogin($login_or_compte)) {
                $login = $compte->getLogin();
            }
            
        }

        if(!$compte) {
            throw new sfException("Le compte est nul : ".$compte->_id);
        }

        $this->setAttribute(self::SESSION_COMPTE_LOGIN, $login, $namespace);

        if ($compte->isNew()) {
            $this->setAttribute(self::SESSION_COMPTE_DOC, $compte, $namespace);
        } else {
            $this->setAttribute(self::SESSION_COMPTE_DOC, $compte->_id, $namespace);
        }

        return $compte;
    }

    public function signOut() {
        $this->clearCredentials();
        $this->getAttributeHolder()->removeNamespace(self::NAMESPACE_COMPTE);
    }

    public function signOutOrigin() {
        $this->signOut();
{'fraction_non_alphanumeric': 0.12592947949148478, 'fraction_numerical': 0.0, 'mean_word_length': 2.8221814848762605, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 42, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4148448', 'n_tokens_mistral': 1333, 'n_tokens_neox': 1315, 'n_words': 203}