Module Auth

This commit is contained in:
Michael RICOIS 2016-04-29 17:14:46 +02:00
parent d1065a927d
commit 63881ef165
8 changed files with 1007 additions and 0 deletions

View File

@ -0,0 +1,246 @@
<?php
class Auth_SsoController extends Zend_Controller_Action
{
protected $theme;
protected $partnerConfig = array(
'inextenso' => array(
'logo' => 'logo-in-extenso.gif',
'clientId' => 195,
'serviceCode' => 'SSO',
'authType' => 'userSSO',
'login' => 'mail',
'token' => 'token',
)
);
public function init()
{
// --- Theme
$this->theme = Zend_Registry::get('theme');
}
/**
* Point d'entrée pour les connexions partenaires.
* L'utilisateur s'identifie sur son portail habituel.
*/
public function indexAction()
{
// --- Désactiver le layout
$this->_helper->layout()->disableLayout();
$this->view->headLink()
->appendStylesheet($this->theme->pathStyle.'/inexweb.css', 'all')
->appendStylesheet($this->theme->pathStyle.'/user.css', 'all');
$request = $this->getRequest();
/**
* Get partner name - see route in bootstrap
*/
$partner = $request->getParam('partner');
if ( array_key_exists($partner, $this->partnerConfig) ) {
$config = $this->partnerConfig[$partner];
$this->view->logo = $config['logo'];
$params = $request->getParams();
$objectParams = array();
foreach ($params as $label => $value) {
if (in_array($label, array('module', 'controller', 'action'))) continue;
$object = new stdClass();
$object->label = $label;
$object->value = $value;
$objectParams[] = $object;
}
$this->view->Params = $objectParams;
$login = $params[$config['login']];
$part = strstr($login, '@', true);
if ($part !== false) {
$login = $part;
}
$token = $params[$config['token']];
try {
$ws = new Scores_Ws_Client('gestion', '0.4');
$parameters = new stdClass();
$parameters->client = $config['clientId'];
$parameters->login = $login;
$parameters->token = $token;
$parameters->params = $objectParams;
$hash = $ws->ssoAuthenticate($parameters);
// --- Utilisateur inexistant
if ( $hash === 'false' || $hash === false ) {
$this->view->NoUser = true;
$urlParams = array('module'=>'auth', 'controller'=>'sso', 'action'=>'userform');
$urlParams = array_merge($params, $urlParams);
$this->view->FormUrlParams = $urlParams;
}
// --- Redirection
else {
$auth = Zend_Auth::getInstance();
// --- Set partial identity
$identity = new stdClass();
$identity->username = $login;
$identity->password = $hash;
$auth->getStorage()->write($identity);
// --- End Set partial identity
// --- Get InfosLogin
$adressIp = $_SERVER['REMOTE_ADDR'];
$parameters = new stdClass();
$parameters->login = $login;
$parameters->ipUtilisateur = $adressIp;
$parameters->from = 'auth';
try {
$ws = new Scores_Ws_Client('gestion', '0.3');
$InfosLogin = $ws->getInfosLogin($parameters);
Zend_Registry::get('firebug')->info($InfosLogin);
if ( is_string($InfosLogin) || $InfosLogin->error->errnum != 0 ) {
$this->view->Error = true;
} else {
$user = new Scores_Utilisateur();
$identity = $user->updateProfil($InfosLogin);
$auth->getStorage()->write($identity);
// --- Redirect
$this->redirect('/');
}
} catch ( Exception $e ) {
switch ( $e->getCode() ) {
case 'MSG':
$this->view->Message = $e->getMessage();
break;
default:
$this->view->Error = true;
break;
}
}
// --- End Get InfosLogin
}
} catch ( Exception $e ) {
switch ( $e->getCode() ) {
case 'MSG':
$this->view->Message = $e->getMessage();
break;
default:
$this->view->Error = true;
break;
}
}
} else {
$this->view->Message = "Erreur dans les paramètres.";
}
}
/**
* Affichage du formulaire pour l'inscription des utilisateurs
*/
public function userformAction()
{
// --- Désactiver le layout
$this->_helper->layout()->disableLayout();
$this->view->headLink()->appendStylesheet($this->theme->pathStyle.'/user.css', 'all');
$request = $this->getRequest();
/**
* Get partner name - see route in bootstrap
*/
$partner = $request->getParam('partner');
if ( array_key_exists($partner, $this->partnerConfig) ) {
$config = $this->partnerConfig[$partner];
$this->view->logo = $config['logo'];
$params = $request->getParams();
$objectParams = array();
foreach ($params as $label => $value) {
if (in_array($label, array('module', 'controller', 'action'))) continue;
$object = new stdClass();
$object->label = $label;
$object->value = $value;
$objectParams[] = $object;
}
$this->view->Params = $objectParams;
$login = $params[$config['login']];
$part = strstr($login, '@', true);
if ($part !== false) {
$login = $part;
}
$token = $params[$config['token']];
$this->view->NoUser = true;
// --- Set form value
$this->view->FormPartner = $partner;
$this->view->FormIdentifiant = $login;
$this->view->FormCourriel = $request->getParam('mail');
$this->view->FormSiret = $request->getParam('siret');
$this->view->FormNom = $request->getParam('lastname');
$this->view->FormPrenom = $request->getParam('name');
}
else {
$this->view->Message = "Erreur dans les paramètres.";
}
}
/**
* Creation d'un utilisateur en SSO
*/
public function usercreateAction()
{
$this->_helper->layout()->disableLayout();
$request = $this->getRequest();
$partner = $request->getParam('partner');
if ( array_key_exists($partner, $this->partnerConfig) ) {
$config = $this->partnerConfig[$partner];
$this->view->logo = $config['logo'];
$data = array(
'idClient' => $config['clientId'],
'login' => $request->getParam('login'),
'email' => $request->getParam('email', ''),
'actif' => 1,
'nom' => $request->getParam('nom', ''),
'prenom' => $request->getParam('prenom', ''),
'siret' => str_replace(' ', '', $request->getParam('siret', '')),
'tel' => str_replace(array(' ','.'), array('',''), $request->getParam('tel', '')),
'Service' => $config['serviceCode'],
);
try {
$ws = new Scores_Ws_Client('gestion', '0.4');
$parameters = new stdClass();
$parameters->data = json_encode($data);
$created = $ws->setUserSSO($parameters);
if ($created === false ) {
$this->view->Message = "Erreur lors de la création de votre compte.";
} else {
$this->view->UserCreated = true;
// --- Data to go back
$params = $request->getParams();
$urlArgs = array();
foreach ($params as $label => $value) {
if (in_array($label, array('module', 'controller', 'action'))) continue;
if (substr($label, 0, 2) == 'P-') {
$urlArgs[substr($label, 2)] = $value;
}
}
$urlArgs['partner'] = 'inextenso';
$this->view->UrlArgs = $urlArgs;
}
} catch ( Exception $e ) {
switch ( $e->getCode() ) {
case 'MSG':
$this->view->Message = $e->getMessage();
break;
default:
$this->view->Error = true;
break;
}
}
} else {
$this->view->Message = "Erreur dans les paramètres.";
}
}
}

