commit 793a2c687f1328578258d5697ca7c92bd89edf95
Author: Filip Jani <jsem@filek.cz>
Date:   Thu Apr 11 16:30:41 2019 +0200

    7216 přidání přihlašování uživatelů a úprava namespace pro repository

diff --git a/app/component/ExampleGrid.php b/app/component/ExampleGrid.php
index 830f1c1..08f7541 100644
--- a/app/component/ExampleGrid.php
+++ b/app/component/ExampleGrid.php
@@ -5,7 +5,7 @@ namespace App\Components;
 
 
 use App\Utils\DataGrid\DataGrid;
-use Model\Repository\LineRepository;
+use App\Model\Repository\LineRepository;
 use Ublaboo\DataGrid\Exception\DataGridException;
 
 /**
diff --git a/app/component/Login/LoginForm.latte b/app/component/Login/LoginForm.latte
new file mode 100644
index 0000000..a2f7fa7
--- /dev/null
+++ b/app/component/Login/LoginForm.latte
@@ -0,0 +1,11 @@
+<div class="col-3">
+    {form form class => 'form'}
+        {label \App\Model\Repository\UserRepository::COLUMN_LOGIN}
+        {input \App\Model\Repository\UserRepository::COLUMN_LOGIN class => 'form-control'}
+
+        {label \App\Model\Repository\UserRepository::COLUMN_PASSWORD}
+        {input \App\Model\Repository\UserRepository::COLUMN_PASSWORD class => 'form-control'}
+
+        {input submit class => 'form-control btn btn-success mt-4'}
+    {/form}
+</div>
\ No newline at end of file
diff --git a/app/component/Login/LoginForm.php b/app/component/Login/LoginForm.php
new file mode 100644
index 0000000..263ef43
--- /dev/null
+++ b/app/component/Login/LoginForm.php
@@ -0,0 +1,59 @@
+<?php
+
+
+namespace App\Components;
+
+
+use App\Enum\EFlashMessage;
+use App\Model\Repository\UserRepository;
+use Nette\Application\UI\Control;
+use Nette\Application\UI\Form;
+use Nette\Security\AuthenticationException;
+
+class LoginForm extends Control
+{
+    public function render()
+    {
+        $this->template->setFile(__DIR__ . '/LoginForm.latte');
+        $this->template->render();
+    }
+
+    protected function createComponentForm()
+    {
+        $form = new Form;
+
+        $form->addText(UserRepository::COLUMN_LOGIN, 'Login');
+        $form->addPassword(UserRepository::COLUMN_PASSWORD, 'Password');
+
+        $form->addSubmit('submit', 'Login');
+
+        $form->onSuccess[] = [$this, 'formSuccess'];
+
+        return $form;
+    }
+
+    public function formSuccess(Form $form)
+    {
+        $values = $form->getValues();
+
+        try
+        {
+            $this->presenter->user->login($values->{UserRepository::COLUMN_LOGIN}, $values->{UserRepository::COLUMN_PASSWORD});
+        } catch (AuthenticationException $ex)
+        {
+            $this->presenter->flashMessage($ex->getMessage(), EFlashMessage::ERROR);
+            $this->presenter->redirect('Homepage:login');
+        }
+
+        $this->presenter->flashMessage('Přihlášení bylo úspěšné.', EFlashMessage::SUCCESS);
+        $this->presenter->redirect('Homepage:default');
+    }
+}
+
+interface ILoginFormFactory
+{
+    /**
+     * @return LoginForm
+     */
+    public function create();
+}
\ No newline at end of file
diff --git a/app/config/components.neon b/app/config/components.neon
index c685bd9..47713fa 100644
--- a/app/config/components.neon
+++ b/app/config/components.neon
@@ -2,4 +2,5 @@ services:
     # Gridy
     - App\Components\IExampleGirdFactory
 
-    # Formuláře
\ No newline at end of file
+    # Formuláře
+    - App\Components\ILoginFormFactory
\ No newline at end of file
diff --git a/app/config/config.neon b/app/config/config.neon
index a64ff21..a6e3b77 100644
--- a/app/config/config.neon
+++ b/app/config/config.neon
@@ -13,4 +13,4 @@ session:
 
 services:
 	router: App\RouterFactory::createRouter
