Subversion Repositories Applications.reseau

Compare Revisions

Ignore whitespace Rev 67 → Rev 68

/trunk/widget/modules/auth/squelettes/auth_fr.tpl.php
25,6 → 25,8
 
<script>
baseUrlAuth = '<?php echo $baseUrlAuth ?>';
origine = '<?php echo $origine ?>';
action = '<?php echo $action ?>';
</script>
</head>
 
/trunk/widget/modules/auth/squelettes/js/defaut.js
52,35 → 52,49
 
// Connexion au SSO
$('#formulaire-identification').submit(function() {
var login = $('#login').val(),
mdp = $('#mdp').val();
if (login == '' || mdp == '') {
alert('Veuillez entrer votre login et votre mot de passe');
} else {
var urlAuth = baseUrlAuth + '/connexion?login=' + login + '&password=' + mdp;
$.ajax({
url: urlAuth,
type: "GET",
dataType: 'json',
xhrFields: {
withCredentials: true
}
})
.done(function(data) {
definirUtilisateur(data.token);
afficherPanneauBienvenue();
masquerErreurs();
})
.fail(function(error) {
afficherErreurLogin();
});
}
connecterUtilisateur();
return false;
});
 
// Déconnexion du SSO
$('#deconnexion').click(function() {
var urlAuth = baseUrlAuth + '/deconnexion';
deconnecterUtilisateur();
return false;
});
 
// vérification de l'état au chargement
var urlAuth = baseUrlAuth + '/identite';
$.ajax({
url: urlAuth,
type: "GET",
dataType: 'json',
xhrFields: {
withCredentials: true
}
}).done(function(data) {
// connecté
definirUtilisateur(data.token);
afficherPanneauBienvenue();
})
.fail(function(error) {
// non connecté
afficherPanneauIdentification();
});
 
// exécuter une action si définie (par ex: déconnexion)
executerAction();
});
 
/**
* Connecte l'utilisateur au SSO
*/
function connecterUtilisateur() {
var login = $('#login').val(),
mdp = $('#mdp').val();
if (login == '' || mdp == '') {
alert('Veuillez entrer votre login et votre mot de passe');
} else {
var urlAuth = baseUrlAuth + '/connexion?login=' + login + '&password=' + mdp;
$.ajax({
url: urlAuth,
type: "GET",
90,20 → 104,22
}
})
.done(function(data) {
definirUtilisateur();
afficherPanneauIdentification();
rediriger();
definirUtilisateur(data.token);
afficherPanneauBienvenue();
masquerErreurs();
})
.fail(function(error) {
// @TODO gérer l'affichage de l'erreur, mais pas facile à placer
// dans l'interface actuelle sans que ce soit moche
//afficherErreurServeur();
afficherErreurLogin();
});
return false;
});
}
}
 
// vérification de l'état au chargement
var urlAuth = baseUrlAuth + '/identite';
/**
* Déconnecte l'utilisateur du SSO
*/
function deconnecterUtilisateur() {
var urlAuth = baseUrlAuth + '/deconnexion';
$.ajax({
url: urlAuth,
type: "GET",
111,61 → 127,88
xhrFields: {
withCredentials: true
}
}).done(function(data) {
// connecté
definirUtilisateur(data.token);
afficherPanneauBienvenue();
})
.done(function(data) {
rediriger();
definirUtilisateur();
afficherPanneauIdentification();
masquerErreurs();
})
.fail(function(error) {
// non connecté
afficherPanneauIdentification();
// @TODO gérer l'affichage de l'erreur, mais pas facile à placer
// dans l'interface actuelle sans que ce soit moche
//afficherErreurServeur();
});
}
 
