Evolution #118

Création de comptes usagers en ligne de commande

Added by Grégory MARIGOT - TEICEE over 10 years ago. Updated about 10 years ago.

Status:Fermé Start date:11/16/2011
Priority:Normal Due date:
Assignee:Grégory MARIGOT - TEICEE % Done:

100%

Category:-
Target version:ProxyEPN 2.2
Version ProxyEPN:2.1

Description

Suite à ce message d'Eric Seigne sur le forum : [résolu] Interface CLI pour gestion des utilisateurs

Réalisation d'une nouvelle tâche Symfony, nommée proxyepn:user-create, permettant de créer une compte usager depuis la ligne de commande.


Related issues

related to Evolution #131: Création de GEPN/EPN en ligne de commande Fermé 09/07/2012

Associated revisions

Revision 523
Added by Grégory MARIGOT - TEICEE over 10 years ago

NEW #118: Nouvelle tâche permettant la création d'un compte usager en CLI

Revision 525
Added by Grégory MARIGOT - TEICEE over 10 years ago

FIX #118: Ajout d'un include sur le helper proxyepn

Revision 526
Added by Grégory MARIGOT - TEICEE over 10 years ago

FIX #118: Ajout d'un include sur le helper proxyepn (suite r525, non commenté cette fois)

Revision 533
Added by Grégory MARIGOT - TEICEE over 10 years ago

NEW #118, #122: Compléments sur la documentation des tâches

Revision 544
Added by Grégory MARIGOT - TEICEE over 10 years ago

NEW #118: Nouvelle tâche permettant la modification d'un compte usager en CLI

History

Updated by Grégory MARIGOT - TEICEE over 10 years ago

  • Status changed from Nouveau to In Progress
  • Assignee set to Grégory MARIGOT - TEICEE
  • % Done changed from 0 to 80

Modifications publiées sur le svn (r523) :

Ajout du script lib/task/proxyepnUserCreateTask.class.php (utilisant une nouvelle méthode du fichier lib/model/sfGuardUser.php).

# ./symfony help proxyepn:user-create
Usage:
 symfony proxyepn:user-create [--application="..."] [--env="..."] [--connection="..."]
 [-v|--verbose] [-T|--test] [--expire[="..."]] [--profile[="..."]] [--title[="..."]]
 [--email[="..."]] [--phone1[="..."]] [--phone2[="..."]] [--insee[="..."]] [--postal[="..."]]
 [--town[="..."]] [--address[="..."]] epn lastname firstname birthday sex [username] [password]

Arguments:
 epn            Id de l'EPN d'origine
 lastname       Nom de l'usager
 firstname      Prénom de l'usager
 birthday       Date de naissance
 sex            Sexe de l'usager ( M | F )
 username       Identifiant de connexion
 password       Mot de passe de l'usager

Options:
 --application  The application name (default: frontend)
 --env          The environment (default: dev)
 --connection   The connection name (default: propel)
 --verbose      (-v) Enables verbose output
 --test         (-T) Test only - no action
 --expire       Date d'expiration du compte
 --profile      Id du profil d'accès Internet
 --title        Titre ( M | Mme | Mlle )
 --email        Adresse email de l'usager
 --phone1       Numéro de téléphone principal
 --phone2       Numéro de téléphone secondaire
 --insee        Code INSEE de la localité
 --postal       Code postal de la ville
 --town         Nom de la ville
 --address      Complément d'adresse

Description:
 The proxyepn:user-create task does things.
 Call it with:

     php symfony proxyepn:user-create

Updated by Eric Seigne over 10 years ago

Bonsoir,
après quelques heures pour coder la passerelle, je teste et j'ai cette erreur:

Fatal error: Call to undefined function format_phone() in /var/www/proxyepn/lib/model/sfGuardUserProfile.php on line 172

es-ce lié au fait que je soit partis de la version 2.1 et non du SVN complet ?

Pour faire simple: j'ai pris la version 2.1 et j'ai ensuite pioché les deux scripts indiqués. Je vais creuser un peu mais c'est pour faire un feedback rapide :)

Merci encore,
Éric

Updated by Eric Seigne over 10 years ago

Pour palier temporairement au problème indiqué j'ai juste ajouté la ligne suivante dans proxyepn/lib/model/sfGuardUserProfile.php

include("lib/helper/ProxyepnHelper.php");

Je lance mon export/import et vous tiens au courant.

