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
$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
$this->getErrorForm(null,$form,$request,$data,"submit");
$this->getErrorForm(null,$form,$request,$data,"submit",$idstatut);
// Sur validation(z)
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -219,22 +233,7 @@ class RegistrationController extends Controller
$password = $encoder->encodePassword($data->getPassword(),$data->getSalt());
$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
if($idstatut==1) {
// 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);
$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(
"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_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_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\n\n".$motivation
);
$message = $this->container->get('cadoles.core.service.mail');
@ -386,7 +392,7 @@ class RegistrationController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"send");
$this->getErrorForm($id,$form,$request,$data,"send",null);
// Sur validation
if ($form->get('save')->isClicked() && $form->isValid()) {
@ -581,7 +587,7 @@ class RegistrationController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete");
$this->getErrorForm($id,$form,$request,$data,"delete",null);
// Sur validation
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") {
}
@ -867,6 +873,12 @@ class RegistrationController extends Controller
$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()) {

View File

@ -127,7 +127,12 @@ class Registration implements UserInterface, \Serializable
* @ORM\Column(type="string", length=150, nullable=true)
*/
private $niveau01other;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $motivation;
/**
* @ORM\Column(type="integer", length=60, nullable=true)
*/
@ -767,4 +772,28 @@ class Registration implements UserInterface, \Serializable
{
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)

View File

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