MuNewUser
Auteur Sujet

Post 

Projet MuNewUser



But


  • Faire une adaptation en template du module new user
  • en profiter pour rajouter des options d'activation par liens dans l'email
  • faire une inscription page par page (si on affiche dessuite les items optionnels on est sur que le gars va rechigner à s'inscrire).


Explication



L'inscription s'effectue sur quatre pages
- vérification de l'age*
- enregistrement de base (pseudo email pass)
- enregistrement des options*
- création d'un post de présentation*

les options avec des * sont activable ou desactivable à l'intérieur du panneau d'administration.

Version beta



vu qu'apparement personne n'est intéréssé je vais pas mettre le zip ;).

Faudra peut etre faire des tests la sécurité et l'envoie d'email (je sais pas trop comment tester sous easyphp).

Base de donnée



Une colonne activated est rajouté dans la table pn_user (il faut donc éditer le fichier pntables.php correspondant pour rajouter cette colonne)

Editez /pntables.php

recherchez
  1.   'commentmax'      => $users . '.pn_commentmax', 
  2.                                   'counter'         => $users . '.pn_counter', 
  3.                                   'timezone_offset' => $users . '.pn_timezone_offset');  


remplacer par
  1.   'commentmax'      => $users . '.pn_commentmax', 
  2.                                   'counter'         => $users . '.pn_counter', 
  3.                                   'timezone_offset' => $users . '.pn_timezone_offset', 
  4.                                   'activated'       => $users . '.activated'); // mumuri 



une autre table munewuser_activation est crée
cid|
cle| clé d'activation par mail
uid| identifiant utilisateur
uidcle| cle de vérification de l'uid

