From 16a83fa4217b1bd28db05ed63882236b0c651340 Mon Sep 17 00:00:00 2001 From: tofulm Date: Tue, 11 Aug 2020 18:28:57 +0200 Subject: [PATCH] recup du plugin gamuCompte - inscription + connexion d'un auteur --- comptespip_autorisations.php | 34 +++ comptespip_fonctions.php | 14 ++ comptespip_options.php | 14 ++ comptespip_pipelines.php | 14 ++ content/connect.html | 26 +++ formulaires/configurer_comptespip.html | 115 +++++++++ formulaires/inscription.html | 80 +++++++ formulaires/inscription.php | 220 ++++++++++++++++++ inc/gamucompte_mail_inscription.php | 28 +++ lang/comptespip_fr.php | 24 ++ lang/paquet-comptespip_fr.php | 14 ++ modeles/mail_inscription.html | 25 ++ paquet.xml | 24 ++ .../contenu/configurer_comptespip.html | 7 + prive/themes/spip/images/comptespip-xx.svg | 117 ++++++++++ 15 files changed, 756 insertions(+) create mode 100644 comptespip_autorisations.php create mode 100644 comptespip_fonctions.php create mode 100644 comptespip_options.php create mode 100644 comptespip_pipelines.php create mode 100644 content/connect.html create mode 100644 formulaires/configurer_comptespip.html create mode 100644 formulaires/inscription.html create mode 100644 formulaires/inscription.php create mode 100644 inc/gamucompte_mail_inscription.php create mode 100644 lang/comptespip_fr.php create mode 100644 lang/paquet-comptespip_fr.php create mode 100644 modeles/mail_inscription.html create mode 100644 paquet.xml create mode 100644 prive/squelettes/contenu/configurer_comptespip.html create mode 100644 prive/themes/spip/images/comptespip-xx.svg diff --git a/comptespip_autorisations.php b/comptespip_autorisations.php new file mode 100644 index 0000000..cd11a6c --- /dev/null +++ b/comptespip_autorisations.php @@ -0,0 +1,34 @@ + + +
+ + [

(#TITRE)

] + [
(#DESCRIPTIF)
] + [
(#CHAPO)
] + [
(#TEXTE)
] + +
+
+ + +
+
+
+ [(#FORMULAIRE_INSCRIPTION{})] +
+ +
+
+ diff --git a/formulaires/configurer_comptespip.html b/formulaires/configurer_comptespip.html new file mode 100644 index 0000000..b657d52 --- /dev/null +++ b/formulaires/configurer_comptespip.html @@ -0,0 +1,115 @@ +
+ +

<:comptespip:cfg_titre_parametrages:/>

+ + [

(#ENV*{message_ok})

] + [

(#ENV*{message_erreur})

] + +
+
+ #ACTION_FORMULAIRE + +
+
+ #SET{name,id_presentation} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
+ + [(#GET{erreurs})] + +
+
+ +
+ #SET{name,statut} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
+ + [(#GET{erreurs})] + +

Si pas renseigné, inscription impossible

+
+
+ +
+ #SET{name,unicite_email} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + +
+
+ + +
+
+ + +
+
+
+ + + [(#PLUGIN{auted}|oui) +
+ #SET{name,aut_modele} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
+ + [(#GET{erreurs})] + +
+
+ ] +
+ +
+
+ #SET{name,mail_inscription_sujet} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
+ + [(#GET{erreurs})] + +

Si pas renseigné, récupère celui par defaut de SPIP

+
+
+
+ +
+
+ #SET{name,connexion_auto} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + +
+
+ + +
+
+ + +
+
+
+ +
+ #SET{name,page_redirection_connexion} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} +
+ + [(#GET{erreurs})] + +

Si vide, page sommaire

+
+
+ + +
+ + + + + +

 

+
+
+
diff --git a/formulaires/inscription.html b/formulaires/inscription.html new file mode 100644 index 0000000..1ff9b90 --- /dev/null +++ b/formulaires/inscription.html @@ -0,0 +1,80 @@ +
+[

(#ENV*{message_ok})

] +[

(#ENV*{message_erreur})

] + +[(#ENV{editable}) +
+ #ACTION_FORMULAIRE +
+ #INCLURE{fond=formulaires/inc-inscription-explication,env} + <:form_forum_identifiants:> +

<:form_forum_indiquer_nom_email:>

+
+
+ + [(#ENV*{erreurs}|table_valeur{nom_inscription})] + +
+ #SET{name,prenom} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+ +
+ + [(#ENV*{erreurs}|table_valeur{mail_inscription})] + +
+ +
+ #SET{name,password} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+
+ +
+ #SET{name,password_confirmation} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+
+ +
+
+ [(#REM) Piege a robots spammeurs ] +

+ + +

+

+
+ +[] +] +
+[(#ENV{focus,''}|?{' '}) +
+ + +
] diff --git a/formulaires/inscription.php b/formulaires/inscription.php new file mode 100644 index 0000000..dfee3ce --- /dev/null +++ b/formulaires/inscription.php @@ -0,0 +1,220 @@ + '', + 'mail_inscription' => '', + 'prenom' => '', + 'password' => '', + 'password_confirmation' => '', + 'id' => $id, + '_mode' => $mode, + 'cle' + ); + + return $valeurs; +} + +// Si inscriptions pas autorisees, retourner une chaine d'avertissement +function formulaires_inscription_verifier_dist($mode = '', $id = 0, $retour = '') { + + include_spip('inc/filtres'); + $erreurs = array(); + + $mode = lire_config('comptespip/statut'); + if (!in_array($mode, ['6forum', '1comite', '0minirezo'])) { + $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'); + } else { + include_spip('inc/filtres'); + if (!email_valide($mail)) { + $erreurs['mail_inscription'] = _T('info_email_invalide'); + } + } + + if (_request('password') != _request('password_confirmation')){ + $erreurs['password_confirmation'] = _T('info_passes_identiques'); + } + + if ( strlen(_request('password')) < _PASS_LONGUEUR_MINI ){ + $erreurs['password'] = _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)); + } + + // 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'); + } + + $unicite_email = lire_config('comptespip/unicite_email'); + if (!count($erreurs) and $unicite_email !== "non") { + 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 empty($declaration['pass'])) { + // irrecuperable + $erreurs['message_erreur'] = _T('form_forum_access_refuse'); + } else { + if (($row['statut'] != 'nouveau') and empty($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 resinscrire'); + } + } + } + + return $erreurs; +} + +function formulaires_inscription_traiter_dist($mode = '', $id = 0, $retour = '') { + + include_spip('inc/filtres'); + include_spip('inc/autoriser'); + include_spip('action/editer_auteur'); + + //if (!autoriser('inscrireauteur', $mode, $id)) { + $mode = lire_config('comptespip/statut'); + if (!in_array($mode, ['6forum', '1comite', '0minirezo'])) { + $desc = 'rien a faire ici'; + } else { + + $nom = _request('nom_inscription'); + $mail_complet = _request('mail_inscription'); + $prenom = _request('prenom'); + $set_auteurs = [ + 'nom' => $nom, + 'email' => $mail_complet, + 'statut' => '1comite', + 'login' => 'login_'.time(), + 'prenom' => $prenom, + ]; + + // associer un modele d'autorisations + $aut_modele = lire_config('comptespip/aut_modele'); + if ($aut_modele) { + $autorisations = sql_getfetsel('aut_modele','spip_aut_modeles','nom='.sql_quote($aut_modele)); + $set_auteurs['autorisations'] = $autorisations; + $set_auteurs['aut_nom'] = $aut_modele; + } + + $set_auteurs = pipeline('comptespip_pre_inscription',[ + 'args' => [], + 'data' => $set_auteurs + ]); + + $id_auteur = auteur_inserer(null, $set_auteurs); + + $desc['id_auteur'] = $id_auteur; + if ($id_auteur) { + $search = [ ' ', "'", 'é' ]; + $replace = [ '_', '_', 'e' ]; + $login = strtolower(str_replace($search, $replace, $nom)); + $login .= '_'.$id_auteur; + + $pass = _request('password'); + + $data = pipeline('comptespip_pre_login',[ + 'args' => ['id_auteur' => $id_auteur], + 'data' => [ 'login' => $login] + ]); + + if (isset($data['login'])) { + $login = $data['login']; + } + if (isset($data['pass'])) { + $pass = $data['pass']; + } + + $set_instituer = [ + 'pass' => $pass, + 'login' => $login + ]; + auteur_instituer($id_auteur, $set_instituer); + } + + $f = charger_fonction('comptespip_mail_inscription','inc'); + $f($id_auteur,compact('pass')); + + + if (lire_config('comptespip/connexion_auto')) { + // loguer le compte créé (on a vérifié par SMS) + $auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur)); + include_spip('inc/auth'); + auth_loger($auteur); + + $retour = parametre_url(generer_url_public(lire_config('comptespip/page_redirection_connexion'),'',true),'id_auteur',intval($id_auteur)); + if (lire_config('comptespip/page_redirection_connexion')) { + $retour = parametre_url(generer_url_public(lire_config('comptespip/page_redirection_connexion'),'',true),'id_auteur',intval($id_auteur)); + } + return array('message_ok' => _T('form_forum_identifiant_mail'), 'redirect' => $retour); + } + + } + // erreur ? + if (is_string($desc)) { + return array('message_erreur' => $desc); + } // OK + else { + return array('message_ok' => _T('form_forum_identifiant_mail'), 'id_auteur' => $desc['id_auteur']); + } +} diff --git a/inc/gamucompte_mail_inscription.php b/inc/gamucompte_mail_inscription.php new file mode 100644 index 0000000..e21c65c --- /dev/null +++ b/inc/gamucompte_mail_inscription.php @@ -0,0 +1,28 @@ + 'CompteSPIP', + + // C + 'cfg_exemple' => 'Exemple', + 'cfg_exemple_explication' => 'Explication de cet exemple', + 'cfg_titre_parametrages' => 'Paramétrages', + + + // MM + 'message_mail' => 'Voici vos identifiants pour vous connecter sur le site "@nom_site_spip@" (@adresse_login@) :', + + // T + 'titre_page_configurer_comptespip' => 'CompteSPIP', +); diff --git a/lang/paquet-comptespip_fr.php b/lang/paquet-comptespip_fr.php new file mode 100644 index 0000000..0459d31 --- /dev/null +++ b/lang/paquet-comptespip_fr.php @@ -0,0 +1,14 @@ + '', + 'comptespip_nom' => 'CompteSPIP', + 'comptespip_slogan' => '', +); diff --git a/modeles/mail_inscription.html b/modeles/mail_inscription.html new file mode 100644 index 0000000..5a73b8f --- /dev/null +++ b/modeles/mail_inscription.html @@ -0,0 +1,25 @@ +[(#REM) + + FORK deu modèle de SPIP + +][(#HTTP_HEADER{Content-type: text/plain[; charset=(#CHARSET)]})] +[\[(#NOM_SITE_SPIP|concat{'\] : ',<:form_forum_identifiants:>}|nettoyer_titre_email)] + +[(#SET{url_confirm, [(#ENV{url_confirm}|parametre_url{redirect,#ENV{redirect}})]})] + +<:form_forum_message_auto:> + +<:form_forum_bonjour{nom=#ENV{nom}}:> + +#SET{url_site,#URL_SITE_SPIP/} +[(#SET{url_login,#URL_PAGE{connect}|url_absolue})] +<:comptespip:message_mail{nom_site_spip=#NOM_SITE_SPIP,adresse_site=#GET{url_site},adresse_login=#GET{url_login}}:> + +[(#CONFIG{comptespip/unicite_email}|=={non}|oui) +<:form_forum_login:>[ (#ENV{login})] +] +[(#CONFIG{comptespip/unicite_email}|non) +<:form_forum_login:>[ (#ENV{email})] +] + +#FILTRE{supprimer_tags|filtrer_entites|trim} diff --git a/paquet.xml b/paquet.xml new file mode 100644 index 0000000..b12df23 --- /dev/null +++ b/paquet.xml @@ -0,0 +1,24 @@ + + + CompteSPIP + + + tofulm + + GNU/GPL + + + + + + + + diff --git a/prive/squelettes/contenu/configurer_comptespip.html b/prive/squelettes/contenu/configurer_comptespip.html new file mode 100644 index 0000000..0066c5a --- /dev/null +++ b/prive/squelettes/contenu/configurer_comptespip.html @@ -0,0 +1,7 @@ +[(#AUTORISER{configurer,_comptespip}|sinon_interdire_acces)] + +

<:comptespip:titre_page_configurer_comptespip:/>

+ +
+ #FORMULAIRE_CONFIGURER_COMPTESPIP +
diff --git a/prive/themes/spip/images/comptespip-xx.svg b/prive/themes/spip/images/comptespip-xx.svg new file mode 100644 index 0000000..6cc8bc7 --- /dev/null +++ b/prive/themes/spip/images/comptespip-xx.svg @@ -0,0 +1,117 @@ + +image/svg+xml