Éric

Updated by Grégory MARIGOT - TEICEE over 10 years ago

Les tâches de Symfony sont parfois assez succeptibles... J'avais en effet déjà dû rajouter le chargement du helper. Mais ici étrangement, cela fonctionne chez moi sans avoir à le spécifier...

Enfin bref je l'ai remis (r525) : je place plutot l'include en question dans lib/task/proxyepnUserCreateTask.class.php plutot que lib/model/sfGuardUserProfile.php

Cela devrait résoudre tout problème, en tout cas je l'espère.

Updated by Grégory MARIGOT - TEICEE over 10 years ago

Nouvelle modification r526 : j'ai décommenté la ligne contenant l'include, c'est mieux...

Updated by Grégory MARIGOT - TEICEE over 10 years ago

  • Status changed from In Progress to Résolu
  • % Done changed from 80 to 100

Modifications publiées sur le svn (r533) :

A présent toutes les tâches se chargent systématiquement d'initialiser l'encodage interne à utiliser. Ceci évite de devoir penser à le préciser quand nécessaire (exemple avec la fonction de canonisation à la génération des identifiants).

Une description a été ajoutée pour cette tâche :

Description:
 The proxyepn:user-create task create a new user's account.
 The account must be attached to a structure given by its database Id.
 By default the username is automatically generated with firstame and lastname (unique).
 The password can also be generated (with random chunks of words).
 The locality should be indicated by INSEE code or could be guessed with town and/or postal code.

