/** * Initializes the session system. */ private static function initialize() { // Make sure it's not initialized already if (self::$initialized) { return; } // See if we were given a session id explicitly // If so we also need a matching token to allow it $setSid = false; if (Input::exists('_sid')) { session_id(Input::get('_sid')); $setSid = true; } // Start the default PHP session self::$prefix = crc32(APP_SALT) . '_'; session_name('session'); session_start(); // Set the initialized flag self::$initialized = true; // Make sure the token is good before we allow // explicit session id setting if ($setSid) { Auth::checkToken(); } }
/** * Determines the current route and runs it. */ public static function run() { // Pull the current path out of the get arguments directly $length = strlen(APP_RELATIVE_URL) == 0 ? 0 : strlen(APP_RELATIVE_URL) + 1; $path = substr(urldecode(parse_url(filter_input(INPUT_SERVER, 'REQUEST_URI'), PHP_URL_PATH)), $length); try { // Get the appropriate route for the path $route = Routes::get($path); // If our route is null, we should 404 if ($route == null) { header('Status: 404 Not Found', true, 404); View::renderView('404'); return; } // See whther or not we have to check the token if ($route->isTokenNeeded()) { Auth::checkToken(); } // Get the current path variables self::$currentPathVariables = self::pullVariables($path, $route); // Run the route $route->run(); // See if the last rendered path variable needs to be set if (View::hasRenderedView()) { Session::set(self::LAST_RENDERED_PATH_KEY, $path); } } catch (Exception $ex) { View::renderJson($ex->getMessage(), false); exit; } }
function demandeRecupPass() { $addrMail = ''; if (isset($_REQUEST['mail'])) { $addrMail = $_REQUEST['mail']; } $retour; $arch = new Archiviste(); $user = new Archivable('User'); $user->set('mail', $addrMail); $users = $arch->restituer($user); if (count($users) == 1) { $userTrouve = $users[0]; $auth = new Auth(); //on verifie qu'il n'y a pas deja une demande en cours $tokenPresent = $auth->checkToken('mail', $addrMail); if ($tokenPresent) { $retour = ['recup' => 'doublon']; } else { $nomSite = Config::get('nomSite'); $adresseSite = Config::get('adresseSite'); $expediteur = '"' . $nomSite . '"<robot@' . $adresseSite . '>'; $sujet = "Demande de reinitialisation de votre mot de passe"; $cleToken = $auth->genererToken(20); $message = 'Bonjour ' . $userTrouve->get('login') . ', <br />' . PHP_EOL . '<br />' . PHP_EOL . 'Vous avez fait une demande de récupération de mot de passe:<br />' . PHP_EOL . '<br />' . PHP_EOL . 'Pour generer un nouveau mot de passe et le recevoir cliquez sur le lien suivant : <a href="http://' . $adresseSite . '/#p:recuPass&t:' . $cleToken . '">http://' . $adresseSite . '/#p:recuPass&t:' . $cleToken . '</a><br />' . PHP_EOL . '<br />' . PHP_EOL . 'Ceci est un message automatique. Merci de ne pas y repondre.'; Mail::envoyer($addrMail, $expediteur, $sujet, $message); $auth->enregistrerRecuPass($addrMail, $userTrouve->get('login'), $cleToken); $retour = ['recup' => 'envoiOK']; } } else { $retour = ['recup' => 'userNOK']; } return $retour; }
function validRecupPass(&$vueAuth) { $auth = new Auth(); $cleToken = 'null'; if (isset($_REQUEST['t'])) { $cleToken = $_REQUEST['t']; } $token = $auth->checkToken('cle', $cleToken); if ($token) { $arch = new Archiviste(); $newPass = $auth->genererToken(12); $user = new User(); $userNew = new User(); $user->set('mail', $token->get('mail')); $userNew->set('pass', md5($newPass)); $nomSite = Config::getVal('nom'); $adresseSite = Config::getVal('adresse'); $expediteur = '"' . $nomSite . '"<robot@' . $adresseSite . '>'; $sujet = "Votre nouveau mot de passe"; $message = 'Bonjour ' . $token->get('login') . ', <br />' . PHP_EOL . '<br />' . PHP_EOL . 'Suite a votre demande de récupération, voici votre nouveau de mot de passe : <b>' . $newPass . '</b><br />' . PHP_EOL . '<br />' . PHP_EOL . 'Ceci est un message automatique. Merci de ne pas y repondre.'; Mail::envoyer($token->get('mail'), $expediteur, $sujet, $message); $arch->modifier($user, $userNew); $arch->supprimer($token); $vueAuth->validRecupPassOk(); } else { $vueAuth->validRecupPassNOk(); } }