Normalemnet, la création de la table et le rajout de la colonne de la table se fait à l'install, mais j'ai pas encore testé (j'ia mis çà dans pninit.php).

Sécurité



De page en page, on doit garder des infos sur l'utilisateur, son uid par exemple, pour pas que l'utilisateur falsifie cette uid, on lui adjoint une uidcle qui est stocké dans la base de donnée (cette uidcle est un nombre aléatoire).
A chaque page, on récupére l'uid et l'uidcle
on récupérer dans la base l'uidcle réel correpondant à notre uid, et enfin on compare avec celui passé en paramétre.
De plus , on passe aussi un authid pour etre sur de l'identification de la personne.

  1.  pnRedirect(pnModURL('MuNewUser', 'user', 'finishuser',array(    'uid' => $uid, 
  2.                                                                               'authid'=> pnSecGenAuthKey(), 
  3.                                                                            'uidcle' => $uidcle))); 

Screenshot



page 1
munewuser.gif

page 2
munewuser-1.gif

page 3
munewuser-2.gif




Ce qui marche


  • Initialisation du module [ok]
  • Partie administration [ok]
  • affichage ou non du message de limite d'age [ok]
  • insertion des premiéres donnés dans la base [ok]
    1. 3             test      test@est.fr                    blank.gif      1135420943      NULL      NULL      NULL      NULL      NULL      NULL      NULL      NULL      NULL      NULL      dcddb75469b4b4875094e14561e573d8      10             0      0      0             0                    4096      0      12.0      1 

    le dernier champ est le champ activated, il est initialisé à 1 par défaut, pour dire que l'utilisateur n'est pas activé pour l'instant.

    Page 1
  • affichage du menu d'enregistrement [ok]
  • -> affichage ou non des mots de passe [ok]
  • -> gestion d'erreur [ok]
  • -> sécurité par pnSecGenAuthId [ok] (si une personne récupére le lien de votre inscription et qu'elle essaye de le relancer, on lui dit qu'elle n'est pas autorisé à le faire)


    Passage de la page 1 à la page 2 [ok]
  • insertion dans la base activation [ok]
    1.  pn_cid       pn_cle       pn_uid       pn_uidcle 
    2.     1     f935a2d9d46854746cb7d81da4b2bb16     3     0a0e6e53a924071287c4aaf0c0e6f0a6 

  • les liens sont de cette forme
    index.php?module=MuNewUser&func=optionnalItems&uid=3&authid=d0cd0fd069d400b2f752eca66e7db86e&uidcle=0a0e6e53a924071287c4aafc0e6f0a6
    authid pour vérifier que la personne qui a validé la premiére page est la méme que celle qui a validé la seconde
    uidcle pour vérifier que l'uid est bien celui du nouveau inscrit et non un uid falsifié
  • vérification des deux clés ok

    Page 2
  • affichage du menu ( avec avatar + timezone codé en temps que plugin du template)[ok]
  • update de la base [ok]
    1. UPDATE pn_users SET pn_users.pn_url = 'http://topflood.free.fr' ,pn_users.pn_user_avatar = 'blank.gif' ,pn_users.pn_user_icq = 'testicq' ,pn_users.pn_user_occ = 'testoccu' ,pn_users.pn_user_from = 'testville' ,pn_users.pn_user_intrest = 'testinterest' ,pn_users.pn_user_sig = 'testsign' ,pn_users.pn_user_aim = 'testaim' ,pn_users.pn_user_yim = 'testyahoo' ,pn_users.pn_user_msnm = 'testmsn' ,pn_users.pn_user_viewemail = '1' ,pn_users.pn_timezone_offset = '12' WHERE pn_users.pn_uid= 5 


    Page 3 : présentation sur pnForum
  • activation désactivation via le panneau admin ok , non affichage quand pnforum est pas installé [ok]
  • fonction aperçu ok
  • validation du post ok






Remarques



Vous aurez remarqué sur la page 1 que j'ai mis une variable votre nom qui est normalement une donnée optionnel.
Vous pouvez éventuellement modifié dans le template pour ne pas afficher le champs. A ce moment là il faudra le rajouté dans le template des éléments optionnels (si vous les demandez à l'inscription).

A faire dans une version ultérieur


  • affichage des données dynamiques
  • éffacage des utilisateurs non activés depuis un certain temps depuis le panneau administation
  • envoyer un message de bienvenue à l'utilisateur
  • rajouter les bbcode et les bbsmile pour les champs du profils bio et interest



FAQ


J'ai une erreur mysql dans la validation du premier formulaire ?
FAites la petite manip suivante

Editez /pntables.php

recherchez
  1.   'commentmax'      => $users . '.pn_commentmax', 
  2.                                   'counter'         => $users . '.pn_counter', 
  3.                                   'timezone_offset' => $users . '.pn_timezone_offset');  


remplacer par
  1.   'commentmax'      => $users . '.pn_commentmax', 
  2.                                   'counter'         => $users . '.pn_counter', 
  3.                                   'timezone_offset' => $users . '.pn_timezone_offset', 
  4.                                   'activated'       => $users . '.activated'); // mumuri 




les bbcode et bbsmile n'apparaissent pas ?

activer les 2 modules dans les options d'administration, puis aller sur le module MuNewUser et cliquez sur extensions, activer bbcode et bbsmile



affichage correct dans member_list



pour ne pas afficher les membres en cours d'inscription ou en attente d'activation,
rechercher dans modules/members_list/pnuserapi
  1.   if (array_key_exists('activated', $userscolumn)) { 
  2.         if (!$sorting && pnConfigGetVar('filterunverified')) { 
  3.             $where .= "AND $userscolumn[activated] != '1'"; 
  4.         } else if ($sorting && pnConfigGetVar( 'filterunverified')) { 
  5.             $where .= "AND $userscolumn[activated] = '0' "; 
  6.         } 
  7.     } 
  8.   


remplacer par
  1.   if (array_key_exists('activated', $userscolumn)) { 
  2.  
  3.             $where .= "AND $userscolumn[activated] = '0' "; 
  4.  
  5.     } 
  6.   










modifié par : mumuri, 30 Déc 2005 - 20:21
Données personnelles Accueil

Post 
C'est cool de faire passer en templates les modules. Je travaille actuellement su un thème don j'espère que vous pourrez bientot voir et j'étais bloqué à cause de modules pas encore mis en templates !


pour la 0.8, est-t-il prevu de tout passer sous templates??

A bientôt !


modifié par : Gilles, 23 Déc 2005 - 23:58


Gilles  ><>°
Données personnelles Accueil

Post 
Gilles a écrit :


pour la 0.8, est-t-il prevu de tout passer sous templates??

A bientôt !


apparement non, (d'aprés la liste paru dans les news).
http://postnuke-france.org/Article19.html


Autrechose, à l'inscription , j'ai rajouté un post de présentation sur pnForum, pour ceux qui pensent que c'est inutile, dites vous que je n'aurai jamais fait ce module s'il n'y avait pas eu cette option dedans ;).

modifié par : mumuri, 24 Déc 2005 - 00:12
Données personnelles Accueil

Post 
mumuri a écrit :
Gilles a écrit :


pour la 0.8, est-t-il prevu de tout passer sous templates??

A bientôt !


apparement non, (d'aprés la liste paru dans les news).
http://postnuke-france.org/Article19.html


Faux... 0.8 au grand complet est déjà en templates... L'article que tu mentionnes concerne les modules 0.8 utilisés dans la 76x. Et non la liste des modules qui sont ou ne sont pas en templates dans la 0.8.

J'irais pas jusqu'à dire que tu perds ton temps... loin de là...

Mais je suis complètement débordé j'ai pas le temps d'argumenter vraiment... Je repasserai un peu plus tard voir voir un peu ce qui se trame.

En tout cas, C'est pas perdu, je te l'assure. icon_wink


Chestnut !
Administrateur
Aucun Support par message privé...
Même en cas de pensée suicidaire !
Règles à suivre
Données personnelles Accueil

Post 
Oh, il devra bien y avoir un module de news mis en templates... c'est le fondement même de pn à mon avis !


Gilles  ><>°
Données personnelles Accueil

Post 
bon ben j'ai mis une version de ce qui était fait pour l'instant, ca donne une idée de l'état d'avancement du projet ;).

Les variables dynamiques ont pas été rajouté dans le template, mais les fonctions sont faites dans pnuserapi.php ( non testé encore).

si vous pouvez me dire si je dois continuer a developper le module ou pas ca serait cool ...
(autrement quand doit paraitre la 0.8 normalement ?)

modifié par : mumuri, 24 Déc 2005 - 00:34
Données personnelles Accueil

Post 
mumuri a écrit :

si vous pouvez me dire si je dois continuer a developper le module ou pas ca serait cool ...


Que tu veuilles continuer ou non reste ton choix selon l'utilisation que tu en feras. Considérer l'opinion des autres ne sera pas vraiment satisfaisant à long terme (à court terme, il y aura toujours des gens qui te diront qu'ils le veulent) car tu auras fait un hack qui fera peur aux gens au niveau de la mise à jour, de la façon de l'intaller, etc. et lorsque ce que tu es en train de faire se retrouvera dans une version future.

Donc... rien n'empêche de l'avancer, de le diffuser puisque dans tous les cas, cela aura permis d'apprendre... mais il faut le faire avec réserve. Je sais ce que c'est, j'ai fait ma réputation avec le pncUserHack... Et je me suis bien emmerdé.

En ce qui me concerne, je ne peux pas être objectif, je ne peux plus utiliser pnFrance pour ce genre de hack et comme je travaille moi-même sur cette section de la 0.8... et que ce que tu es en train de faire est déjà terminé (il me semble)...

Je sais pas... Moi je continuerais je crois... ne serait-ce que pour avancer.

mumuri a écrit :

(autrement quand doit paraitre la 0.8 normalement ?)

Quand elle sera prête icon_wink Ne pas planifier en fonction de sa sortie.


Chestnut !
Administrateur
Aucun Support par message privé...
Même en cas de pensée suicidaire !
Règles à suivre
Données personnelles Accueil
Post 
disons que pour l'instant je vais continuer ce qui m'est nécéssaire pour mon site et diffuser une version en précisant les risque que prend la personne en installant le module et en l'invitant à regarder le code pour voir si le module lui semble suffisament sécuriser ou pas. disons que le but du module sera d'être une jonction entre la 0.76 et la 0.8

au passage, il me semblait avoir tester le batch de la 0.8 et il ne marchait pas . je vais retenter.

je sais qu'il est toujours préférable de terminer ses modules, mais je manque cruellement de temps et j'ai encore des tas de truc a customizer sur mon site alors que j'avais prévu de le sortir demain.

Citation :
En ce qui me concerne, je ne peux pas être objectif, je ne peux plus utiliser pnFrance pour ce genre de hack et comme je travaille moi-même sur cette section de la 0.8... et que ce que tu es en train de faire est déjà terminé (il me semble)...


de toute maniére pour l'instant c'est un truc qu'il vaut mieux installer en local.

modifié par : mumuri, 24 Déc 2005 - 11:15
Données personnelles Accueil