This commit is contained in:
KONE SOREL 2026-01-14 17:24:03 +00:00
parent 2ea0cc3563
commit 85ffb82dea
9 changed files with 266 additions and 64 deletions

View File

@ -0,0 +1,14 @@
<?php
require_once 'Framework/Controleur.php';
class ControleurAjaxsaisirpassnewuser extends Controleur {
public function __construct() {
}
public function index() {
$codeModeGenerationPass = $this->requete->getParametreFormulaire("codeModeGenerationPass");
$this->genererVueAjax(array('codeModeGenerationPass' => $codeModeGenerationPass));
}
}

View File

@ -56,9 +56,8 @@ class ControleurAjaxuserrhclient extends Controleur {
$codeLangue, $AffectionVisible, $telephone, $email, $codeProfil);
}
public function creerusergc()
public function creeruser()
{
$codeGcAssureur = $this->requete->getParametreFormulaire("codeGcAssureur");
$codeUtilisateur = $this->requete->getParametreFormulaire("codeUtilisateur");
$nom = $this->requete->getParametreFormulaire("nom");
$prenoms = $this->requete->getParametreFormulaire("prenoms");
@ -72,46 +71,19 @@ class ControleurAjaxuserrhclient extends Controleur {
$codeModeGenerationPass = $this->requete->getParametreFormulaire("codeModeGenerationPass");
$codeModeEnvoiPass = $this->requete->getParametreFormulaire("codeModeEnvoiPass");
/*
echo "codeGcAssureur=>$codeGcAssureur; codeUtilisateur=>$codeUtilisateur; nom=>$nom; prenoms=>$prenoms;
telephone=>$telephone; email=>$email; actVisible=>$actVisible; codeLangue=>$codeLangue;";
exit();
*/
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
if($this->gc->existelogin($codeUtilisateur))
if($this->client->existelogin($codeUtilisateur))
{
$this->genererVueAjax(array('uniciteLogin' => "0", 'msgErreur' => "Login $codeUtilisateur déjà utilisé!"));
}
else
{
$this->gc->creerusergc($codeGcAssureur, $codeUtilisateur, $nom, $prenoms, $telephone, $email, $motPass, $codeLangue, $actVisible,
$AffectionVisible, $codeModeGenerationPass, $codeModeEnvoiPass);
$this->client->creeruser($codeUtilisateur, $nom, $prenoms, $telephone, $email, $motPass, $codeLangue, $actVisible,
$AffectionVisible, $codeModeGenerationPass, $codeModeEnvoiPass, $codeProfil);
$this->genererVueAjax(array('uniciteLogin' => "1", 'msgErreur' => "Utlisateur $codeUtilisateur créé avec succès!"));
}
}
public function gereraccesaffection()
{
$codeUtilisateur = $this->requete->getParametreFormulaire("codeUtilisateur");
$AffectionVisible = $this->requete->getParametreFormulaire("AffectionVisible");
if($AffectionVisible=="1")
{
$AffectionVisible = "0";
}
else
{
$AffectionVisible = "1";
}
$this->gc->gereraccesaffection($codeUtilisateur, $AffectionVisible);
}
public function supprimer(){
$id = $this->requete->getParametreFormulaire("id");
$this->gc->supprimer($id);
}
}

View File

@ -4354,9 +4354,8 @@ function enregistrer_modif_user_rh()
}
function creer_user_gc()
function creer_user_rh_client()
{
codeGcAssureur = $("#codeGcAssureur").val();
codeUtilisateur = $("#codeUtilisateur").val();
codeUtilisateur = codeUtilisateur.trim();
codeUtilisateur = supprimer_espace_string(codeUtilisateur);
@ -4369,10 +4368,12 @@ function creer_user_gc()
prenoms = $("#prenoms").val();
telephone = $("#telephone").val();
email = $("#email").val();
codeProfil = $("#codeProfil").val();
codeLangue = $("#codeLangueUser").val();
actVisible = $("#actVisibleUser").val();
AffectionVisible = $("#AffectionVisibleUser").val();
actVisible = "0";
AffectionVisible = "0";
nvmdp = $("#nvmdp").val();
cfnvmdp = $("#cfnvmdp").val();
@ -4387,14 +4388,6 @@ function creer_user_gc()
return;
}
if(codeGcAssureur<=" ")
{
v_msg="Veuillez sélectionner un garant!";
v_msgEng="Please select a guarantor!";
alert_ebene(v_msg, v_msgEng);
return;
}
if(codeUtilisateur<=" ")
{
@ -4417,25 +4410,17 @@ function creer_user_gc()
return;
}
if (actVisible<=" ")
if (codeProfil<=" ")
{
v_msg="Actes visbles oui ou non?";
v_msgEng="Acts are visible yes or no?";
v_msg="Le profil utilisateur est obligatoire!";
v_msgEng="The user profile is required!";
alert_ebene(v_msg, v_msgEng);
$("#actVisibleUser").focus();
$("#codeProfil").focus();
return;
}
if (AffectionVisible<=" ")
{
v_msg="Affections visbles oui ou non?";
v_msgEng="Affections are visible yes or no?";
alert_ebene(v_msg, v_msgEng);
$("#AffectionVisibleUser").focus();
return;
}
if ((codeModeEnvoiPass=="1" || codeModeEnvoiPass=="2") && (telephone <=" ") )
{
@ -4499,6 +4484,7 @@ function creer_user_gc()
donnees += '&AffectionVisible='+AffectionVisible;
donnees += '&codeModeGenerationPass='+codeModeGenerationPass;
donnees += '&codeModeEnvoiPass='+codeModeEnvoiPass;
donnees += '&codeProfil=' + codeProfil;
v_msg="Confirmez-vous ce nouvel utilisateur?";
v_msgEng="Do you confirm this new user?";
@ -4507,7 +4493,7 @@ function creer_user_gc()
.then((isConfirmed) => {
if (isConfirmed) {
$.ajax({
url: $("#racineWeb").val()+"Ajaxuserrhclient/creerusergc/",
url: $("#racineWeb").val()+"Ajaxuserrhclient/creeruser/",
type : 'post',
data: donnees,
error: function(errorData) {
@ -4665,4 +4651,96 @@ function activer_user_rh_client(codeUtilisateur)
}
});
}
}
function ajax_saisir_pass_new_user()
{
codeModeGenerationPass = $("#codeModeGenerationPass").val();
donnees = 'codeModeGenerationPass='+codeModeGenerationPass;
$.ajax({
url: $("#racineWeb").val()+"Ajaxsaisirpassnewuser/",
type: 'POST',
data: donnees,
success: function(data) {
$("#div_passwd").html(data);
},
error: function(data) {
},
complete: function()
{
if(codeModeGenerationPass=="0")
{
$("#nvmdp").focus();
}
else
{
$("#btn_enreg").focus();
}
}
});
}
function controle_longeur_passe(controle)
{
longueur = controle.value.length;
if(longueur==0)
{
return false;
}
if(longueur<8)
{
v_msg="8 caractères minimum exigé!";
v_msgEng="8 characters minmum required!";
alert_ebene(v_msg, v_msgEng);
controle.value="";
controle.focus();
return false;
}
}
function controle_new_pass()
{
if ($("#nvmdp" ).val()<=' ')
{
v_msg="Veuillez saisir un mot de passe!";
v_msgEng="Please enter a password!";
alert_ebene(v_msg, v_msgEng);
$("#nvmdp").focus();
return false;
}
longueur = $("#nvmdp").val().length;
if(longueur>0 && longueur<8)
{
v_msg="8 caractères minimum exigé!";
v_msgEng="8 characters minmum required!";
alert_ebene(v_msg, v_msgEng);
$("#nvmdp").focus();
return false;
}
if ($("#cfnvmdp" ).val()!=$("#nvmdp" ).val())
{
v_msg="Veuillez confirmer votre mot de passe!";
v_msgEng="Please confirm your password!";
alert_ebene(v_msg, v_msgEng);
$("#nvmdp").focus();
return false;
}
}
function supprimer_espace_string(p_mot)
{
p_mot = p_mot.trim();
p_mot = p_mot.replace(/ /g, "");
return p_mot;
}

View File

@ -349,4 +349,44 @@ class Client extends Modele {
$this->executerRequete($sql, array($codeUtilisateur));
}
public function existelogin($codeUtilisateur) {
$sql = 'select id FROM c_utilisateur WHERE (codeUtilisateur=?)';
$resultat = $this->executerRequete($sql, array($codeUtilisateur));
return ($resultat->rowCount() > 0);
}
public function creeruser($codeUtilisateur, $nom, $prenoms, $telephone, $email, $motPass, $codeLangue,
$actVisible, $AffectionVisible, $codeModeGenerationPass, $codeModeEnvoiPass, $codeProfil)
{
$codeSociete = $_SESSION['codeSociete'];
$user = $_SESSION['login'];
$idClient = $_SESSION['idClient_C'];
$numeroClient = $_SESSION['numeroClient_C'];
$passAutoGen = "";
switch ($codeModeGenerationPass)
{
case "0":
$hash = password_hash($motPass, PASSWORD_DEFAULT);
break;
case "1":
$passAutoGen = uniqid();
$hash = password_hash($passAutoGen, PASSWORD_DEFAULT);
$motPass = $passAutoGen;
break;
case 2:
$hash = "";
break;
default:
$hash = password_hash($motPass, PASSWORD_DEFAULT);
}
$sql = 'call sp_c_creer_user_rh_client(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
$this->executerRequete($sql, array($codeSociete, $idClient, $numeroClient, $codeUtilisateur, $nom, $prenoms, $telephone,
$email, $hash, $codeLangue, $actVisible, $AffectionVisible, $user, $codeModeGenerationPass,
$passAutoGen, $codeModeEnvoiPass, $motPass, $codeProfil));
}
}

View File

@ -0,0 +1,74 @@
<?php if ($codeModeGenerationPass == "0"): ?>
<div class="row g-3 animate__animated animate__fadeIn">
<div class="col-md-6 mb-1">
<label class="form-label small fw-bold required"><?= _("Mot de passe") ?></label>
<div class="input-group shadow-sm">
<span class="input-group-text bg-light"><i class="fas fa-lock text-muted"></i></span>
<input type="password"
id="nvmdp"
name="nvmdp"
class="form-control"
placeholder="<?= _("Saisir le mot de passe") ?>"
onBlur="controle_longeur_passe(this);"
required
autocomplete="new-password">
<button class="btn btn-outline-secondary" type="button" onclick="togglePasswordVisibility('nvmdp')">
<i class="fas fa-eye" id="toggle_nvmdp"></i>
</button>
</div>
<div class="form-text extra-small"><?= _("8 caractères minimum recommandés") ?></div>
</div>
<div class="col-md-6 mb-1">
<label class="form-label small fw-bold required"><?= _("Confirmer le mot de passe") ?></label>
<div class="input-group shadow-sm">
<span class="input-group-text bg-light"><i class="fas fa-check-double text-muted"></i></span>
<input type="password"
id="cfnvmdp"
name="cfnvmdp"
class="form-control"
placeholder="<?= _("Confirmer") ?>"
onBlur="controle_new_pass();"
required
autocomplete="new-password">
<button class="btn btn-outline-secondary" type="button" onclick="togglePasswordVisibility('cfnvmdp')">
<i class="fas fa-eye" id="toggle_cfnvmdp"></i>
</button>
</div>
</div>
</div>
<?php else : ?>
<input type="hidden" id="nvmdp" name="nvmdp" value="">
<input type="hidden" id="cfnvmdp" name="cfnvmdp" value="">
<div class="alert alert-info d-flex align-items-center shadow-sm border-0" role="alert">
<i class="fas fa-magic me-2"></i>
<div>
<?= _("Le mot de passe sera généré automatiquement selon le mode choisi.") ?>
</div>
</div>
<?php endif; ?>
<script>
/**
* Alterne l'affichage du mot de passe entre texte et masqué
*/
function togglePasswordVisibility(id) {
const input = document.getElementById(id);
const icon = document.getElementById('toggle_' + id);
if (input.type === "password") {
input.type = "text";
icon.classList.replace('fa-eye', 'fa-eye-slash');
} else {
input.type = "password";
icon.classList.replace('fa-eye-slash', 'fa-eye');
}
}
</script>
<style>
.extra-small { font-size: 0.75rem; color: #6c757d; }
.required:after { content: " *"; color: #dc3545; }
.input-group-text { border-right: none; }
.form-control { border-left: none; }
.form-control:focus { border-left: 1px solid #86b7fe; }
</style>

View File

@ -0,0 +1,24 @@
<div id="div_unicite_login" class="mt-1">
<input type="hidden" id="uniciteLogin" name="uniciteLogin" value="<?= $uniciteLogin ?>">
<?php if (isset($msgErreur)): ?>
<div class="animate__animated animate__shakeX">
<div class="d-flex align-items-center text-danger small fw-bold">
<i class="fas fa-exclamation-circle me-2"></i>
<span><?= $msgErreur ?></span>
</div>
</div>
<script>
// Ajoute une bordure rouge au champ login pour un feedback visuel immédiat
document.getElementById('codeUtilisateur').classList.add('is-invalid');
document.getElementById('codeUtilisateur').focus();
</script>
<?php else: ?>
<script>
// Retire l'état d'erreur si le login est disponible
document.getElementById('codeUtilisateur').classList.remove('is-invalid');
document.getElementById('codeUtilisateur').classList.add('is-valid');
</script>
<?php endif; ?>
</div>

0
Vue/Ajaxuserrhclient/index.php Executable file
View File

View File

@ -104,10 +104,10 @@
</div>
<div class="d-flex justify-content-end gap-2 mt-4">
<button type="button" class="btn btn-light border px-4 fw-bold" onClick="retour_a_users_gc();">
<button type="button" class="btn btn-light border px-4 fw-bold" onClick="retour_a_users_rh_client();">
<i class="fas fa-times me-2"></i><?= _("Annuler") ?>
</button>
<button type="button" id="btn_enreg" class="btn btn-success px-5 fw-bold shadow-sm" onClick="creer_user_gc();">
<button type="button" id="btn_enreg" class="btn btn-success px-5 fw-bold shadow-sm" onClick="creer_user_rh_client();">
<i class="fas fa-check-circle me-2"></i><?= _("Créer le compte") ?>
</button>
</div>

View File

@ -662,7 +662,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Application Scripts -->
<script src="/Js/fonctions.js?ver=2026.01.14.05"></script>
<script src="/Js/fonctions.js?ver=2026.01.14.06"></script>
<script type="text/javascript">
raffraichier_gabarit();