<?php

include "config.inc.php";

if($GLOBALS['USER_KEY_VALID']) {

	header("Location: _customer"); 
	exit();
}

if(isset($_POST['btn_login'])) {

	user::user_log_ip(stripslashes($_POST['username'] ?? ''));

	try {

		if (!is_login_locked()) {

			if (isset($_SESSION["login_attempts"])) {
				
				$_SESSION["login_attempts"]++;

				if ($_SESSION["login_attempts"] >= $GLOBALS["login_attempts_max"]) {
					$_SESSION["login_lock"] = strtotime("NOW +". $GLOBALS["login_attempts_lock_length"] ." minutes");
				}
			} else {
				$_SESSION["login_attempts"] = 1;
			}

			if(empty($_POST['username']) || empty($_POST['password'])) {
			    
			    throw new Exception("Anna käyttäjänimi ja salasana.");
			} else {

			    $given_username = stripslashes(trim($_POST['username']));
			    $given_password = $_POST['password'];
			}

			$db_user = new user();
			$db_user->username = $given_username;
			if(!$db_user->get_item()) {

			    throw new Exception("Kirjautuminen epäonnistui. Tarkista käyttäjänimi ja salasana.");
			} else {

				if (password_verify($given_password, $db_user->password) !== true) {
					
					throw new Exception("Kirjautuminen epäonnistui. Tarkista käyttäjänimi ja salasana.");
				}

			    // CALCULATE session expiration time (in minutes)
			    $exp_time = $db_user->set_exp_time();

			    // Replace old login information with new
			    $query = "
			        REPLACE INTO ".$tbl['logins']."
			        SET user_id = '".$db_user->id."',
			            session_key = '".session_id()."',
			            exp_time = '".$exp_time."'
			        ";

			    $result = $db->query($query);

			    $login_saved = $db->affected_rows($result);

			    // If replace successful
			    if($login_saved > 0) {			    	

			        $_SESSION['user_id'] = $db_user->id;
					$_SESSION['last_login'] = date("j.n.Y G:i:s", $db_user->last_login);
					$_SESSION['last_login_ip'] = $db_user->last_login_ip;
					
					$ip_address = $_SERVER['REMOTE_ADDR'];

			        $db->query("
			            UPDATE ".$tbl['users']."
			            SET times_logged = times_logged + 1,
			                last_login = NOW(),
			                last_login_ip = '". $db->escape_string($ip_address) ."'
			            WHERE id = '". $db->escape_string($db_user->id) ."'
			        ");

			        unset($_SESSION["login_attempts"], $_SESSION["login_lock"]);

					header("Location: index.php"); 
					exit();

			    } else {

			        throw new Exception("Kirjautuminen epäonnistui. Ole hyvä ja yritä uudelleen.");
			    }
		    }
	    } else {

			throw new Exception("Liian monta kirjautumisyritystä. Kirjautuminen lukittu.");
		}
	} catch (Exception $e) {
	
		$GLOBALS["ERROR"][] = $e->getMessage();
	}
}

$PAGE_TITLE = "Kirjautuminen";

?>

<!DOCTYPE html>
<html lang="fi">
<head>

	<title><?= h($PAGE_TITLE); ?> | <?= h($GLOBALS['company_name']); ?></title>

	<meta charset="<?= $GLOBALS["site_charset"]; ?>">
	<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
	<meta name="author" content="<?= h($GLOBALS['company_name']); ?>">
	
<!-- 	<link rel="apple-touch-icon" sizes="180x180" href="<?= $GLOBALS['site_root']; ?>apple-touch-icon.png">
	<link rel="icon" type="image/png" sizes="32x32" href="<?= $GLOBALS['site_root']; ?>favicon-32x32.png">
	<link rel="icon" type="image/png" sizes="16x16" href="<?= $GLOBALS['site_root']; ?>favicon-16x16.png">
	<link rel="manifest" href="<?= $GLOBALS['site_root']; ?>site.webmanifest">
	<meta name="msapplication-TileColor" content="#da532c">
	<meta name="theme-color" content="#0B080B"> -->

<!-- 	<link rel="preconnect" href="https://fonts.googleapis.com">
	<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
	<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600&display=swap" rel="stylesheet"> -->

	<link rel="stylesheet" type="text/css" href="<?= $GLOBALS['site_root'] ."css/styles.css?v=". filemtime($GLOBALS['physical_root'] ."css/styles.css"); ?>">

</head>
<body id="login">

	<section>

		<?php print_global_messages(); ?>

		<img src="<?= $GLOBALS['site_root']; ?>img/header-icon.svg" alt="">

		<h3><?= h($GLOBALS['company_name']); ?></h3>

		<form action="index.php" method="post">
			
			<input type="text" name="username" maxlength="255" value="<?= ha($_POST['username'] ?? ""); ?>" autofocus placeholder="Käyttäjänimi">

			<input type="password" name="password" maxlength="255" placeholder="Salasana">

			<button type="submit" name="btn_login" class="button">Kirjaudu</button>

		</form>

		<noscript>
			
			<div class="notice"><p>Kytke Javascript päälle selaimesi asetuksissa käyttääksesi portaalia.</p></div>

			<style>
				body#login form {
					display: none;
				}
			</style>

		</noscript>

	</section>

</body>
</html>