View File

@ -0,0 +1,181 @@
<?php
class Auth_UserController extends Zend_Controller_Action
{
public function init()
{
$this->_helper->layout()->disableLayout();
}
/**
* Authentication
*/
public function loginAction()
{
$this->_helper->layout()->disableLayout();
$this->view->headTitle()->append('Connexion');
$form = new Application_Form_Login();
$this->view->form = $form;
$request = $this->getRequest();
if ( $request->isPost() ) {
$formData = $request->getPost();
if ($form->isValid($formData)) {
$login = $form->getValue('login');
$pass = $form->getValue('pass');
$auth = Zend_Auth::getInstance();
$authAdapter = new Scores_Auth_Adapter_Ws($login, $pass);
$result = $auth->authenticate($authAdapter);
// Auth is valid
if ( $result->isValid() ) {
// Save browser information
$screenSize = $request->getParam('screenSize', 'unknow');
$user = new Scores_Utilisateur();
$info = get_browser();
$isMobile = ($info->ismobiledevice==1) ? 1 : 0;
$user->setBrowserInfo($info->platform, $info->browser, $info->version, $isMobile, $screenSize);
// Get previous url if user has been disconnected
$url = '';
if (Zend_Session::namespaceIsset('login')){
$session = new Zend_Session_Namespace('login');
if (isset($session->url)) {
$url = $session->url;
}
}
if (!empty($url) && $url!='/auth/user/login' && $url!='/auth/user/logout' ) {
$this->redirect($url);
}
$this->redirect('/');
}
// Auth error
else {
$this->view->message = '';
Zend_Registry::get('firebug')->info($result);
foreach ($result->getMessages() as $message) {
$this->view->message.= $message."<br/>";
}
}
}
}
}
/**
* Déconnexion
*/
public function logoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
$session = new Zend_Session_Namespace('wcheck');
$session->unsetAll();
$this->_helper->layout()->disableLayout();
$request = $this->getRequest();
$message = $request->getParam('message');
$this->view->assign('message', $message);
$ajax = $request->getParam('ajax', 0);
$this->view->assign('ajax', $ajax);
$refresh = 5;
$url = 'http://'.$_SERVER['SERVER_NAME'].$this->view->url(array(
'controller' => 'user',
'action' => 'login',
), 'default', true);
$this->view->assign('url', $url);
if ( $ajax == 0 ) {
$this->view->assign('refresh', $refresh);
$this->view->headMeta()->appendHttpEquiv('refresh', $refresh.'; url='.$url);
}
}
/**
* Oubli du mot de passe
*/
public function forgetAction()
{
$request = $this->getRequest();
$name = 'Identifiants oubliés ?';
$params = array(
'identifiant' => '',
'telephone' => '',
'email' => '',
'nom' => '',
'prenom' => '',
'fonction' => '',
'service' => '',
'rsociale' => '',
);
$this->_helper->layout()->disableLayout();
if ( $request->isPost() ) {
$params = $request->getParams();
$message = '';
$paramlist = array(
'telephone' => 'Numéro de téléphone direct',
'email' => 'Adresse email',
'nom' => 'Nom',
'prenom' => 'Prénom',
'fonction' => 'Fonction',
'service' => 'Service',
'rsociale' => 'Sociale',
);
foreach ($paramlist as $item => $val) {
if (!isset($params[$item])) {
$message .= "Champs $val vide !<br/>";
}
}
$validator = new Zend_Validate_EmailAddress();
if (isset($params['email'])){
if (!$validator->isValid($params['email'])) {
$message .="Adresse email invalide ! <br/>";
}
}
if ($message == '') {
$mailbody = '<style type="text/css">table {font-family:Arial, Helvetica, sans-serif; font-size: 12px; width: 550px; border: none;}table td{padding: 4px 8px;}</style>';
$mailbody .= "Demande d'envoi des identifiants.<br /><br />";
$mailbody .= "L'un de nos clients a égaré son(ses) identifiant(s).<br />";
$mailbody .= "Via notre lien -identifiants oubliés- il a effectué une demande de transmission de ces codes.<br />";
$mailbody .= "<p>A l'aide des informations ci-dessous, merci de retrouver ces codes et les lui envoyer par email.</p>";
$mailbody .= "<table><tr bgcolor='#eeeeee'><td width='200px'><strong>Identifiant :</strong></td><td>".$params['identifiant']."</td></tr>";
$mailbody .= "<tr><td><strong>Adresse email:</strong></td><td>".$params['email']."</td></tr>";
$mailbody .= "<tr bgcolor='#eeeeee'><td><strong>Numéro de téléphone direct:</strong></td><td>".$params['telephone']."</td></tr>";
$mailbody .= "<tr><td><strong>Nom:</strong></td><td>".$params['nom']."</td></tr>";
$mailbody .= "<tr bgcolor='#eeeeee'><td><strong>Prénom:</strong></td><td>".$params['prenom']."</td></tr>";
$mailbody .= "<tr><td><strong>Fonction:</strong></td><td>".$params['fonction']."</td></tr>";
$mailbody .= "<tr bgcolor='#eeeeee'><td><strong>Service:</strong></td><td>".$params['service']."</td></tr>";
$mailbody .= "<tr><td><strong>Dénomination Sociale:</strong></td><td>".$params['rsociale']."</td></tr></table>";
$mailbody .= "<p>Si les informations fournies ne permettent pas d'identifier correctement l'utilisateur, ";
$mailbody .= "merci d'émettre un message sur le mail communiquer en précisant que \"Les éléments confiés ne permettent pas d'identifier l'utilisateur ";
$mailbody .= "et par conséquence de vous délivrer les codes d'accès demandés\".<br />";
$mailbody .= "Aussi nous vous invitons à vous rapprocher de votre interlocuteur commercial habituel ";
$mailbody .= "ou de votre responsable suivi relations Scores & Décisions au sein de votre société.</p>";
$mail = new Scores_Mail_Method();
$mail->setSubject("Demande d'envoi des identifiants");
$mail->setBodyHtmlC($mailbody);
$mail->setFromKey('support');
$mail->addToKey('support');
$mail->setReplyTo($params['email']);
try {
$mail->execute();
$this->view->assign('sendEmail' , true);
}
catch ( Zend_Mail_Transport_Exception $e ){
$message = $e->getMessage();
}
}
$this->view->assign('message', $message);
}
}
}

