'', 'mail_inscription' => '', 'id' => $id, '_mode' => $mode); $valeurs['password'] = ''; $valeurs['password_confirmation'] = ''; return $valeurs; } // Si inscriptions pas autorisees, retourner une chaine d'avertissement function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='') { $erreurs = array(); include_spip('inc/config'); set_request("_upgrade_auteur"); // securite include_spip('inc/filtres'); include_spip('inc/autoriser'); if (!autoriser('inscrireauteur', $mode, $id) or (strlen(_request('nobot')) > 0) ) { $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici'); } if (!$nom = _request('nom_inscription')) { $erreurs['nom_inscription'] = _T("info_obligatoire"); } elseif (!nom_acceptable(_request('nom_inscription'))) { $erreurs['nom_inscription'] = _T("ecrire:info_nom_pas_conforme"); } if (!$mail = strval(_request('mail_inscription'))) { $erreurs['mail_inscription'] = _T("info_obligatoire"); } // compatibilite avec anciennes fonction surchargeables // plus de definition par defaut if (!count($erreurs)) { include_spip('action/inscrire_auteur'); if (function_exists('test_inscription')) { $f = 'test_inscription'; } else { $f = 'test_inscription_dist'; } $declaration = $f($mode, $mail, $nom, $id); if (is_string($declaration)) { $k = (strpos($declaration, 'mail') !== false) ? 'mail_inscription' : 'nom_inscription'; $erreurs[$k] = _T($declaration); } else { include_spip('base/abstract_sql'); if ($row = sql_fetsel("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($declaration['email'])) ) { if (($row['statut'] == '5poubelle') and !$declaration['pass']) // irrecuperable { $erreurs['message_erreur'] = _T('form_forum_access_refuse'); } else { if (($row['statut'] != 'nouveau') and !$declaration['pass']) { if (intval($row['statut']) > intval($mode)) { set_request("_upgrade_auteur", $row['id_auteur']); } else { // deja inscrit $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre'); } } } spip_log($row['id_auteur'] . " veut se reinscrire"); } } } // On ajoute la verification du mot de passe // Si les deux champs de mot de passe sont différents if (_request('password') != _request('password_confirmation')){ $erreurs['password_confirmation'] = _T('info_passes_identiques'); } if (motpassecomplexe_verifier_pass(_request('password'))){ $erreurs['password'] = motpassecomplexe_verifier_pass(_request('password')); } // Mais si l'un des deux champs n'est pas rempli, cette erreur prend le dessus if (!_request('password')){ $erreurs['password'] = _T('info_obligatoire'); } if (!_request('password_confirmation')){ $erreurs['password_confirmation'] = _T('info_obligatoire'); } return $erreurs; } function formulaires_inscription_traiter_dist($mode = '', $id = 0, $redirect ='') { include_spip('inc/filtres'); include_spip('inc/autoriser'); if (!autoriser('inscrireauteur', $mode, $id)) { $desc = "rien a faire ici"; } else { if ($id_auteur = _request('_upgrade_auteur')) { include_spip("action/editer_auteur"); autoriser_exception("modifier", "auteur", $id_auteur); autoriser_exception("instituer", "auteur", $id_auteur); auteur_modifier($id_auteur, array('statut' => $mode)); autoriser_exception("modifier", "auteur", $id_auteur, false); autoriser_exception("instituer", "auteur", $id_auteur, false); return array('message_ok' => _T('form_forum_email_deja_enregistre'), 'id_auteur' => $id_auteur); } // 1. On cree l'auteur en BDD : // statut = 6forum $mode="6forum"; $nom = _request('nom_inscription'); $mail_complet = _request('mail_inscription'); $password = _request('password'); $Tmails_destination = sql_allfetsel('email','spip_auteurs', ["statut='0minirezo'", "pgp!='no_notification'"]); $Tmails_destination = array_column($Tmails_destination,'email'); $inscrire_auteur = charger_fonction('inscrire_auteur', 'action'); $desc = $inscrire_auteur($mode, $mail_complet, $nom, array('id' => $id)); // AJOUT GAMUZA - BALINT $msg = "Une personne vient de s'inscrire sur le site : " . $GLOBALS['meta']['nom_site'] . " Nom : $nom Email : $mail_complet Vous pouvez lui accorder le statut de membre le cas échéant."; $sujet = "Nouvelle inscription sur le site ".$GLOBALS['meta']['nom_site']; $notifications = charger_fonction('notifications', 'inc'); notifications_envoyer_mails($Tmails_destination, $msg, $sujet); include_spip('action/editer_auteur'); if ($id_auteur = intval($desc['id_auteur'])){ // On modifie le mot de passe en utilisant les API de SPIP // on modifie aussi le statut $set = array( 'pass' => $password, 'statut' => '6forum' ); auteur_modifier($id_auteur, $set); } // 2. On connecte l'auteur // appeler auth_identifier_login qui va : // - renvoyer un string si echec (message d'erreur) // - un array decrivant l'auteur identifie si possible // - rediriger vers un SSO qui renverra in fine sur action/auth qui finira l'authentification include_spip('inc/auth'); $auteur = auth_identifier_login($desc['login'], $password); // on arrive ici si on ne s'est pas identifie avec un SSO if (!is_array($auteur)) { include_spip('inc/cookie'); spip_setcookie("spip_admin", "", time() - 3600); } // on a ete authentifie, construire la session // en gerant la duree demandee pour son cookie $auteur['cookie'] = "oui"; auth_loger($auteur); } // erreur ? if (is_string($desc)) { return array('message_erreur' => $desc); } // OK else { return array('redirect' => $redirect, 'message_ok' => _T('form_forum_identifiant_mail'), 'id_auteur' => $desc['id_auteur']); } }