motivation obligatoire si mail non présent dans la liste blanche (ref #145)

This commit is contained in:
afornerot 2020-06-09 15:16:38 +02:00
parent f20eff9b05
commit 6baed4dea7
4 changed files with 84 additions and 25 deletions

View File

@ -195,8 +195,22 @@ class RegistrationController extends Controller
// Récupération des data du formulaire // Récupération des data du formulaire
$form->handleRequest($request); $form->handleRequest($request);
// si mode de registration byuser
if($moderegistration=="byuser") {
$idstatut=2;
}
else {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $em->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
$idstatut=(!$whitelist?1:2);
}
$statut = $em->getRepository("CadolesCoreBundle:Statut")->find($idstatut);
$data->setStatut($statut);
// Sur erreur // Sur erreur
$this->getErrorForm(null,$form,$request,$data,"submit"); $this->getErrorForm(null,$form,$request,$data,"submit",$idstatut);
// Sur validation(z) // Sur validation(z)
if ($form->get('submit')->isClicked() && $form->isValid()) { if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -219,22 +233,7 @@ class RegistrationController extends Controller
$password = $encoder->encodePassword($data->getPassword(),$data->getSalt()); $password = $encoder->encodePassword($data->getPassword(),$data->getSalt());
$data->setPassword($password); $data->setPassword($password);
*/ */
// si mode de registration byuser
if($moderegistration=="byuser") {
$idstatut=2;
}
else {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $em->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
$idstatut=(!$whitelist?1:2);
}
$statut = $em->getRepository("CadolesCoreBundle:Statut")->find($idstatut);
$data->setStatut($statut);
// si non : validation par administrateur // si non : validation par administrateur
if($idstatut==1) { if($idstatut==1) {
// Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider // Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider
@ -287,10 +286,17 @@ class RegistrationController extends Controller
} }
$url = $this->generateUrl('cadoles_core_config_registration', [], UrlGeneratorInterface::ABSOLUTE_URL); $url = $this->generateUrl('cadoles_core_config_registration', [], UrlGeneratorInterface::ABSOLUTE_URL);
$motivation = "Login = ".$data->getUsername()."\n";
$motivation.= "Nom = ".$data->getLastname()."\n";
$motivation.= "Prénom = ".$data->getFirstname()."\n";
$motivation.= "Mail = ".$data->getEmail()."\n";
$motivation.= $this->getParameter("labelniveau01")." = ".$data->getNiveau01()->getLabel()." ".$data->getNiveau01other()."\n\n";
$motivation.= $data->getMotivation();
$mail_params=array( $mail_params=array(
"subject" => $appname." : Inscription à valider", "subject" => $appname." : Inscription à valider",
"body_html"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.<br><br>Veuillez vérifier cette inscription à cette adresse:<br><a href='$url'>$url</a>", "body_html"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.<br><br>Veuillez vérifier cette inscription à cette adresse:<br><a href='$url'>$url</a><br><br>".nl2br($motivation),
"body_text"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.\n\nVeuillez vérifier cette inscription à cette adresse:\n$url" "body_text"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.\n\nVeuillez vérifier cette inscription à cette adresse:\n$url\n\n".$motivation
); );
$message = $this->container->get('cadoles.core.service.mail'); $message = $this->container->get('cadoles.core.service.mail');
@ -386,7 +392,7 @@ class RegistrationController extends Controller
$form->handleRequest($request); $form->handleRequest($request);
// Sur erreur // Sur erreur
$this->getErrorForm($id,$form,$request,$data,"send"); $this->getErrorForm($id,$form,$request,$data,"send",null);
// Sur validation // Sur validation
if ($form->get('save')->isClicked() && $form->isValid()) { if ($form->get('save')->isClicked() && $form->isValid()) {
@ -581,7 +587,7 @@ class RegistrationController extends Controller
$form->handleRequest($request); $form->handleRequest($request);
// Sur erreur // Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete"); $this->getErrorForm($id,$form,$request,$data,"delete",null);
// Sur validation // Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) { if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -838,7 +844,7 @@ class RegistrationController extends Controller
} }
protected function getErrorForm($id,$form,$request,$data,$mode) { protected function getErrorForm($id,$form,$request,$data,$mode,$idstatut) {
if ($form->get('submit')->isClicked()&&$mode=="delete") { if ($form->get('submit')->isClicked()&&$mode=="delete") {
} }
@ -867,6 +873,12 @@ class RegistrationController extends Controller
$form->addError(new FormError("Merci d'indiquer votre ".$this->getParameter("labelniveau01"))); $form->addError(new FormError("Merci d'indiquer votre ".$this->getParameter("labelniveau01")));
} }
} }
// Si validation par administrateur demander une motivation
if(is_null($data->getMotivation() )) {
$form->addError(new FormError("Attention, le suffixe de votre adresse mail nest pas dans la liste des administrations autorisées, merci de bien vouloir privilégier votre adresse professionnelle si vous en avez une.<br>Si ce nest pas le cas, il faut que vous renseigniez la case motivation de votre demande"));
}
} }
if ($form->get('submit')->isClicked() && !$form->isValid()) { if ($form->get('submit')->isClicked() && !$form->isValid()) {

View File

@ -127,7 +127,12 @@ class Registration implements UserInterface, \Serializable
* @ORM\Column(type="string", length=150, nullable=true) * @ORM\Column(type="string", length=150, nullable=true)
*/ */
private $niveau01other; private $niveau01other;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $motivation;
/** /**
* @ORM\Column(type="integer", length=60, nullable=true) * @ORM\Column(type="integer", length=60, nullable=true)
*/ */
@ -767,4 +772,28 @@ class Registration implements UserInterface, \Serializable
{ {
return $this->niveau01other; return $this->niveau01other;
} }
/**
* Set motivation
*
* @param string $motivation
*
* @return Registration
*/
public function setMotivation($motivation)
{
$this->motivation = $motivation;
return $this;
}
/**
* Get motivation
*
* @return string
*/
public function getMotivation()
{
return $this->motivation;
}
} }