function definirUtilisateur(jeton) {
var nomComplet = '';
if (jeton != undefined) {
// décodage jeton
var jetonDecode = decoderJeton(jeton);
nomComplet = jetonDecode.intitule;
}
// affichage
$('#nom-complet').html(nomComplet);
/**
* Si la variable "action" est définie (provenant du paramètre GET "origine"),
* exécute l'action associée (par ex: déconnexion)
*/
function executerAction() {
switch (action) {
case "deconnexion":
deconnecterUtilisateur();
break;
default :
// on ne fait rien
}
}
 
/**
* Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE
* JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple
* Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/
* ou ceci : https://code.google.com/p/crypto-js
*/
function decoderJeton(jeton) {
parts = jeton.split('.');
payload = parts[1];
payload = atob(payload);
payload = JSON.parse(payload, true);
function definirUtilisateur(jeton) {
var nomComplet = '';
if (jeton != undefined) {
// décodage jeton
var jetonDecode = decoderJeton(jeton);
nomComplet = jetonDecode.intitule;
}
// affichage
$('#nom-complet').html(nomComplet);
}
 
return payload;
}
/**
* Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE
* JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple
* Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/
* ou ceci : https://code.google.com/p/crypto-js
*/
function decoderJeton(jeton) {
parts = jeton.split('.');
payload = parts[1];
payload = atob(payload);
payload = JSON.parse(payload, true);
 
function afficherPanneauIdentification() {
$('#panneau-identification').show();
$('#panneau-bienvenue').hide();
}
return payload;
}
 
function afficherPanneauBienvenue() {
$('#panneau-identification').hide();
$('#panneau-bienvenue').show();
/**
* Si la variable "origine" est définie (provenant du paramètre GET "origine"),
* redirige l'utilisateur vers cette page
*/
function rediriger() {
if (origine != '') {
window.location.href = origine;
}
}
 
function afficherErreurLogin() {
$('#info-erreur-login').show();
}
function afficherPanneauIdentification() {
$('#panneau-identification').show();
$('#panneau-bienvenue').hide();
}
 
function afficherErreurServeur() {
$('#info-erreur-serveur').show();
}
function afficherPanneauBienvenue() {
$('#panneau-identification').hide();
$('#panneau-bienvenue').show();
}
 
function masquerErreurs() {
$('.info-erreur').hide();
}
});
function afficherErreurLogin() {
$('#info-erreur-login').show();
}
 
function afficherErreurServeur() {
$('#info-erreur-serveur').show();
}
 
function masquerErreurs() {
$('.info-erreur').hide();
}
/trunk/widget/modules/auth/Auth.php
16,6 → 16,8
 
protected $langue;
protected $langueDefaut;
protected $origine;
protected $action;
protected $baseUrlAuth;
 
public function __construct($config, $parametres) {
28,7 → 30,8
* Méthode appelée par défaut pour charger ce widget
*/
public function executer() {
//$this->collecterParametres();
$this->collecterParametres();
// choix du squelette en fonction de la langue
$squelette = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'squelettes' . DIRECTORY_SEPARATOR . 'auth_' . $this->langue . '.tpl.php';
if (! file_exists($squelette)) {
$squelette = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'squelettes' . DIRECTORY_SEPARATOR . 'auth_' . $this->langueDefaut . '.tpl.php';
37,9 → 40,25
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/auth/squelettes/css/defaut.css');
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/auth/squelettes/js/defaut.js');
$widget['donnees']['baseUrlAuth'] = $this->baseUrlAuth;
$widget['donnees']['origine'] = $this->origine;
$widget['donnees']['action'] = $this->action;
 
$contenu = $this->traiterSquelettePhp($squelette, $widget['donnees']);
$this->envoyer($contenu);
}
 
protected function collecterParametres() {
if (isset($_GET['origine']) && $_GET['origine'] != '') {
$this->origine = $_GET['origine'];
}
if (isset($_GET['action']) && $_GET['action'] != '') {
$this->action = $_GET['action'];
}
if (isset($_GET['lang']) && $_GET['lang'] != '') {
$this->langue = $_GET['lang'];
} else {
$this->langue = $this->langueDefaut;
}
}
}
?>