Skip to content
Snippets Groups Projects
Commit 4e0e8d94 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Protection pour éviter de créer un user de manière intempestive

parent c5e909c5
No related branches found
No related tags found
No related merge requests found
...@@ -235,6 +235,7 @@ class LdapConnecteur extends AbstractService ...@@ -235,6 +235,7 @@ class LdapConnecteur extends AbstractService
if (!$code && $this->isActif()) { if (!$code && $this->isActif()) {
$ldapUser = $this->mapperPeople->findOneByUsername($login); $ldapUser = $this->mapperPeople->findOneByUsername($login);
if (!$ldapUser) return null;
$code = $this->getPeopleAttribute($ldapUser, $this->getUtilisateurCode()); $code = $this->getPeopleAttribute($ldapUser, $this->getUtilisateurCode());
} }
......
...@@ -287,10 +287,7 @@ class IntervenantController extends AbstractController ...@@ -287,10 +287,7 @@ class IntervenantController extends AbstractController
public function saisirAction() public function saisirAction()
{ {
$statutAutres = $this->getServiceStatutIntervenant()->getAutres(); $intervenant = $this->getEvent()->getParam('intervenant');
$role = $this->getServiceContext()->getSelectedIdentityRole();
$intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant');
$title = "Saisie d'un intervenant"; $title = "Saisie d'un intervenant";
$form = $this->getFormIntervenantEdition(); $form = $this->getFormIntervenantEdition();
$errors = []; $errors = [];
...@@ -304,11 +301,6 @@ class IntervenantController extends AbstractController ...@@ -304,11 +301,6 @@ class IntervenantController extends AbstractController
$isNew = !$intervenant; $isNew = !$intervenant;
if (!$intervenant) { if (!$intervenant) {
$intervenant = $this->getServiceIntervenant()->newEntity(); $intervenant = $this->getServiceIntervenant()->newEntity();
$intervenant->setStructure($this->getServiceContext()->getStructure());
$intervenant->setStatut($statutAutres);
$intervenant->setAnnee($this->getServiceContext()->getAnnee());
$intervenant->setSource($this->getServiceSource()->getOse());
$intervenant->setCode(uniqid('OSE'));
} }
if ($actionDetail == 'dupliquer') { if ($actionDetail == 'dupliquer') {
...@@ -332,8 +324,7 @@ class IntervenantController extends AbstractController ...@@ -332,8 +324,7 @@ class IntervenantController extends AbstractController
$form->setData($data); $form->setData($data);
if ((!$form->isReadOnly()) && $form->isValid()) { if ((!$form->isReadOnly()) && $form->isValid()) {
try { try {
$form->protection($intervenant); if ($this->params()->fromPost('userCreate') == '1' && $form->get('login')->getValue() && $form->get('password')->getValue()) {
if ($form->get('login')->getValue() && $form->get('password')->getValue()) {
$nom = $intervenant->getNomUsuel(); $nom = $intervenant->getNomUsuel();
$prenom = $intervenant->getPrenom(); $prenom = $intervenant->getPrenom();
$dateNaissance = $intervenant->getDateNaissance(); $dateNaissance = $intervenant->getDateNaissance();
......
...@@ -296,6 +296,18 @@ class EditionForm extends AbstractForm ...@@ -296,6 +296,18 @@ class EditionForm extends AbstractForm
'type' => 'Hidden', 'type' => 'Hidden',
]); ]);
$this->add([
'name' => 'userChange',
'type' => 'Hidden',
'attributes' => ['value' => '0'],
]);
$this->add([
'name' => 'userCreate',
'type' => 'Hidden',
'attributes' => ['value' => '0'],
]);
$this->add([ $this->add([
'name' => 'submit', 'name' => 'submit',
'type' => 'Submit', 'type' => 'Submit',
...@@ -460,7 +472,18 @@ class EditionForm extends AbstractForm ...@@ -460,7 +472,18 @@ class EditionForm extends AbstractForm
'code' => ['required' => true], 'code' => ['required' => true],
'utilisateur' => ['required' => false], 'utilisateur' => ['required' => false],
'login' => ['required' => false], 'login' => ['required' => false],
'password' => ['required' => false], 'password' => [
'required' => false,
'validators' => [
[
'name' => 'StringLength',
'options' => ['min' => 6],
],
],
'filters' => [
['name' => 'StringTrim'],
],
],
'source' => ['required' => false], 'source' => ['required' => false],
'sourceCode' => ['required' => false], 'sourceCode' => ['required' => false],
'montantIndemniteFc' => ['required' => false], 'montantIndemniteFc' => ['required' => false],
...@@ -491,6 +514,7 @@ class EditionFormHydrator extends GenericHydrator ...@@ -491,6 +514,7 @@ class EditionFormHydrator extends GenericHydrator
{ {
parent::hydrate($data, $object); parent::hydrate($data, $object);
if ($data['userChange'] == '1') {
$login = isset($data['utilisateur']['id']) ? $data['utilisateur']['id'] : null; $login = isset($data['utilisateur']['id']) ? $data['utilisateur']['id'] : null;
if ($login) { if ($login) {
$code = $this->getConnecteurLdap()->getCodeFromLogin($login); $code = $this->getConnecteurLdap()->getCodeFromLogin($login);
...@@ -500,6 +524,7 @@ class EditionFormHydrator extends GenericHydrator ...@@ -500,6 +524,7 @@ class EditionFormHydrator extends GenericHydrator
$object->setUtilisateurCode($code); $object->setUtilisateurCode($code);
} }
}
......
...@@ -25,7 +25,6 @@ use Doctrine\ORM\QueryBuilder; ...@@ -25,7 +25,6 @@ use Doctrine\ORM\QueryBuilder;
* *
* @method Intervenant get($id) * @method Intervenant get($id)
* @method Intervenant[] getList(QueryBuilder $qb = null, $alias = null) * @method Intervenant[] getList(QueryBuilder $qb = null, $alias = null)
* @method Intervenant newEntity()
*/ */
class IntervenantService extends AbstractEntityService class IntervenantService extends AbstractEntityService
{ {
...@@ -375,6 +374,23 @@ class IntervenantService extends AbstractEntityService ...@@ -375,6 +374,23 @@ class IntervenantService extends AbstractEntityService
/**
* @return Intervenant
*/
public function newEntity(): Intervenant
{
$intervenant = parent::newEntity();
$intervenant->setStructure($this->getServiceContext()->getStructure());
$intervenant->setStatut($this->getServiceStatutIntervenant()->getAutres());
$intervenant->setAnnee($this->getServiceContext()->getAnnee());
$intervenant->setSource($this->getServiceSource()->getOse());
$intervenant->setCode(uniqid('OSE'));
return $intervenant;
}
/** /**
* Sauvegarde une entité * Sauvegarde une entité
* *
......
...@@ -128,18 +128,54 @@ if ($errors) { ...@@ -128,18 +128,54 @@ if ($errors) {
this.getChangementEtatBtn().click(function () { this.getChangementEtatBtn().click(function () {
that.changementParDefaut(); that.changementParDefaut();
}); });
this.getLoginElement().change(function () {
that.changementLoginPassword();
});
this.getPasswordElement().change(function () {
that.changementLoginPassword();
});
this.getUserUtilisateurElement().change(function () {
that.changementUtilisateur();
});
}, },
changementParDefaut: function () changementParDefaut: function ()
{ {
console.log('changement par défaut!!!'); var btn = this.getChangementEtatBtn();
if (btn.hasClass('active')) {
btn.removeClass('active');
btn.html('Définir par défaut');
} else {
btn.addClass('active');
btn.html('Ne plus définir par défaut');
}
},
changementLoginPassword: function ()
{
this.getUserCreateElement().val(1);
},
changementUtilisateur: function ()
{
this.getUserChangeElement().val(1);
}, },
getStatutElement: function () { return this.element.find('select[name="statut"]'); }, getStatutElement: function () { return this.element.find('select[name="statut"]'); },
getSyncStatutElement: function () { return this.element.find('input[name="syncStatut"]'); }, getSyncStatutElement: function () { return this.element.find('input[name="syncStatut"]'); },
getStructureElement: function () { return this.element.find('select[name="structure"]'); }, getStructureElement: function () { return this.element.find('select[name="structure"]'); },
getSyncStructureElement: function () { return this.element.find('input[name="syncStructure"]'); }, getSyncStructureElement: function () { return this.element.find('input[name="syncStructure"]'); },
getChangementEtatBtn: function () { return $('#changement-etat-defaut'); } getChangementEtatBtn: function () { return $('#changement-etat-defaut'); },
getUserChangeElement: function () { return this.element.find('input[name="userChange"]'); },
getUserCreateElement: function () { return this.element.find('input[name="userCreate"]'); },
getLoginElement: function () { return this.element.find('input[name="login"]'); },
getPasswordElement: function () { return this.element.find('input[name="password"]'); },
getUserUtilisateurElement: function () { return this.element.find('input[name="utilisateur[id]"]'); }
}); });
WidgetInitializer.add('form-intervenant-edition', 'formIntervenantEdition'); WidgetInitializer.add('form-intervenant-edition', 'formIntervenantEdition');
...@@ -149,6 +185,8 @@ if ($errors) { ...@@ -149,6 +185,8 @@ if ($errors) {
<?php <?php
echo $this->formHidden($form->get('id')); echo $this->formHidden($form->get('id'));
echo $this->formHidden($form->get('userChange'));
echo $this->formHidden($form->get('userCreate'));
echo $this->form()->closeTag(); echo $this->form()->closeTag();
echo ' ' . $this->tag('button', [ echo ' ' . $this->tag('button', [
'onclick' => "$('.form-intervenant-edition').submit();", 'onclick' => "$('.form-intervenant-edition').submit();",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment