Commit 94af66ca authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Possibilité de créer un nouvel utilisateur en ligne de commande

parent 5c010bba
......@@ -20,6 +20,8 @@ author: Laurent Lécluse - DSI - Unicaen
* Le logo Unicaen n'est plus fourni par défaut dans l'interface de OSE en pied de page
* Le lien "Informatique et libertés" est remplacé par un nouveau lien "Vie privée"
* Interface de gestion des motifs de non paiement
* Possibilité de créer un nouvel utilisateur dans OSE déconnecté du LDAP, ainsi qu'une fiche intervenant.
* [Documentation de la ligne de commande OSE](doc/ligne-de-commande.md)
## Notes de mise à jour
......
<?php
$c->println("\nCréation d'un nouveau compte utilisateur", $c::COLOR_LIGHT_CYAN);
$c->println('Fonctionnalité en cours de développement : non exploitable pour le moment', $c::BG_RED);
$params = $c->getInputs([
'nom' => 'Nom de l\'utilisateur',
......@@ -12,4 +11,7 @@ $params = $c->getInputs([
'creer-intervenant' => ['description' => 'Voulez-vous créer un intervenant pour cet utilisateur ? (O ou Y pour oui)', 'type' => 'bool'],
]);
var_export($params);
\ No newline at end of file
$params['date-naissance'] = $params['date-naissance']->format('d/m/Y');
$params = base64_encode(json_encode($params));
$oa->exec("creer-utilisateur --data=$params");
\ No newline at end of file
......@@ -7,6 +7,7 @@ $actions = [
"chargens-calcul-effectifs" => "Calcul des effectifs du module Charges",
"calcul-tableaux-bord" => "Recalcule tous les tableaux de bord de calculs itermédiaires",
"formule-calcul" => "Calcul de toutes les heures complémentaires à l'aide de la formule",
"creer-utilisateur" => "Création d'un nouvel utilisateur de OSE. Possibilité de créer une fiche intervenant dans la foulée",
"changement-mot-de-passe" => "Changement de mot de passe (pour un utilisateur local uniquement)",
"maj-public-links" => "Mise à jour des liens vers les répertoires publics des dépendances",
"clear-cache" => "Vidage du cache de l'application",
......
# Documentation de la ligne de comande
## Lancer la ligne de commande OSE
* Lancer un terminal
* Se positionner dans le répertoire de OSE
* Lancer ```./bin/ose <action> <paramètres éventuels>```
Pour information, ./bin/ose help vous affichera la liste des actions disponibles.
## Liste des actions possibles
### ```update``` : Mise à jour de l'application
Plus d'infos sur la procédure de mise à jour ici :
[Procédure de mise à jour](../UPDATE.md).
### ```notifier-indicateurs``` : Envoi des mails relatifs aux indicateurs
Pas de paramètre pour cette commande.
### ```synchronisation``` : ```job``` : Effectue la synchronisation des données pour le ```job``` transmis
Pas de paramètre pour cette commande.
### ```chargens-calcul-effectifs``` : Calcul des effectifs du module Charges
Pas de paramètre pour cette commande.
### ```calcul-tableaux-bord``` : Recalcule tous les tableaux de bord de calculs itermédiaires
Pas de paramètre pour cette commande.
Attention : le temps de traitement peut être long!
### ```formule-calcul``` : Calcul de toutes les heures complémentaires à l'aide de la formule
Pas de paramètre pour cette commande.
Attention : le temps de traitement peut être long!
### ```creer-utilisateur``` : Création d'un nouvel utilisateur de OSE (hors LDAP).
Utile pour créer un utilisateur (personnel ou intervenant) non présent dans le LDAP
Vous pourrez également créer une fiche intervenant dans la foulée pour ce nouvel utilisateur.
une fois l'utilisateur créé, vous pourrez aller dans OSE, Administration, Affectations pour lui donner une nouvelle affectation.
Attention : l'**utilisateur** ne pourra se **connecter** directement à OSE **que si** l'application n'est **pas cassifiée**.
Paramètres possibles :
* ```nom``` : Nom de l\'utilisateur
* ```prenom``` : Prénom
* ```date-naissance``` : Date de naissance (format jj/mm/aaaa)
* ```login``` : Login
* ```mot-de-passe``` : Mot de passe (6 caractères minimum)
* ```creer-intervenant``` : Voulez-vous créer un intervenant pour cet utilisateur ?
Exemple de commande lancée avec des paramètres :
```bash
./bin/ose creer-utilisateur\
--nom="Lécluse"\
--prenom="Laurent\
--date-naissance="01/01/1990"
--login="lecluse"
--mot-de-passe="mon-mdp-caché"
--creer-intervenant=n
```
### ```changement-mot-de-passe``` : Changement de mot de passe (pour un utilisateur local uniquement)
Pas de paramètre pour cette commande.
Deux informations vous seront demandées :
* le login de l'utilisateur
* le nouveau mot de passe à saisir, ainsi que sa confirmation
Valable uniquement pour des utilisateurs non connectés au LDAP!!
### ```maj-public-links``` : Mise à jour des liens vers les répertoires publics des dépendances
Pas de paramètre pour cette commande.
### ```clear-cache``` : Vidage du cache de l'application
Pas de paramètre pour cette commande.
### ```test-bdd``` : Test d'accès à la base de données
Affiche si la base de données est accessible ou non.
Pas de paramètre pour cette commande.
......@@ -15,6 +15,15 @@ return [
],
],
],
'creer-utilisateur' => [
'options' => [
'route' => 'creer-utilisateur [--data=]',
'defaults' => [
'controller' => 'Application\Controller\Utilisateur',
'action' => 'creation',
],
],
],
],
],
],
......
......@@ -69,4 +69,22 @@ class UtilisateurController extends BaseController
$this->getServiceUtilisateur()->changerMotDePasse($userObject, $motDePasse);
}
public function creationAction()
{
$data = $this->getRequest()->getParam('data');
$data = json_decode(base64_decode($data));
$data->{'date-naissance'} = \DateTime::createFromFormat('d/m/Y', $data->{'date-naissance'});
$this->getServiceUtilisateur()->creerUtilisateur(
$data->nom,
$data->prenom,
$data->{'date-naissance'},
$data->login,
$data->{'mot-de-passe'},
$data->{'creer-intervenant'}
);
}
}
\ No newline at end of file
<?php
namespace Application\Service;
use Application\Entity\Db\Utilisateur;
use Doctrine\ORM\EntityRepository;
use Zend\Stdlib\Hydrator\HydratorInterface;
use Zend\Stdlib\Hydrator\ObjectProperty;
......@@ -432,6 +433,16 @@ abstract class AbstractEntityService extends AbstractService
if ($serviceEntityClass != $entityClass && !is_subclass_of($entity, $serviceEntityClass)) {
throw new \RuntimeException('L\'entité transmise n\'est pas de la classe ' . $serviceEntityClass . '.');
}
if ($entity instanceof HistoriqueAwareInterface){
if (!$entity->getHistoCreateur()){
/** @var UtilisateurService $utilisateurService */
$utilisateurService = \Application::$container->get(UtilisateurService::class);
$entity->setHistoCreateur($utilisateurService->getOse());
}
}
$this->getEntityManager()->persist($entity);
$this->getEntityManager()->flush($entity);
......
......@@ -80,7 +80,7 @@ class IntervenantService extends AbstractEntityService
{
if (empty($sourceCode)) return null;
$sql = 'SELECT ID FROM INTERVENANT WHERE '.$column.' IN (:value)';
$sql = 'SELECT ID FROM INTERVENANT WHERE ' . $column . ' IN (:value)';
if ($anneeId) {
$sql .= ' AND ANNEE_ID = ' . (string)(int)$anneeId;
}
......@@ -209,7 +209,7 @@ class IntervenantService extends AbstractEntityService
*/
public function save($entity)
{
if (!$entity->getSource()){
if (!$entity->getSource()) {
$entity->setSource($this->getServiceSource()->getOse());
}
......@@ -329,10 +329,16 @@ class IntervenantService extends AbstractEntityService
*
* @return Intervenant
*/
public function creerIntervenant(string $nom, string $prenom, \DateTime $dateNaissance, string $statut=null): Intervenant
public function creerIntervenant(string $nom, string $prenom, \DateTime $dateNaissance, string $statut = null): Intervenant
{
$code = uniqid('OSE');
if ($statut) {
$statutEntity = $this->getServiceStatutIntervenant()->getByCode($statut);
} else {
$statutEntity = $this->getServiceStatutIntervenant()->getAutres();
}
$intervenant = new Intervenant;
$intervenant->setAnnee($this->getServiceContext()->getAnnee());
$intervenant->setCode($code);
......@@ -343,10 +349,12 @@ class IntervenantService extends AbstractEntityService
$intervenant->setNomUsuel($nom);
$intervenant->setPrenom($prenom);
$intervenant->setDateNaissance($dateNaissance);
$intervenant->setStatut($this->getServiceStatutIntervenant()->getByCode($statut));
$intervenant->setStatut($statutEntity);
$this->save($intervenant);
$this->getServiceWorkflow()->calculerTableauxBord([], $intervenant);
return $intervenant;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment