templates/patient/auth/index.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Santé+</title>
  8.     <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,500,600,300,700,800,900" rel="stylesheet"
  9.         type="text/css">
  10.     <link href="https://cdn.imperium.plus/assets/css/bootstrap/v4.0/bootstrap.min.css" rel="stylesheet" type="text/css">
  11.     <link href="https://cdn.imperium.plus/assets/fonts/fontawesome/v5.11.2/css/all.css" rel="stylesheet"
  12.         type="text/css">
  13.     <link href="https://cdn.imperium.plus/assets/css/sweetalert/v01/sweetalert.css" rel="stylesheet" type="text/css">
  14.     <link rel="stylesheet" href="/assets/css/main.css">
  15.     <link href="/assets/css/auth/authentification.css" rel="stylesheet" type="text/css">
  16.     <style>
  17.         @keyframes ldio-japzwhp0h9j {
  18.             0% {
  19.                 top: 96px;
  20.                 left: 96px;
  21.                 width: 0;
  22.                 height: 0;
  23.                 opacity: 1;
  24.             }
  25.             100% {
  26.                 top: 18px;
  27.                 left: 18px;
  28.                 width: 156px;
  29.                 height: 156px;
  30.                 opacity: 0;
  31.             }
  32.         }
  33.         .ldio-japzwhp0h9j div {
  34.             position: absolute;
  35.             border-width: 4px;
  36.             border-style: solid;
  37.             opacity: 1;
  38.             border-radius: 50%;
  39.             animation: ldio-japzwhp0h9j 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
  40.         }
  41.         .ldio-japzwhp0h9j div:nth-child(1) {
  42.             border-color: #e90c59;
  43.             animation-delay: 0s;
  44.         }
  45.         .ldio-japzwhp0h9j div:nth-child(2) {
  46.             border-color: #46dff0;
  47.             animation-delay: -0.5s;
  48.         }
  49.         .loadingio-spinner-ripple-wsf5cxo48ch {
  50.             width: 200px;
  51.             height: 200px;
  52.             display: inline-block;
  53.             overflow: hidden;
  54.         }
  55.         .ldio-japzwhp0h9j {
  56.             width: 100%;
  57.             height: 100%;
  58.             position: relative;
  59.             transform: translateZ(0) scale(1);
  60.             backface-visibility: hidden;
  61.             transform-origin: 0 0;
  62.             /* see note above */
  63.         }
  64.         .ldio-japzwhp0h9j div {
  65.             box-sizing: content-box;
  66.         }
  67.         [x-cloak] {
  68.             display: none !important;
  69.         }
  70.         .sante-input-validator{
  71.             border-color: #dc3545 !important;
  72.         }
  73.     </style>
  74.     <script src="https://cdn.imperium.plus/assets/js/jquery/v3.1/jquery.min.js"></script>
  75.     {#
  76.     <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.12.1/dist/cdn.min.js"></script> #}
  77. </head>
  78. <body>
  79.     <!-- Section Authentification -->
  80.     <!-- You can use class 'Praticien' for doctor  or  class 'AuthPatient' for patient -->
  81.     <section class="Authentification AuthPatient" id="Authentification" x-data="authentification">
  82.         <div class="AuthentificationContent">
  83.             <!-- Bloc logo & description -->
  84.             <div class="log">
  85.                 <img src="/assets/images/logo.png" alt="" title="">
  86.                 <p class="pHead">
  87.                     Sed a magna semper, porta purus eu, ligula. Nam sit amet
  88.                 </p>
  89.             </div>
  90.             {# #ToDo : Include loading #}
  91.             <div x-show="show_login_bloc" class="loginBloc" login-loading>
  92.                 <div class="loadingio-spinner-ripple-wsf5cxo48ch">
  93.                     <div class="ldio-japzwhp0h9j">
  94.                         <div>
  95.                         </div>
  96.                         <div></div>
  97.                     </div>
  98.                 </div>
  99.             </div>
  100.             <!-- Bloc Login -->
  101.             <div x-cloak x-show="show_se_connecter_email" id="seConnecter" type="text/template">
  102.                 <form class="loginForm" @submit.prevent="onLoginEmail($el,$refs)">
  103.                     <h1>Bienvenue !</h1>
  104.                     <p>Connectez-vous pour continuer vers <b>Santé+</b>.</p>
  105.                     <div class="inputForm" x-ref="identifiant" >
  106.                         <label>Identifiant</label>
  107.                         <input type="text"  x-model="loginFormEmail.identifiant" placeholder="entrez votre email ou ID ou telephone" id="identifiant"
  108.                             name="identifiant">
  109.                         <span class="text-danger text-left err_msg" ></span>
  110.                     </div>
  111.                     <div class="inputForm">
  112.                         <label>Mot de passe <a href="#" class="forgetPassword" @click.prevent="testRedirect($el)" id="forgetPassword">Mot de passe oublié?</a></label>
  113.                     </div>
  114.                     <div class="remembreMe">
  115.                         <input type="checkbox" id="remembre" name="remembre">
  116.                         <span>Remember me</span>
  117.                     </div>
  118.                     <button type="submit">S'identifier</button>
  119.                 </form>
  120.                 <span class="footerLogin">Vous n'avez pas de compte ? <a href="#">S'inscrire</a></span>
  121.             </div>
  122.             <!-- Bloc Login -->
  123.             <div  x-cloak x-show="show_se_connecter_password" id="seConnecter" type="text/template">
  124.                 <form class="loginForm" x-ref="refloginPassword" @submit.prevent="onLoginPassword($el)" >
  125.                     <h1>Bienvenue !</h1>
  126.                     <p>Connectez-vous pour continuer vers <b>Santé+</b>.</p>
  127.                     <div class="inputForm">
  128.                         <label>Mot de passe <a href="#" class="forgetPassword" id="forgetPassword">Mot de passe oublié?</a></label>
  129.                         <div class="passcontent">
  130.                             <input x-model="loginPassword.password" type="password" x-model="loginFormPassword.password" placeholder="entrer le mot de passe" id="password" name="password">
  131.                             <span class="showHidePass" id="showHidePass"><i class="far fa-eye"></i></span>
  132.                         </div>
  133.                         <span class="text-danger text-left err_msg"></span>
  134.                     </div>
  135.                     <div class="remembreMe">
  136.                         <input type="checkbox" id="remembre" name="remembre">
  137.                         <span>Remember me</span>
  138.                     </div>
  139.                     <button type="submit">S'identifier</button>
  140.                 </form>
  141.                 <span class="footerLogin">Vous n'avez pas de compte ? <a href="#">S'inscrire</a></span>
  142.             </div>
  143.             <!-- Bloc Confirm Change Password -->
  144.             <div x-cloak x-show="show_change_password" id="Changepassword" type="text/template">
  145.                 <form class="loginForm" data-new-pass @submit.prevent="onChangePasswordVerify($el)" x-ref="refChangePasswordVerify">
  146.                     <h1>Créer un nouveau mot de passe</h1>
  147.                     <p>Votre nouveau mot de passe doit être différent du mot de passe utilisé précédemment.</p>
  148.                     <div class="inputForm">
  149.                         <label>Mot de passe</label>
  150.                         <div class="passcontent">
  151.                             <input type="password" placeholder="entrer le mot de passe" id="confirmPassword"
  152.                                 name="password" x-model="formChangePasswordVerify.password">
  153.                             <span class="showHidePass" id="showHidePass"><i class="far fa-eye"></i></span>
  154.                         </div>
  155.                         <span class="text-danger text-left err_msg"></span>
  156.                     </div>
  157.                     <div class="inputForm">
  158.                         <label>Confirmez le mot de passe</label>
  159.                         <div class="passcontent">
  160.                             <input type="password" placeholder="entrer le mot de passe" id="confirmPasswordTwo"
  161.                                 name="confirmPassword" x-model="formChangePasswordVerify.confirmPassword">
  162.                             <span class="showHidePass" id="showHidePass"><i class="far fa-eye"></i></span>
  163.                         </div>
  164.                         <span class="text-danger text-left err_msg"></span>
  165.                     </div>
  166.                     <div class="remembreMe">
  167.                         <input type="checkbox" id="remembre" name="remembre">
  168.                         <span>Remember me</span>
  169.                     </div>
  170.                     <button type="submit">S'identifier</button>
  171.                 </form>
  172.                 <span class="footerLogin">Attendez, je me souviens de mon mot de passe... <a href="#"
  173.                         class="goLogin">Cliquez ici</a></span>
  174.             </div>
  175.             <!-- Bloc Choise Type receive OTP vaidation -->
  176.             <div x-cloak x-show="show_reinitialiser_password" id="Reinitialiserpassword" type="text/template">
  177.                 <form  class="loginForm">
  178.                     <h1>Mot de passe oublié ?</h1>
  179.                     <p>Réinitialiser le mot de passe avec <b>Santé+</b>.</p>
  180.                     <img src="/assets/images/auth/verifmail.svg">
  181.                     <div class="Reinitialisationtitle">
  182.                         Choisissez comment les instructions vous seront envoyées !
  183.                     </div>
  184.                     <ul class="Reinitialisationtype">
  185.                         <li class="active" data-type-withMail>
  186.                             <input type="radio" name="typeReinitialisePass" class="typeReinitialisePass" checked>
  187.                             <span>Adresse mail</span>
  188.                         </li>
  189.                         <li data-type-withPhone>
  190.                             <input type="radio" name="typeReinitialisePass" class="typeReinitialisePass">
  191.                             <span>Numéro de téléphone</span>
  192.                         </li>
  193.                     </ul>
  194.                     <button type="submit" id="SendReset">Send reset link</button>
  195.                 </form>
  196.                 <span class="footerLogin">Attendez, je me souviens de mon mot de passe... <a href="#"
  197.                         class="goLogin">Cliquez ici</a></span>
  198.             </div>
  199.             <!-- Bloc Verification Otp By Mail Or Phone -->
  200.             <div x-cloak x-show="show_verif_mail_phone" id="VerifMailPhone" type="text/template">
  201.                 <form class="loginForm" x-ref="VerifMailPhone" @submit.prevent="onVerifyEmailPhone($el,$refs)">
  202.                     <img src="/assets/images/auth/verifmail.svg">
  203.                     <h2>Vérifiez votre e-mail</h2>
  204.                     <p>Veuillez saisir le code à 4 chiffres envoyé à <b>San****@mail.com</b>.</p>
  205.                     <div class="codeVerification">
  206.                         <input x-model="verifyEmailPhone.codeOne" type="number" class="input-verif codemailphone1" name="codemailphone1"
  207.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  208.                             maxlength="1" >
  209.                         <input x-model="verifyEmailPhone.codeTwo" type="number" class="input-verif codemailphone2" name="codemailphone2"
  210.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  211.                             maxlength="1" >
  212.                         <input x-model="verifyEmailPhone.codeTree" type="number" class="input-verif codemailphone3" name="codemailphone3"
  213.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  214.                             maxlength="1" >
  215.                         <input x-model="verifyEmailPhone.codeFour" type="number" class="input-verif codemailphone4" name="codemailphone4"
  216.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  217.                             maxlength="1" >
  218.                     </div>
  219.                     <span class="text-danger text-left err_msg"></span>
  220.                     <button type="submit" class="confirmeResetType" disabled>Confirme</button>
  221.                 </form>
  222.                 <span class="footerLogin">Vous n'avez pas reçu de code ? <a href="#">Renvoyer</a></span>
  223.             </div>
  224.             <!-- Bloc Verification Otp By Authentification Account -->
  225.             <div x-cloak x-show="show_verif_auth_account" id="VerifAuthAccount" type="text/template">
  226.                 <form class="loginForm" x-ref="refVerifAuthAccount"  @submit.prevent="onVerifAuthAccount($el)" >
  227.                     <img src="/assets/images/auth/verifphone.svg">
  228.                     <h2>Authentifiez votre compte </h2>
  229.                     <!--{{"{{name}}"}}-->
  230.                     <p>La protection de votre santé+ est notre priorité absolue. veuillez confirmer votre compte en
  231.                         saisissant le code d'autorisation envoyé au <b>06***858</b>.</p>
  232.                     <div class="codeVerification">
  233.                         <input x-model="verifAuthAccount.codeOne" type="number" class="input-verif codeAuthAccount1" name="codeAuthAccount1"
  234.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  235.                             maxlength="1">
  236.                         <input x-model="verifAuthAccount.codeTwo" type="number" class="input-verif codeAuthAccount2" name="codeAuthAccount2"
  237.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  238.                             maxlength="1">
  239.                         <input x-model="verifAuthAccount.codeTree" type="number" class="input-verif codeAuthAccount3" name="codeAuthAccount3"
  240.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  241.                             maxlength="1">
  242.                         <input x-model="verifAuthAccount.codeFour" type="number" class="input-verif codeAuthAccount4" name="codeAuthAccount4"
  243.                             oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
  244.                             maxlength="1">
  245.                     </div>
  246.                     <span class="text-danger text-left err_msg"></span>
  247.                     <button type="submit" class="confirmeResetType">Confirme</button>
  248.                 </form>
  249.                 <span class="footerLogin">Vous n'avez pas reçu de code ? <a href="#">Renvoyer</a></span>
  250.             </div>
  251.         </div>
  252.     </section>
  253.     <section class="copyright" id="copyright">
  254.         <div>Copyright © Imperium 2000 - <span id="currentYear"></span></div>
  255.         <div class="copylinks"><a href="#"> Contact</a> - <a href="#"> Help</a> - <a href="#"> Privacy & Terms</a></div>
  256.     </section>
  257. </body>
  258. <script src="https://cdn.imperium.plus/assets/js/popper/v1.16.1/popper.min.js"></script>
  259. <script src="https://cdn.imperium.plus/assets/js/bootstrap/v4.0/bootstrap.min.js"></script>
  260. <script src="https://cdn.imperium.plus/assets/js/sweetalert/v02/sweetalert2.js"></script>
  261. {{ encore_entry_script_tags('index_patient') }}
  262. {#
  263. <script src="/assets/js/auth/patient/index.js"></script> #}
  264. <script>
  265.     /* Function Reset message Error */
  266.     function resetErr() {
  267.         $(".err_msg").html('');
  268.         $("input[type=text]").css('border-color', '#E9EBEC');
  269.         $("input[type=password]").css('border-color', '#E9EBEC');
  270.     }
  271.     /* Initialise Input & err message on keyup */
  272.     $('body').on('keyup', ".loginForm input", function (e) {
  273.         $(this).closest('.inputForm').find(".err_msg").html('');
  274.         $(this).css('border-color', '#E9EBEC');
  275.     });
  276.     /* Function AutoTab OTP inputs */
  277.     function auto_tab_input() {
  278.         $(".codeVerification .input-verif ").keyup(function () {
  279.             if (this.value.length == this.maxLength) {
  280.                 $(this).nextAll(".codeVerification .input-verif:enabled:first").focus();
  281.             }
  282.         });
  283.     }
  284.     /* Function backspace OTP inputs */
  285.     function auto_backspace() {
  286.         $(".codeVerification .input-verif").keyup(function (e) {
  287.             if (e.keyCode == 8) {
  288.                 if ($(this).prev().length > 0) {
  289.                     $(this).prev("input").focus();
  290.                 }
  291.             }
  292.         });
  293.     }
  294.     /* Validation inputs login Connect */
  295.     /*$('body').on('submit',"[data-login]",function(e){
  296.         e.preventDefault();
  297.         const indentif = $(this).find('#identifiant');
  298.         const pass = $(this).find('#password');
  299.         if(indentif.val() == ""){
  300.             indentif.css('border-color','#dc3545');
  301.             indentif.closest('.inputForm').find(".err_msg").html('le champ Identifiant est vide');
  302.         }else{
  303.             indentif.css('border-color','#E9EBEC');
  304.             indentif.closest('.inputForm').find(".err_msg").html('');
  305.             if(pass.val() == ""){
  306.             e.preventDefault();
  307.             pass.css('border-color','#dc2424');
  308.             pass.closest('.inputForm').find(".err_msg").html('le champ mot de  pass est vide');
  309.             }else{
  310.                 pass.css('border-color','#E9EBEC');
  311.                 pass.closest('.inputForm').find(".err_msg").html('');
  312.                 $('.loginBloc').addClass('d-none');
  313.                 $('.VerifAuthAccount').removeClass('d-none');
  314.             }
  315.         }
  316.     });*/
  317.     /* Show/Hide value  Password */
  318.     $('body').on('click', "#showHidePass", function () {
  319.         if ($(this).find('i').hasClass('fa-eye')) {
  320.             $(this).find('i').removeClass('fa-eye').addClass('fa-eye-slash');
  321.             $(this).closest('.passcontent').find('input').attr('type', 'text');
  322.         } else {
  323.             $(this).find('i').removeClass('fa-eye-slash').addClass('fa-eye');
  324.             $(this).closest('.passcontent').find('input').attr('type', 'password');
  325.         }
  326.     });
  327.     /* Go forgot password  */
  328.     $('body').on('click', "#forgetPassword", function () {
  329.         $('.loginBloc').addClass('d-none');
  330.         $('.Reinitialiserpassword').removeClass('d-none');
  331.         resetErr();
  332.     });
  333.     /* I have Account  */
  334.     $('body').on('click', ".goLogin", function () {
  335.         $('.loginBloc').addClass('d-none');
  336.         $('.seConnecter').removeClass('d-none');
  337.     });
  338.     /* forgot password choise Type */
  339.     $('body').on('click', ".Reinitialisationtype li", function () {
  340.         $('.Reinitialisationtype li').removeClass('active');
  341.         $('.typeReinitialisePass').removeAttr("checked");
  342.         $(this).addClass('active');
  343.         $(this).find('.typeReinitialisePass').attr("checked", 'true');
  344.     });
  345.     /* Confirm  Type  OTP Request */
  346.     $('body').on('click', "#SendReset", function (e) {
  347.         e.preventDefault();
  348.         if ($(this).closest('.loginForm').find("[data-type-withMail]").hasClass('active')) {
  349.             $('.loginBloc').addClass('d-none');
  350.             $('.VerifMailPhone form').find('h2').html('Vérifiez votre e-mail');
  351.             $('.VerifMailPhone form').find('p').html('Veuillez saisir le code à 4 chiffres envoyé à <b>San****@mail.com</b>');
  352.             $('.VerifMailPhone').removeClass('d-none');
  353.         } else {
  354.             $('.loginBloc').addClass('d-none');
  355.             $('.VerifMailPhone form').find('h2').html('Vérifiez votre Phone');
  356.             $('.VerifMailPhone form').find('p').html('Veuillez saisir le code à 4 chiffres envoyé à <b>06***858</b>');
  357.             $('.VerifMailPhone').removeClass('d-none');
  358.         }
  359.     });
  360.     /* Confirmation Change Password */
  361.     /*$('body').on('submit', "[data-new-pass]", function (e) {
  362.         const pass1 = $(this).find('#confirmPassword');
  363.         const pass2 = $(this).find('#confirmPasswordTwo');
  364.         if (pass1.val() == "") {
  365.             e.preventDefault();
  366.             pass1.css('border-color', '#dc3545');
  367.             pass1.closest('.inputForm').find(".err_msg").html('le champ mot de  pass est vide');
  368.         } else {
  369.             pass1.css('border-color', '#E9EBEC');
  370.             pass1.closest('.inputForm').find(".err_msg").html('');
  371.             if (pass2.val() == "") {
  372.                 e.preventDefault();
  373.                 pass2.css('border-color', '#dc2424');
  374.                 pass2.closest('.inputForm').find(".err_msg").html('le champ confirmation mot de  pass est vide');
  375.             } else {
  376.                 pass2.css('border-color', '#E9EBEC');
  377.                 pass2.closest('.inputForm').find(".err_msg").html('');
  378.                 if (pass1.val() != pass2.val()) {
  379.                     e.preventDefault();
  380.                     pass1.css('border-color', '#dc3545');
  381.                     pass2.css('border-color', '#dc2424');
  382.                     pass2.closest('.inputForm').find(".err_msg").html('le champ mot de pass et confirmation mot de pass sont pas égaux');
  383.                 } else {
  384.                     pass2.closest('.inputForm').find(".err_msg").html('');
  385.                 }
  386.             }
  387.         }
  388.     });*/
  389.     /* Validation OTP By Mail Or Phone */
  390.     /*let codeConfirmation = 1234;
  391.     $('body').on('submit', ".VerifMailPhone [data-valid-code]", function (e) {
  392.         e.preventDefault();
  393.         const frm = $(this);
  394.         let verifCode = $('.codemailphone1').val() + $('.codemailphone2').val() + $('.codemailphone3').val() + $('.codemailphone4').val();
  395.         if ($('.codemailphone1').val() == "" || $('.codemailphone2').val() == "" || $('.codemailphone3').val() == "" || $('.codemailphone4').val() == "") {
  396.             frm.find('.err_msg').html('merci  de saisi le code confirmation complet');
  397.         } else {
  398.             if (verifCode != codeConfirmation) {
  399.                 frm.find('.err_msg').html('le code de confirmation est incorect');
  400.             } else {
  401.                 $('.loginBloc').addClass('d-none');
  402.                 $('.Changepassword').removeClass('d-none');
  403.                 frm.find(".err_msg").html('');
  404.             }
  405.         }
  406.     });*/
  407.     /* Validation OTP By Account Authentification */
  408.     /*$('body').on('submit', ".VerifAuthAccount [data-valid-code]", function (e) {
  409.         e.preventDefault();
  410.         const frm = $(this);
  411.         let verifCode = $('.codeAuthAccount1').val() + $('.codeAuthAccount2').val() + $('.codeAuthAccount3').val() + $('.codeAuthAccount4').val();
  412.         if ($('.codeAuthAccount1').val() == "" || $('.codeAuthAccount2').val() == "" || $('.codeAuthAccount3').val() == "" || $('.codeAuthAccount4').val() == "") {
  413.             frm.find('.err_msg').html('merci  de saisi le code confirmation complet');
  414.         } else {
  415.             if (verifCode != codeConfirmation) {
  416.                 frm.find('.err_msg').html('le code de confirmation est incorect');
  417.             } else {
  418.                 alert('Authentified');
  419.                 frm.find(".err_msg").html('');
  420.             }
  421.         }
  422.     });*/
  423.     /* Initialisation  functions OTP */
  424.     $(document).ready(function () {
  425.         auto_tab_input();
  426.         auto_backspace();
  427.         /* Current Year to copyright */
  428.         $('#currentYear').html(new Date().getFullYear());
  429.     });
  430. </script>
  431. </html>