Česky
Kamil Dudka

Tiny programs (C, C++, C#, ...)

File detail

Name:Downloadlogin.php [Download]
Detected charset:ISO-8859-2 - [Download as UTF-8]
Location: tiny > IIS > proj
Size:4.8 KB
Last modification:2022-09-09 13:06

Source code

<?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();
?>