-	authenticator: Model\Authenticator
+	authenticator: App\Model\Authenticator
diff --git a/app/config/model.neon b/app/config/model.neon
index 46829e7..b878695 100644
--- a/app/config/model.neon
+++ b/app/config/model.neon
@@ -1,17 +1,17 @@
 services:
-    - Model\Repository\Repository
-    - Model\Repository\BookRepository
-    - Model\Repository\BookTypeRepository
-    - Model\Repository\LineRepository
-    - Model\Repository\LitReferenceRepository
-    - Model\Repository\MuseumRepository
-    - Model\Repository\ObjectTypeRepository
-    - Model\Repository\OriginRepository
-    - Model\Repository\RoleRepository
-    - Model\Repository\RevHistoryRepository
-    - Model\Repository\SurfaceRepository
-    - Model\Repository\SurfaceTypeRepository
-    - Model\Repository\TransliterationRepository
-    - Model\Repository\UserLogRepository
-    - Model\Repository\UserRepository
-    - Model\Repository\UserRoleRepository
\ No newline at end of file
+    - App\Model\Repository\Repository
+    - App\Model\Repository\BookRepository
+    - App\Model\Repository\BookTypeRepository
+    - App\Model\Repository\LineRepository
+    - App\Model\Repository\LitReferenceRepository
+    - App\Model\Repository\MuseumRepository
+    - App\Model\Repository\ObjectTypeRepository
+    - App\Model\Repository\OriginRepository
+    - App\Model\Repository\RoleRepository
+    - App\Model\Repository\RevHistoryRepository
+    - App\Model\Repository\SurfaceRepository
+    - App\Model\Repository\SurfaceTypeRepository
+    - App\Model\Repository\TransliterationRepository
+    - App\Model\Repository\UserLogRepository
+    - App\Model\Repository\UserRepository
+    - App\Model\Repository\UserRoleRepository
\ No newline at end of file
diff --git a/app/enum/EFlashMessage.php b/app/enum/EFlashMessage.php
new file mode 100644
index 0000000..89f14bb
--- /dev/null
+++ b/app/enum/EFlashMessage.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Enum;
+
+class EFlashMessage
+{
+    const SUCCESS = "success";
+    const ERROR = "danger";
+    const INFO = "info";
+    const WARNING = "warning";
+}
\ No newline at end of file
diff --git a/app/model/Authenticator.php b/app/model/Authenticator.php
index 32cfd48..fefb418 100644
--- a/app/model/Authenticator.php
+++ b/app/model/Authenticator.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Model;
+namespace App\Model;
 
-use Model\Repository\UserRepository;
-use Model\Repository\UserRoleRepository;
+use App\Model\Repository\UserRepository;
+use App\Model\Repository\UserRoleRepository;
 use Nette\Security\AuthenticationException;
 use Nette\Security\IAuthenticator;
 use Nette\Security\Identity;
@@ -32,9 +32,9 @@ class Authenticator implements IAuthenticator
      */
     function authenticate(array $credentials)
     {
-        list($username, $password) = $credentials;
+        list($login, $password) = $credentials;
 
-        $row = $this->userRepository->findByUsername($username);
+        $row = $this->userRepository->findByLogin($login);
         if(!$row){
             throw new AuthenticationException('Uživatel nebyl nalezen.');
         }
@@ -49,6 +49,6 @@ class Authenticator implements IAuthenticator
         $roles = $row->related(UserRoleRepository::TABLE_NAME, UserRoleRepository::COLUMN_USER_ID)
             ->fetchField(UserRoleRepository::COLUMN_ROLE_ID);
 
-        return new Identity($row->{UserRepository::COLUMN_ID}, $roles);
+        return new UserIdentity($row->{UserRepository::COLUMN_ID}, $row->{UserRepository::COLUMN_USERNAME}, $roles);
     }
 }
\ No newline at end of file
diff --git a/app/model/UserIdentity.php b/app/model/UserIdentity.php
new file mode 100644
index 0000000..9aaf05e
--- /dev/null
+++ b/app/model/UserIdentity.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Model;
+
+use Nette\Security\Identity;
+
+/**
+ * Rozšíření identity o jméno uživatele
+ *
+ * @package App\Model
+ */
+class UserIdentity extends Identity
+{
+    /** @property */
+    public $username;
+
+    public function __construct($id, $username, $roles = null, $data = null)
+    {
+        parent::__construct($id, $roles, $data);
+
+        $this->username = $username;
+    }
+
+    /**
+     * Vrací uživatelské jméno
+     *
+     * @return string
+     */
+    public function getUsername()
+    {
+        return $this->username;
+    }
+}
\ No newline at end of file
diff --git a/app/model/repository/BookRepository.php b/app/model/repository/BookRepository.php
index 43b266e..200cb4d 100644
--- a/app/model/repository/BookRepository.php
+++ b/app/model/repository/BookRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `book`
diff --git a/app/model/repository/BookTypeRepository.php b/app/model/repository/BookTypeRepository.php
index 1dbc886..dcb054b 100644
--- a/app/model/repository/BookTypeRepository.php
+++ b/app/model/repository/BookTypeRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `book_type`
diff --git a/app/model/repository/LineRepository.php b/app/model/repository/LineRepository.php
index 832c68f..bdb04a0 100644
--- a/app/model/repository/LineRepository.php
+++ b/app/model/repository/LineRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `line`
diff --git a/app/model/repository/LitReferenceRepository.php b/app/model/repository/LitReferenceRepository.php
index cdcdc0a..0440684 100644
--- a/app/model/repository/LitReferenceRepository.php
+++ b/app/model/repository/LitReferenceRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `lit_reference`
diff --git a/app/model/repository/MuseumRepository.php b/app/model/repository/MuseumRepository.php
index c4aa0ca..ed7efb5 100644
--- a/app/model/repository/MuseumRepository.php
+++ b/app/model/repository/MuseumRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `museum`
diff --git a/app/model/repository/ObjectTypeRepository.php b/app/model/repository/ObjectTypeRepository.php
index 9411380..3a1e3f8 100644
--- a/app/model/repository/ObjectTypeRepository.php
+++ b/app/model/repository/ObjectTypeRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `object_type`
diff --git a/app/model/repository/OriginRepository.php b/app/model/repository/OriginRepository.php
index 3c1597c..cdbf508 100644
--- a/app/model/repository/OriginRepository.php
+++ b/app/model/repository/OriginRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `origin`
diff --git a/app/model/repository/Repository.php b/app/model/repository/Repository.php
index 3b828f9..dfcd4f7 100644
--- a/app/model/repository/Repository.php
+++ b/app/model/repository/Repository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 use Nette;
 
diff --git a/app/model/repository/RevHistoryRepository.php b/app/model/repository/RevHistoryRepository.php
index d6d121c..9c8032d 100644
--- a/app/model/repository/RevHistoryRepository.php
+++ b/app/model/repository/RevHistoryRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `rev_hisotry`
diff --git a/app/model/repository/RoleRepository.php b/app/model/repository/RoleRepository.php
index 3f01174..93cc9db 100644
--- a/app/model/repository/RoleRepository.php
+++ b/app/model/repository/RoleRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `role`
diff --git a/app/model/repository/SurfaceRepository.php b/app/model/repository/SurfaceRepository.php
index d070885..cfbdec2 100644
--- a/app/model/repository/SurfaceRepository.php
+++ b/app/model/repository/SurfaceRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `surface`
diff --git a/app/model/repository/SurfaceTypeRepository.php b/app/model/repository/SurfaceTypeRepository.php
index 98f6889..d5655cf 100644
--- a/app/model/repository/SurfaceTypeRepository.php
+++ b/app/model/repository/SurfaceTypeRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `surface_type`
diff --git a/app/model/repository/TransliterationRepository.php b/app/model/repository/TransliterationRepository.php
index f1b2571..1fecefd 100644
--- a/app/model/repository/TransliterationRepository.php
+++ b/app/model/repository/TransliterationRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `transliteration`
diff --git a/app/model/repository/UserLogRepository.php b/app/model/repository/UserLogRepository.php
index 10d7fa3..ca7546d 100644
--- a/app/model/repository/UserLogRepository.php
+++ b/app/model/repository/UserLogRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `user_log`
diff --git a/app/model/repository/UserRepository.php b/app/model/repository/UserRepository.php
index 212f3f5..50476cc 100644
--- a/app/model/repository/UserRepository.php
+++ b/app/model/repository/UserRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 use Nette\Database\Table\ActiveRow;
 
