Evolution #118
ferméCréation de comptes usagers en ligne de commande
Ajouté par Grégory MARIGOT - TEICEE il y a environ 13 ans. Mis à jour il y a plus de 12 ans.
100%
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.
Mis à jour par Grégory MARIGOT - TEICEE il y a environ 13 ans
- Statut changé de Nouveau à In Progress
- Assigné à mis à Grégory MARIGOT - TEICEE
- % réalisé changé de 0 à 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
Mis à jour par Eric Seigne il y a environ 13 ans
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
Mis à jour par Eric Seigne il y a environ 13 ans
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
Mis à jour par Grégory MARIGOT - TEICEE il y a environ 13 ans
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.
Mis à jour par Grégory MARIGOT - TEICEE il y a environ 13 ans
Nouvelle modification r526 : j'ai décommenté la ligne contenant l'include, c'est mieux...
Mis à jour par Grégory MARIGOT - TEICEE il y a presque 13 ans
- Statut changé de In Progress à Résolu
- % réalisé changé de 80 à 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")
Mis à jour par Eric Seigne il y a presque 13 ans
Bonjour,
un rapide retour après quelques jours d'utilisation: impec, tout marche bien.
Merci encore,
Éric
Mis à jour par Grégory MARIGOT - TEICEE il y a presque 13 ans
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
Mis à jour par Eric Seigne il y a presque 13 ans
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
Mis à jour par Grégory MARIGOT - TEICEE il y a presque 13 ans
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'.
Mis à jour par Eric Seigne il y a presque 13 ans
Rapé, je suis déjà en env=prod ... mais je verrais plus tard pour avoir plus de détails :)
Mis à jour par Grégory MARIGOT - TEICEE il y a presque 13 ans
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" ;')
Mis à jour par Grégory MARIGOT - TEICEE il y a plus de 12 ans
- Statut changé de Résolu à Fermé