Drobné programy (C, C++, C#, ...)
Detail souboru
Zdrojový kód
<?php
include_once ("engine/ui.php");
$userAuth= UserAuth::singleton();
if (isset ($_GET["op"]) && $_GET["op"]=="login") {
// Login request
if (!ini_get ("magic_quotes_gpc")) {
// Security..
$_POST['user']= addslashes ($_POST["user"]);
$_POST['passwd']= addslashes ($_POST["passwd"]);
}
$szRole= $userAuth-> login($_POST["user"], $_POST["passwd"]);
if (!empty ($szRole)) {
// Login successful. Redirect to role-specific page.
header (
"Location: ".
Page::linkToWebRoot()."/".$szRole.Page::phpFileExt()
);
exit();
}
}
if (isset ($_GET["op"]) && $_GET["op"]=="logout")
// Logout request
$userAuth-> logout();
$szReason= @$_GET["reason"];
$bLogout= ($szReason== UserAuth::USER_LOGOUT);
$bSetPasswd= !$bLogout && @$_GET["op"]=="setPasswd";
if ($bLogout)
define ("TITLE", "Úspěšné odhlášení");
else if ($bSetPasswd)
define ("TITLE", "Změna hesla");
else
define ("TITLE", "Přihlášení do systému");
HtTitle::singleton()-> setTitle (TITLE);
HtStyleLink::linkUserStyle();
$layout= new BasicLayout;
$canvas= HtBlock::factory ("div", $layout, "#pageContent");
HtInline::factory ("h1", $canvas)-> addText (TITLE);
// Initialize user menu, if user is logged in
$page = $bSetPasswd ? 'setPasswd':'';
switch ($userAuth->getRole()) {
case 'manager':
new MenuManager ($layout, $page);
break;
case 'dealer':
new MenuDealer ($layout, $page);
break;
case 'transporter':
new MenuTransporter ($layout, $page);
break;
}
if ($bSetPasswd) {
if (!$userAuth-> logged()) {
$userAuth-> logout(UserAuth::ACCESS_DENIED);
return;
}
if (@$_POST['setPasswd']=='true' && isset($_POST['currentPasswd'], $_POST['passwd1'], $_POST['passwd2'])) {
// request handling
$szCurrentPasswd= $_POST['currentPasswd'];
$szPasswd1= $_POST["passwd1"];
$szPasswd2= $_POST["passwd2"];
if (!ini_get ("magic_quotes_gpc")) {
$szCurrentPasswd= addslashes ($szCurrentPasswd);
$szPasswd1= addslashes ($szPasswd1);
$szPasswd2= addslashes ($szPasswd2);
}
$szUser= $userAuth-> getUser();
$q= new DbQuery ("SELECT user FROM users WHERE passwd=password('$szCurrentPasswd') AND user='$szUser'");
if ($q->getNumRows() !=1) {
HtInline::factory ('p', $canvas)-> addText("Zadali jste špatné současné heslo. Zkuste to, prosím, znovu.");
} else if (empty($szPasswd1)) {
HtInline::factory ("p", $canvas)-> addText("Heslo nesmí být <b>prázdné</b>.");
} else if ($szPasswd1 != $szPasswd2) {
HtInline::factory ("p", $canvas)-> addText("Heslo pro kontrolu se <b>neshoduje</b> s původním heslem.");
} else {
new DbQuery("UPDATE users SET passwd=password('$szPasswd1') WHERE user='$szUser';");
HtInline::factory ("p", $canvas)-> addText("Změna hesla uživatele <b>".htmlentities(stripslashes($szUser))."</b> provedena.");
$p= HtInline::factory ("p", $canvas)-> addText("Pokračujte <a href=\"".Page::linkToWebRoot()."\">zde</a>.");
$layout-> draw();
return;
}
}
new SetPasswdWidget ($canvas, Page::linkToWebRoot()."/login".Page::phpFileExt().'?op=setPasswd', true);
$layout-> draw();
return;
}
switch ($szReason) {
case UserAuth::LOGIN_INCORRECT:
HtInline::factory ("p", $canvas, 'font-weight:bold;')-> addText ("Neplatné uživatelské jméno nebo heslo.");
HtInline::factory ('p', $canvas)-> addText ('Zkuste se, prosím, přihlásit znovu:');
break;
case UserAuth::ACCESS_DENIED:
HtInline::factory ("p", $canvas)-> addText ("Pro přístup na tuto stránku se musíte napřed přihlásit do systému. Děkujeme za pochopení.");
break;
case UserAuth::INACTIVITY_TIMEOUT:
HtInline::factory ("p", $canvas)-> addText ("Byla zaznamenána Vaše <b>dlouhodobá nečinost</b>. Systém Vás odhlásil z bezpečnostních důvodů. Děkujeme za pochopení.");
break;
case UserAuth::USER_LOGOUT:
HtInline::factory ("p", $canvas)-> addText ("Byl jste úspěšně odhlášen ze systému. Děkujeme za použití informačního systému a těšíme se na Vaši příští návštěvu.");
break;
default: // TODO: place default somewhere
}
$loginCanvas= HtBlock::factory ("div", $canvas, "", Array("id"=>"loginCanvas"));
if ($bLogout)
HtInline::factory ("h2", $loginCanvas, "margin-top:2em;")-> addText ("Znovu přihlásit");
new LoginWidget ($loginCanvas);
if ($bLogout) {
class MyScript implements Text {
public function draw()
{ ?>
<script type="text/javascript">
function showLoginWidget()
{
x= document.getElementById("loginCanvas"); x.style.display= "block";
x= document.getElementById("showLogin"); x.style.display= "none";
}
</script>
<?php
}
};
Page::singleton()-> addToHead (new MyScript);
$loginCanvas-> setStyle("display:none;");
$p=HtInline::factory ('p', $canvas, '#showLogin');
HtInline::factory ('a', $p, '',
Array('href'=>'javascript:showLoginWidget();')
)-> addText('Znovu přihlásit');
}
$layout-> draw();
?>