@@ -25,13 +25,13 @@ class UserRepository extends Repository
     const COLUMN_UPDATED = 'updated';
 
     /**
-     * Nalezne uživatele v DB podle uživatelského jména
+     * Nalezne uživatele v DB podle loginu
      *
-     * @param string $username
+     * @param string $login
      * @return ActiveRow|false
      */
-    public function findByUsername(string $username): ActiveRow
+    public function findByLogin(string $login)
     {
-        return $this->findBy([self::COLUMN_USERNAME => $username])->fetch();
+        return $this->findBy([self::COLUMN_LOGIN => $login])->fetch();
     }
 }
\ No newline at end of file
diff --git a/app/model/repository/UserRoleRepository.php b/app/model/repository/UserRoleRepository.php
index d638165..610d2bc 100644
--- a/app/model/repository/UserRoleRepository.php
+++ b/app/model/repository/UserRoleRepository.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Model\Repository;
+namespace App\Model\Repository;
 
 /**
  * Repository pro práci s tabulkou `user_role`
diff --git a/app/presenters/HomepagePresenter.php b/app/presenters/HomepagePresenter.php
index ec02ca1..216b596 100644
--- a/app/presenters/HomepagePresenter.php
+++ b/app/presenters/HomepagePresenter.php
@@ -3,6 +3,8 @@
 namespace App\Presenters;
 
 use App\Components\IExampleGirdFactory;
+use App\Components\ILoginFormFactory;
+use App\Enum\EFlashMessage;
 use Nette;
 
 
@@ -10,19 +12,56 @@ final class HomepagePresenter extends Nette\Application\UI\Presenter
 {
     /** @var IExampleGirdFactory  */
     private $exampleGridFactory;
+    /** @var ILoginFormFactory */
+    private $loginFormFactory;
 
-    public function __construct(IExampleGirdFactory $exampleGridFactory)
+    public function __construct(IExampleGirdFactory $exampleGridFactory, ILoginFormFactory $loginFormFactory)
     {
         parent::__construct();
 
         $this->exampleGridFactory = $exampleGridFactory;
+        $this->loginFormFactory = $loginFormFactory;
     }
 