View File

@ -0,0 +1,101 @@
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<?php echo $this->headStyle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<div id="wrap">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="text-center">Scores & Decisions</h1>
<br/>
<p>
Scores & Decisions est l'éditeur d'une base de données de référence sur toutes les entreprises de France.
Scores & Decisions est licencié officiel depuis 2008 pour la rediffusion du répertoire Sirène (INSEE), du RNCS
Registre National du Commerce et des Sociétés (INPI) et des Journaux Officiels (DILA). Scores & Decisions est
un service privé distinct des services publics cités.
</p>
<br/>
<div class="panel panel-default">
<div class="panel-body">
<p class="text-primary">Spécialiste de l'information légales et financières sur les entreprises, Scores & Décisions vous permet par
confirmation des éléments ci-contre d'accéder à toute sa base de données.</p>
<ul class="list-group">
<li class="list-group-item">
Télécharger nos Conditions Générales de Services
<a href="<?=$this->baseUrl()?>/documents/inextenso_cgs.pdf" target="_blank">
<span class="glyphicon glyphicon-file pull-right" aria-hidden="true"></span></a>
</li>
<li class="list-group-item">
Télécharger nos Conditions Tarifaires
<a href="#" target="_blank">
<span class="glyphicon glyphicon-file pull-right" aria-hidden="true"></span></a>
</li>
<li class="list-group-item">
Télécharger les coordonnées de vos contacts
<a href="<?=$this->baseUrl()?>/documents/inextenso_contacts.pdf" target="_blank">
<span class="glyphicon glyphicon-file pull-right" aria-hidden="true"></span></a>
</li>
</ul>
<p class="text-danger">Ce service est actuellement en beta. La consultation vous est offerte durant cette période.</p>
</div>
</div>
</div>
<div class="col-md-6">
<h2>Trouvez les réponses à vos questions !</h2>
<ul class="arguments">
<li><strong>Disposez de certitudes sur l'identité de vos interlocuteurs, les liens financiers et les liens
dirigeants... ></strong> Mon client a t il une existence légale ? Quels sont les derniers événements qui ont touché l'entreprise ?</li>
<li><strong>Évitez les mauvais payeurs ></strong>
Ce prospect paye t'il rapidement, est-il en procédure collective ? Quel est sa rentabilité, son niveau de
trésorerie ?</li>
<li><strong>Surveillez la solvabilité de vos partenaires, clients et fournisseurs ou concurrents ></strong>
Mes clients sont ils viables dans la durée, puis je continuer et développer les ventes ?</li>
<li><strong>Découvrez la valeur de votre entreprises ou celles de vos concurrents ></strong> Mon entreprise a t elle de la
valeur ? combien me coûterait le rachat d'un concurrent ?</li>
<li><strong>Trouvez vos futurs clients ></strong> Où sont et qui sont mes prospects ?</li>
</ul>
<p>Les données agrégées sont officielles, exhaustives, fraîches et opposables aux tiers. Elles sont utilisées
par des grands groupes et institutionnels dans des cadres contentieux, de conformité, de fraude...</p>
<a type="button" class="btn btn-success btn-lg" href="<?=$this->url($this->FormUrlParams, 'default', true)?>">Accédez au site</a>
</div>
</div>
<div class="row">
<div class="col-md-12">
<p class="inexweb text-center"><img src="/themes/default/images/partner/logo-inexweb.png"/> <strong>vous offre 60 jours de gratuité, et la surveillance de votre portefeuille clients !</strong></p>
</div>
</div>
</div>
</div>
<?php echo $this->inlineScript(); ?>
</body>
</html>

View File

@ -0,0 +1,58 @@
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<?php echo $this->headStyle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<div id="wrap">
<div class="container">
<div class="row">
<div class="col-md-6"><img src="/themes/default/images/partner/<?=$this->logo?>"/></div>
<div class="col-md-6">
<h2 class="form-signin-heading">Extranet <small>Scores & Décisions</small></h2>
<?php
//Error
if ($this->Error) {?>
<div style="text-align:center;"><p class="text-danger"><span>Une erreur est survenue</span></p></div>
<?php
}
//Message
else if ($this->Message) {?>
<div style="text-align:center;"><p class="text-danger"><span><?=$this->Message?></span></p></div>
<?php
}
//OK
else if ($this->UserCreated) {?>
<div>
<p class="text-success">
<span>Votre compte a été crée avec succès.</span>
<a href="<?=$this->url(array_merge(array('module'=>'auth', 'controller'=> 'sso', 'action' => 'index'), $this->UrlArgs))?>">
Cliquez ici pour être redirigé vers la page d'accueil.</a>
</p>
</div>
<?php }?>
</div>
</div>
</div>
</div>
<div id="footer">
<div class="container">
<p class="text-muted credit"> &copy; <?=date('Y')?> <a href="http://www.scores-decisions.com">Scores & Décisions SAS</a>.</p>
</div>
</div>
<?php echo $this->inlineScript(); ?>
</body>
</html>

View File

@ -0,0 +1,127 @@
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<?php echo $this->headStyle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<div id="wrap">
<div class="container">
<div class="row">
<div class="col-md-6">
<p><img src="/themes/default/images/partner/<?=$this->logo?>"/></p>
<div class="panel panel-default">
<div class="panel-body">
<p class="text-primary">Spécialiste de l'information légales et financières sur les entreprises, Scores & Décisions vous permet par
confirmation des éléments ci-contre d'accéder à toute sa base de données.</p>
<ul class="list-group">
<li class="list-group-item">
Télécharger nos Conditions Générales de Services
<a href="<?=$this->baseUrl()?>/documents/inextenso_cgs.pdf" target="_blank">
<span class="glyphicon glyphicon-file pull-right" aria-hidden="true"></span></a>
</li>
<li class="list-group-item">
Télécharger nos Conditions Tarifaires
<a href="#" target="_blank">
<span class="glyphicon glyphicon-file pull-right" aria-hidden="true"></span></a>
</li>
<li class="list-group-item">
Télécharger les coordonnées de vos contacts
<a href="<?=$this->baseUrl()?>/documents/inextenso_contacts.pdf" target="_blank">
<span class="glyphicon glyphicon-file pull-right" aria-hidden="true"></span></a>
</li>
</ul>
<p class="text-danger">Ce service est actuellement en beta. La consultation vous est offerte durant cette période.</p>
</div>
</div>
</div>
<div class="col-md-6">
<form method="post" action="<?=$this->url(array('module'=>'auth', 'controller'=>'sso', 'action'=>'usercreate'), 'default', true)?>">
<h2 class="form-signin-heading">Extranet <small>Scores &amp; Décisions</small></h2>
<?php
//Error
if ($this->Error) {?>
<div style="text-align:center;"><p class="text-danger"><span>Une erreur est survenue</span></p></div>
<?php
}
//Message
else if ($this->Message) {?>
<div style="text-align:center;"><p class="text-danger"><span><?=$this->Message?></span></p></div>
<?php
}
//NoUser
else if ($this->NoUser) {?>
<div><p class="text-warning"><span>
Votre compte n'existe pas encore. Compléter le formulaire puis valider pour créer votre compte.
</span></p>
</div>
<?php foreach ($this->Params as $item) {?>
<input type="hidden" name="P-<?=$item->label?>" value="<?=$item->value?>"/>
<?php }?>
<input type="hidden" name="partner" value="<?=$this->FormPartner?>"/>
<div class="form-group">
<label for="identifiant">Identifiant</label>
<input type="text" id="identifiant" value="<?=$this->FormIdentifiant?>" class="form-control" disabled>
<input type="hidden" name="login" value="<?=$this->FormIdentifiant?>">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="text" class="form-control" value="<?=$this->FormCourriel?>" disabled>
<input type="hidden" name="email" value="<?=$this->FormCourriel?>">
</div>
<div class="form-group">
<label for="siret">SIRET</label>
<input type="text" class="form-control" name="siret" value="<?=$this->FormSiret?>">
</div>
<div class="form-group">
<label for="nom">Nom</label>
<input type="text" class="form-control" name="nom" value="<?=$this->FormNom?>">
</div>
<div class="form-group">
<label for="prenom">Prénom</label>
<input type="text" class="form-control" name="prenom" value="<?=$this->FormPrenom?>">
</div>
<div class="form-group">
<label for="tel">Téléphone</label>
<input type="text" class="form-control" name="tel" value="<?=$this->FormTel?>">
</div>
<button class="btn btn-lg btn-primary btn-block clearfix" type="submit">Valider</button>
<?php }?>
</form>
</div>
</div>
</div>
</div>
<div id="footer">
<div class="container">
<p class="text-muted credit"> &copy; <?=date('Y')?> <a href="http://www.scores-decisions.com">Scores & Décisions SAS</a>.</p>
</div>
</div>
<?php echo $this->inlineScript(); ?>
</body>
</html>

View File

@ -0,0 +1,184 @@
<style>
div#dlg input#frm {
border-radius:0;
font-size:95%;
margin:0;
padding:0em 0em 0em 0.2em;
background: none;
box-shadow: none;
width: 20em;
height:1.5em;
}
label#frm {
font-family: arial;
font-size:0.9em;
cursor: default;
clear: both;
float: left;
width: 20em;
margin-right: 1em;
text-align: right;
}
.brsr {
border-style:solid;
border-width:1px;
border-color:red;
}
.loading
{
background-color: silver;
height: 450px;
top: 0px;
left: 0px;
position: absolute;
width: 720px;
opacity: 0.3;
display:none;
z-index: 1;
}
.message {
font-size: 0.8em;
width: 96%;
background-color: #FFFFDD;
border: 1px solid #FCEFA1;
border-radius: 4px;
padding: 10px 15px 10px 15px;
}
.stl {
height:25px;
}
#htxt, #ftxt {
margin-top: 10px;
margin-bottom:20px;
font-size: 0.9em;
}
</style>
<?php if ($this->sendEmail) {?>
<div class='message'><p id='<?=$this->bt_fermer;?>'>
Votre demande a été envoyée. Nous vous contacterons prochainement.
</p></div>
<script>
$('#dlg').dialog({ buttons: [
{ text: "Fermer", click: function() { $(this).dialog('close'); }}
] });
</script>
<?php } else {?>
<?php if ($this->message!='') {?>
<div class='message'><p id='<?=$this->bt_fermer;?>'><?=$this->message; ?></p></div>
<?php }?>
<div id='htxt'>
Pour recevoir votre mot de passe et/ou votre identifiant oubliés, nous vous invitons à saisir les informations ci-dessous et cliquer sur valider.
A réception de ces données, nous vous informerons par e-mail.
<p>Tous les champs (*) sont obligatoires : en cas de données manquantes ou erronées, votre demande ne pourra pas être prise en compte par nos services. * = champ obligatoire.</p>
</div>
<div>
<form>
<div class="stl">
<label id="frm">Votre Identifiant :</label>
<input id="frm" type="text" name="identifiant"/>
</div>
<div class="stl">
<label id="frm">Votre Adresse email* :</label>
<input id="frm" type="text" name="email" required/>
</div>
<div class="stl">
<label id="frm">Votre Numéro de téléphone* :</label>
<input id="frm" type="text" name="telephone" required/>
</div>
<div class="stl">
<label id="frm">Votre Nom* :</label>
<input id="frm" type="text" name="nom" required/>
</div>
<div class="stl">
<label id="frm">Votre Prénom* :</label>
<input id="frm" type="text" name="prenom" required/>
</div>
<div class="stl">
<label id="frm">Votre Fonction* :</label>
<input id="frm" type="text" name="fonction" required/>
</div>
<div class="stl">
<label id="frm">Votre Service* :</label>
<input id="frm" type="text" name="service" required/>
</div>
<div class="stl">
<label id="frm">Dénomination Sociale* :</label>
<input id="frm" type="text" name="rsociale" required/>
</div>
</form>
</div>
<div id="ftxt">
<p>Ces informations sont destinées exclusivement au traitement de votre demande et à l'émission d'une réponse personnalisée.</p>
</div>
<div class="loading"><center><img style="padding-top:25%" src="/themes/default/images/giant/19-1.gif" /></center></div>
<script>
function validate() {
var allvals = true;
$('div#dlg input[required]').each(function() {
if(!$(this).val()) {
allvals = false;
$(this).addClass('brsr');
}
else { $(this).removeClass('brsr'); }
});
return allvals;
}
function isEmail(email) {
var emailval = true;
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!regex.test(email.val())) {
emailval = false;
$(email).addClass('brsr');
}
else {
$(email).removeClass('brsr');
}
return emailval;
}
$(document).ready(function(){
validate();
});
$('div#dlg input[required]').blur(function(){
if(!$(this).val()) { $(this).addClass('brsr'); }
else { $(this).removeClass('brsr'); }
});
$('#dlg').dialog({ buttons: [
{ text: "Valider", click: function() {
var values = $(this).find('form').serialize();
if (validate() && isEmail($('div#dlg input[name=email]'))) {
if ($('.loading').css('display')=='none') {
$('.loading').css('display', 'block');
$('.ui-dialog-content').css('overflow','hidden');
$(".ui-dialog-buttonpane button:contains('Valider')").button("disable");
} else {
$('.loading').css('display', 'none');
}
$.post('/auth/user/forget', values, function(data) {
$('#dlg').html(data);
$('#htxt').height(50);
$('input#frm').attr("disabled", "disabled");
$(".ui-dialog-buttonpane button:contains('Valider')").hide();
});
}
}},
{ text: "Annuler", click: function() { $(this).dialog('close'); }}
] });
</script>
<?php }?>