View File

@ -307,6 +307,14 @@ class RegistrationType extends AbstractType
} }
} }
$builder->add('motivation',
TextareaType::class, array(
"label" => "Motivation",
"required" => false,
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px; height: 90px")
)
);
} }
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)

View File

@ -32,7 +32,7 @@
<div class='alert alert-danger' style='margin: 5px 0px'> <div class='alert alert-danger' style='margin: 5px 0px'>
<strong>Erreur</strong><br> <strong>Erreur</strong><br>
{% for flashMessage in app.session.flashbag.get('error') %} {% for flashMessage in app.session.flashbag.get('error') %}
{{ flashMessage }}<br> {{ flashMessage | raw }}<br>
{% endfor %} {% endfor %}
</div> </div>
{% endif %} {% endif %}
@ -41,7 +41,7 @@
<div class='alert alert-info' style='margin: 5px 0px'> <div class='alert alert-info' style='margin: 5px 0px'>
<strong>Information</strong><br> <strong>Information</strong><br>
{% for flashMessage in app.session.flashbag.get('notice') %} {% for flashMessage in app.session.flashbag.get('notice') %}
{{ flashMessage }}<br> {{ flashMessage | raw }}<br>
{% endfor %} {% endfor %}
</div> </div>
{% endif %} {% endif %}
@ -94,6 +94,16 @@
{% if form.visible is defined %} {{ form_row(form.visible) }} {% endif %} {% if form.visible is defined %} {{ form_row(form.visible) }} {% endif %}
</div> </div>
</div> </div>
<div class="panel panel-primary">
<div class="panel-heading">
<i class="fa fa-pencil fa-fw"></i> Motivations
</div>
<div class="panel-body">
{{ form_row(form.motivation) }}
</div>
</div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">