-    public function actionDefault(){
+    public function actionDefault()
+    {
+
+    }
+
+    public function actionLogin()
+    {
+        if ($this->user->isLoggedIn())
+        {
+            $this->redirect('Homepage:default');
+        }
+    }
 
+    public function actionLogout()
+    {
+        if ($this->getUser()->isLoggedIn())
+        {
+            $this->user->logout(true);
+
+            $this->flashMessage('Odhlášení bylo úspěšné.', EFlashMessage::SUCCESS);
+            $this->redirect('Homepage:default');
+        }
+    }
+
+    /**
+     * Komponenta přihlašovacího formuláře
+     *
+     * @return \App\Components\LoginForm
+     */
+    public function createComponentLoginForm()
+    {
+        return $this->loginFormFactory->create();
     }
 
-    public function createComponentDataGrid(){
+    /**
+     * Vytvoření ukázkového gridu
+     */
+    public function createComponentDataGrid()
+    {
         return $this->exampleGridFactory->create();
     }
 }
diff --git a/app/presenters/templates/@layout.latte b/app/presenters/templates/@layout.latte
index 7db30f1..b640850 100644
--- a/app/presenters/templates/@layout.latte
+++ b/app/presenters/templates/@layout.latte
@@ -1,15 +1,13 @@
 <!DOCTYPE html>
-<html>
+<html lang="en">
 <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width">
+    <meta charset="UTF-8">
 
-    <title>{ifset title}{include title|stripHtml} | {/ifset}Nette Web</title>
+    <title>{ifset title}{include title|stripHtml} | {/ifset}Old Babylonian Text Corpus</title>
 
     <!-- jQuery -->
-    <script
-            src="https://code.jquery.com/jquery-3.3.1.min.js"
-            integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
+    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
+            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
             crossorigin="anonymous"></script>
 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.js"
@@ -40,22 +38,75 @@
     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css"
           integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
 
+    <link rel="stylesheet" href="{$basePath}/css/front/style.css">
 
     <script src="https://nette.github.io/resources/js/netteForms.min.js"></script>
     <script src="{$basePath}/js/nette.ajax.js"></script>
-</head>
 
+</head>
 <body>
-<div n:foreach="$flashes as $flash" n:class="flash, $flash->type">{$flash->message}</div>
+<!--Navbar-->
+<div class="jumbotron jumbotron-fluid header-logo">
+    <div class="container text-center">
+        <div class="display-4"><a href="landing-page.html">Old Babylonian Text Corpus</a></div>
+    </div>
+</div>
+<nav class="navbar navbar-expand-lg navbar-dark bg-primary" style="background-color: #003366 !important;">
+    <ul class="navbar-nav mr-auto">
+        <li class="nav-item">
+            <a class="nav-link" href="search-texts.html">Search & edit texts</a>
+        </li>
+        <li class="nav-item">
+            <a class="nav-link" href="#">Search dictionary</a>
+        </li>
+        <li class="nav-item">
+            <a class="nav-link" href="#">Text catalogue</a>
+        </li>
+        <li class="nav-item">
+            <a class="nav-link" href="#">Catalogue of cuneiform signs</a>
+        </li>
+        <li class="nav-item">
+            <a class="nav-link" href="#">Contact & members</a>
+        </li>
+        <li class="nav-item">
+            <a class="nav-link" href="#">Input new text</a>
+        </li>
+        <li class="nav-item">
+            <a class="nav-link" href="admin.html">Admin</a>
+        </li>
+    </ul>
+    {if $user->loggedIn}
+    <span class="navbar-text" style="padding-right: 1rem">
+            User: <strong>{$user->getIdentity()->username}</strong>
+        </span>
+    {/if}
+    <div class="navbar-nav nav-item">
+        {if $user->loggedIn}
+            <a class="nav-link" n:href="Homepage:logout">Logout</a>
+            <a class="nav-link" href="#">Change Password</a>
+        {else}
+            <a class="nav-link" n:href="Homepage:login">Login</a>
+        {/if}
+    </div>
+</nav>
+
+<!--Content-->
+<div class="content">
+    <div n:foreach="$flashes as $flash" n:class="alert, 'alert-' . $flash->type">{$flash->message}</div>
+
+    {include content}
+</div>
 
-{include content}
+{ifset scripts}{include scripts}{/ifset}
 
-{block scripts}
-    <script>
-        $(function () {
-            $.nette.init();
-        });
-    </script>
-{/block}
+<!--Footer-->
+<footer class="footer">
+    <div class="container">
+        <div class="text-center">
+            © Furat Rahman - Faculty of Philosophy - University of West Bohemia in Pilsen and Cuneiform Circle 2002-2005<br>
+            Created by Medici - Faculty of Applied Science - University of West Bohemia in Pilsen
+        </div>
+    </div>
+</footer>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/app/presenters/templates/Homepage/default.latte b/app/presenters/templates/Homepage/default.latte
index 007920d..7d5e1aa 100644
--- a/app/presenters/templates/Homepage/default.latte
+++ b/app/presenters/templates/Homepage/default.latte
@@ -1,11 +1,58 @@
-{* This is the welcome page, you can delete it *}
-
 {block content}
+<div class="display-5">Old Babylonian Text Corpus by Cuneiform Circle</div>
+<hr>
+
+<div class="row">
+    <div class="col">
+        <dl class="row">
+            <dt class="col-sm-3">OB motto</dt>
+            <dd class="col-sm-9">a-na D:na-bi-um-ma-lik a-wi-lim dam-qí-im ša D:AMAR.UTU ù D:na-bi-um GI.DUB.BA-šu ú-še-še-ru (AbB 3,33,1-4)</dd>
+        </dl>
 
-<div class="container">
-    <div class="row">
-        <div class="col-md-12">
-            {control dataGrid}
+        <div class="alert alert-primary">
+            If you have interest in Old Babylonian Akkadian Texts, don't hesitate to join us! You are welcome!
         </div>
     </div>
-</div>
\ No newline at end of file
+    <div class="col">
+        <form method="get" action="/utf/utf/show2boger.php" onclick="this.target='_blank'" target="_blank">
+            <p class="blue">
+                <label for="borger">Input Borger's ABZ number:</label>
+                <input class="td5" type="text" id="borger" name="borger" size="3" value="333">
+                <input class="tlacitko2" type="submit" value=" find ">
+            </p>
+            <p class="blue">
+                This is a quick search to find variants of signs according to Borger's number from Old Babylonian Graphemic Analyses.
+                <a class="noline" href="/utf/utf/signs.html" onclick="this.target='_blank'">
+                    Click here for an advanced search.</a>
+
+            </p>
+            <p>
+                <a class="noline" href="/utf/utf/signs.html" target="blank">
+                    <img src="http://sp105p02-kbs.ff.zcu.cz/img/gar3.gif" width="335" height="35" alt="signs">
+                </a>
+            </p>
+        </form>
+    </div>
+</div>
+
+<hr>
+
+<p>Cuneiform Circle is a community of scholars engaged in the study of the Old Babylonian Akkadian. Our main goal is to create an Old Babylonian Text Corpus, an Old Babylonian Dictionary, and a List of Old Babylonian Cuneiform Signs.</p>
+
+<p>The Old Babylonian Text Corpus (OBTC) comprises a large text database of the Old Babylonian Akkadian Language (currently 144097 text lines, letters, documents, legal texts, royal inscriptions, omina, mathematical texts etc.).</p>
+
+<p><strong>All texts are available for search according to sign-chains (transliteration). The search engine in Old Babylonian Text Corpus verse 1 is available for everybody but the search is restricted to the following texts: Codex Hammurapi and AbB 5. The search in all 144097 lines of OBTC verse 2 is available for members only (see how to become a member) .</strong></p>
+
+<p><strong>Our service includes unique searchable lists of Old Babylonian Signs Variants as appearing in the hand copies selected for the graphemic analysis.</strong></p>
+
+<p>The work on the project is in progress. We have started in 1988-89 and have accomplished significant advances since. We are currently working towards improving the quality and scope of our databases. The full access to all materials and sources is given to active members only ( see our policy ).</p>
+{/block}
+
+{block scripts}
+    <script>
+        $(function ()
+        {
+            $.nette.init();
+        });
+    </script>
+{/block}
\ No newline at end of file
diff --git a/app/presenters/templates/Homepage/login.latte b/app/presenters/templates/Homepage/login.latte
new file mode 100644
index 0000000..39710ba
--- /dev/null
+++ b/app/presenters/templates/Homepage/login.latte
@@ -0,0 +1,8 @@
+{block content}
+    <div class="row">
+        <div class="col">
+            <h4>System authorization</h4>
+            {control loginForm}
+        </div>
+    </div>
+{/block}
\ No newline at end of file
diff --git a/www/css/front/style.css b/www/css/front/style.css
new file mode 100644
index 0000000..e41d416
--- /dev/null
+++ b/www/css/front/style.css
@@ -0,0 +1,61 @@
+.header-logo {
+    background-color: #006666;
+    color: white;
+    padding: 16px;
+    font-size: 2rem;
+    margin-bottom: 0;
+}
+
+.display-4 {
+    font-size: 2.5rem;
+}
+
+.display-4 a {
+    color: white;
+}
+
+.display-4 a:hover {
+    text-decoration: none;
+}
+
+.display-4 a:active {
+    color: white;
+}
+
+.display-4 a:visited {
+    color: white;
+}
+
+.display-5 {
+    font-size: 2rem;
+    font-weight: 300;
+    line-height: 1.2;
+}
+
+.content {
+    margin: 32px 64px;
+}
+
+html {
+    position: relative;
+    min-height: 100%;
+}
+body {
+    /* Margin bottom by footer height + margin */
+    margin-bottom: 96px;
+}
+.footer {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    /* Set the fixed height of the footer here */
+    height: 64px;
+    padding: 8px;
+    background-color: #003366;
+    color: rgba(255,255,255,.5);
+}
+
+.navbar.navbar-expand-lg {
+    padding-top: 0;
+    padding-bottom: 0;
+}
\ No newline at end of file