Comme indiqué, l'identifiant ainsi que le mot de passe sont facultatifs : s'ils ne sont pas spécifiés dans les paramétres ils seront générés automatiquement.
  • les identifiants sont de la forme "prenom.nom", avec conversion des caractères vers uniquement 'a-z' et '.', plus un éventuel compteur numérique en cas de doublon (controle d'unicité intégré).
  • les mots de passes font 8 caractères (6 lettres + 2 chiffres) aléatoire, mais les lettres sont extraites de mots existants par bloc de 2 pour générer des mots plus ou moins prononçable.

La localité de l'usager est normalement indiquée par le code INSEE de la commune. A défaut, il est possible d'utiliser les paramètres --town et/ou --postal pour indiquer le nom de la ville / code postal. Dans ce cas plusieurs recherches seront effectuées (de la plus fine à la plus vague) pour tenter de retrouver automatiquement le code INSEE correspondant.

Concernant les dates, la valeur des paramètres peut être soit un timestamp, soit une syntaxe compatible DateTime (la date d'expiration par défaut est "+1 year")

Updated by Eric Seigne over 10 years ago

Bonjour,

un rapide retour après quelques jours d'utilisation: impec, tout marche bien.

Merci encore,
Éric

Updated by Grégory MARIGOT - TEICEE over 10 years ago

Modifications publiées sur le svn (r544) :

Pour compléter le script de création d'usager et suite à ce message d'Eric Seigne sur le forum : [résolu] Interface CLI pour mise à jour de compte utilisa... , une nouvelle tâche Symfony nommée proxyepn:user-update permet de modifier un compte usager depuis la ligne de commande.

# ./symfony help proxyepn:user-update
Usage:
 symfony proxyepn:user-update [--application="..."] [--env="..."] [--connection="..."]
 [-v|--verbose] [-T|--test] [--epn[="..."]] [--lastname[="..."]] [--firstname[="..."]]
 [--birthday[="..."]] [--sex[="..."]] [--username[="..."]] [--password[="..."]]
 [--expire[="..."]] [--profile[="..."]] [--title[="..."]] [--email[="..."]]
 [--phone1[="..."]] [--phone2[="..."]] [--insee[="..."]]
 [--postal[="..."]] [--town[="..."]] [--address[="..."]] id

Arguments:
 id             Id ou référence de la fiche usager

Options:
 --application  The application name (default: frontend)
 --env          The environment (default: prod)
 --connection   The connection name (default: propel)
 --verbose      (-v) Enables verbose output
 --test         (-T) Test only - no action
 --epn          Id de l'EPN d'origine
 --lastname     Nom de l'usager
 --firstname    Prénom de l'usager
 --birthday     Date de naissance
 --sex          Sexe de l'usager ( M | F )
 --username     Identifiant de connexion
 --password     Mot de passe de l'usager
 --expire       Date d'expiration du compte
 --profile      Id du profil d'accès Internet
 --title        Titre ( M. | Mme | Mlle )
 --email        Adresse email de l'usager
 --phone1       Numéro de téléphone principal
 --phone2       Numéro de téléphone secondaire
 --insee        Code INSEE de la localité
 --postal       Code postal de la ville
 --town         Nom de la ville
 --address      Complément d'adresse

Description:
 The proxyepn:user-update task update an existing user's account.
 You must specify the account to update either by database id or user's reference.
 The locality should be indicated by INSEE code or could be guessed with town and/or postal code.

 Call it with:

     php symfony proxyepn:user-update

Updated by Eric Seigne over 10 years ago

Bonsoir,
juste une petite remarque qui est peut-être liée à mon installation, l'option --quiet ne semble pas marcher lorsque j'utilise la tâche user-update: j'ai systématiquement ceci

>> sfPatternRouting Connect sfPropelRoute "sf_guard_user" (/sf_guard_user.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_new" (/sf_guard_user/new.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_create" (/sf_guard_user.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_edit" (/sf_guard_user/:id/edit.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_update" (/sf_guard_user/:id.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_delete" (/sf_guard_user/:id.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_show" (/sf_guard_user/:id.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_object" (/sf_guard_user/:id/:action.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_user_collection" (/sf_guard_user/:action/action.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group" (/sf_guard_group.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_new" (/sf_guard_group/new.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_create" (/sf_guard_group.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_edit" (/sf_guard_group/:id/edit.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_update" (/sf_guard_group/:id.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_delete" (/sf_guard_group/:id.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_show" (/sf_guard_group/:id.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_object" (/sf_guard_group/:id/:action.:sf_format)
>> sfPatternRouting Connect sfPropelRoute "sf_guard_group_collection" (/sf_guard_group/:action/action.:sf_format)
>> sfPatternRouting Match route "homepage" (/) for / with parameters array (  'module' => 'default',  'action' => 'index',)
>> myUser Add credential(s) "LIST_STRUCTURE_GROUP" 
>> myUser Add credential(s) "SHOW_STRUCTURE_GROUP" 
>> myUser Add credential(s) "LIST_STRUCTURE" 
>> myUser Add credential(s) "SHOW_STRUCTURE" 
>> myUser Add credential(s) "LIST_SESSION" 
>> myUser Add credential(s) "visitor" 

C'est peut-être lié à un truc chez nous mais je signale au cas-ou.

Pour le reste ça marche très bien, merci encore !

Éric

Updated by Grégory MARIGOT - TEICEE over 10 years ago

Eric Seigne a écrit :

juste une petite remarque qui est peut-être liée à mon installation, l'option --quiet ne semble pas marcher lorsque j'utilise la tâche user-update: j'ai systématiquement ceci

J'ai déjà vu ce genre de sortie en exécutant des taches, il me semble que celà dépend de l'environnement symfony utilisé et qu'il s'agit d'infos de debuggage du mode 'dev'.

Essayez en précisant l'option '--env=prod' et ces infos ne devraient plus apparaitre.

D'ailleurs pour éviter ce genre de soucis/oubli, j'ai modifié l'ensemble des scripts il y a environs une semaine (cf r538) pour qu'ils soient configurés par défaut avec l'environnement 'prod' au lieu de 'dev'.

Updated by Eric Seigne over 10 years ago

Rapé, je suis déjà en env=prod ... mais je verrais plus tard pour avoir plus de détails :)

Updated by Grégory MARIGOT - TEICEE over 10 years ago

Eric Seigne a écrit :

Rapé, je suis déjà en env=prod ... mais je verrais plus tard pour avoir plus de détails :)

Sans doute encore un bug typique des tâches de symfony... J'ai déjà remarqué qu'elles étaient très capricieuses, en particulier quand il s'agit d'exploiter l'environnement général du projet (y compris des soucis avec le cache, les chemin des classes et leurs priorités, l'usage d'extensions...).

Comme le paramètre env=prod a été modifié récemment, peut-être qu'un nettoyage du cache (./symfony cc) serait utile pour les remettre dans le droit chemin... Personnellement je suis devenu bête et méchant et j'ai pris l'habitude d'exécuter le script ./rebuild.sh après chaque update des sources.

En espérant ne pas lire en réponse "Rapé, j'avais déjà fait un rebuild" ;')

Updated by Grégory MARIGOT - TEICEE about 10 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF