\section{Zadania zrealizowane}

\subsection*{Front-end}
\begin{itemize}
  \item zrealizowana strona główna, dostępna dla użytkowników niezalogowanych,
  \item rozbudowany moduł administratora, zapewniający pełną obsługę użytkowników,
  \item zrealizowana strona rejestracji nowego użytkownika,
  \item strona rejestracji jest w pełni funkcjonalna, sprawdza wprowadzone wartości, jeśli są poprawne dodaje nowego użytkownika do bazy danych, 
  \item zrealizowana strona logowania,
  \item strona logowania zapewnia autentykację użytkownika, po wprowadzeniu błędnych danych wypisuje komunikat "Username or password is incorrect", po wprowadzeniu poprawnych danych przekierowuje do strony głównej, 
\end{itemize}

\subsection*{Back-end}
\begin{itemize}
  \item Tworzenie namespacu i uruchomianie procesu w namespace'ie 
  \item Obsługa openVPN z poziomu konsoli 
  \item Przekierowanie na interfejs openVPN ruchu z namespac'u 
  \item Obsługa zapytań do bazy danych z poziomu pythona
  \item Projekt struktury bazy danych
\end{itemize}

\newpage

\includegraphics[scale=0.6]{db_schema.png}
5d75df36693d677c268b2141fdaa5fb3d767561'>refs</a><a class='active' href='/guix/log/gnu/tests.scm'>log</a><a href='/guix/tree/gnu/tests.scm?id=c5d75df36693d677c268b2141fdaa5fb3d767561'>tree</a><a href='/guix/commit/gnu/tests.scm?id=c5d75df36693d677c268b2141fdaa5fb3d767561'>commit</a><a href='/guix/diff/gnu/tests.scm?id=c5d75df36693d677c268b2141fdaa5fb3d767561'>diff</a></td><td class='form'><form class='right' method='get' action='/guix/log/gnu/tests.scm'>
<input type='hidden' name='id' value='c5d75df36693d677c268b2141fdaa5fb3d767561'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/guix/log/?id=c5d75df36693d677c268b2141fdaa5fb3d767561'>root</a>/<a href='/guix/log/gnu?id=c5d75df36693d677c268b2141fdaa5fb3d767561'>gnu</a>/<a href='/guix/log/gnu/tests.scm?id=c5d75df36693d677c268b2141fdaa5fb3d767561'>tests.scm</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/guix/log/gnu/tests.scm?id=c5d75df36693d677c268b2141fdaa5fb3d767561&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th></tr>
<tr><td><span title='2020-01-23 11:26:55 +0100'>2020-01-23</span></td><td><a href='/guix/commit/gnu/tests.scm?id=f79313b3871ebe204c7b29fdb823666af06f48ff'>tests: Fix typo in comment.</a><span class='msg-avail'>...</span></td><td>Ludovic Courtès</td></tr>
<tr><td><span title='2019-12-18 22:36:37 +0100'>2019-12-18</span></td><td><a href='/guix/commit/gnu/tests.scm?id=ab7010af1f1077c056529769a53a380147c3933f'>gexp: Allow character literals in GEXP-&gt;SEXP.</a><span class='msg-avail'>...</span></td><td>Marius Bakke</td></tr>
<tr><td><span title='2019-09-23 23:41:19 +0200'>2019-09-23</span></td><td><a href='/guix/commit/gnu/tests.scm?id=7abd5997f41fec38ea1daa9099a9693062f10dbc'>repl, marionette: 'self-quoting?' matches keywords.</a><span class='msg-avail'>...</span></td><td>Ludovic Courtès</td></tr>
<tr><td><span title='2019-03-25 23:37:06 +0100'>2019-03-25</span></td><td><a href='/guix/commit/gnu/tests.scm?id=cf848cc0a17a3a58d600116896f6e7abfb0440d4'>accounts: Add default value for the 'home-directory' field of &lt;user-account&gt;.</a><span class='msg-avail'>...</span></td><td>Ludovic Courtès</td></tr>