View File

@ -0,0 +1,70 @@
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<?php echo $this->headStyle(); ?>
<?php echo $this->headLink(); ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<div id="wrap">
<div class="container">
<form class="form-signin" method="post" action="<?=$this->url(array('module'=>'auth', 'controller'=>'user',
'action'=>'login'), 'default', true)?>">
<h2 class="form-signin-heading">Extranet <small>Scores & Décisions</small></h2>
<div style="text-align:center;"><p class="text-danger"><span><?=$this->message?></span></p></div>
<input name="login" value="" type="text" class="form-control" placeholder="Identifiant" autofocus autocomplete="off" required />
<input name="pass" value="" type="password" class="form-control" placeholder="Mot de passe" required/>
<script>document.write('<input name="screenSize" type="hidden" value="'+ screen.width +'x'+screen.height + '">');</script>
<button class="btn btn-lg btn-primary btn-block clearfix"" type="submit">Connexion</button>
</form>
<div class="form-signin">
<a class="dlg pull-right" title="<?=$this->translate("Identifiants oubliés ?")?>" href="<?=$this->url(array(
'module'=>'auth', 'controller'=>'user', 'action'=>'forget'))?>">
<?=$this->translate("Identifiants oubliés ?")?></a>
<script>
$('a.dlg').on('click', function(e){
e.preventDefault();
var title = $(this).attr('title');
var href = $(this).attr('href');
var dlgOpts = {
bgiframe: true,
title: title,
width: 710,
height: 530,
modal: true,
resizable: false,
open: function(event, ui) {
$(this).html('Chargement...');
$(this).load(href);
},
buttons: {'Fermer': function() { $(this).dialog('close'); }},
close: function() { $('#dlg').remove(); }};
$('<div id="dlg"></div>').dialog(dlgOpts);
return false;
});
</script>
</div>
</div>
</div>
<div id="footer">
<div class="container">
<p class="text-muted credit"> &copy; <?=date('Y')?> <a href="http://www.scores-decisions.com">Scores & Décisions SAS</a>.</p>
</div>
</div>
<?php echo $this->inlineScript(); ?>
</body>
</html>

View File

@ -0,0 +1,40 @@
<?php if ($this->ajax) {?>
<h4 class="logout"><?=$this->translate("Vous avez été déconnecté.")?></h4>
<h5 class="logout"><?=$this->translate("Veuillez cliquer")?> <a href="<?=$this->url?>"><?=$this->translate("ici")?></a>
</h5>
<?php } else {?>
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<?php echo $this->headStyle(); ?>
<?php echo $this->headLink(); ?>
</head>
<body>
<div id="wrap">
<div class="container">
<h4><?=$this->translate("Vous avez été déconnecté.")?></h4>
<p><?=$this->message?></p>
<h5 class="logout">
<?=$this->translate("Si cette page ne disparait pas au bout de %1\$s seconde(s)", $this->refresh)?>,
<?=$this->translate("veuillez cliquer ")?><a href="<?=$this->url?>"><?=$this->translate("ici")?></a>
</h5>
</div>
</div>
<div id="footer">
<div class="container">
<p class="text-muted credit"> &copy; <?=date('Y')?> <a href="http://www.scores-decisions.com">Scores & Décisions SAS</a>.</p>
</div>
</div>
</body>
</html>
<?php }?>