Portfolio
Projekt: Members Only

Projekt: Members Only

Duben 2026

Members Only je malá, ale bezpečná webová aplikace pro uzavřenou komunitu. Projekt ukazuje, jak postavit plně funkční autentizační systém a chráněné diskuzní fórum s Node.js, Express a PostgreSQL.

Hlavní cíl byl naučit se: ověřování uživatelů, správu relací, bezpečné ukládání hesel a vytváření chráněných rout.

Co projekt dělá

Aplikace umožňuje přihlášení a registraci uživatelů a pak:

  • zobrazit úvodní stránku
  • registrovat nového uživatele
  • přihlásit se pomocí emailu a hesla
  • zobrazit členskou sekci s historií diskuzí
  • vytvořit nový příspěvek do fóra
  • odhlásit se

Architektura: Autentizace → Session → Fórum

Aplikace běží na serveru Node.js a používá Express pro HTTP routy. Passport.js zajišťuje místní autentizaci, bcryptjs bezpečně hashovaná hesla a PostgreSQL ukládání uživatelů, zpráv a relací.

Prohlížeč → Express → Passport → PostgreSQL → EJS šablona

Uživatel se přihlásí nebo pošle nový příspěvek
         ↓
Express route přijme požadavek
         ↓
Passport prověří přihlašovací údaje nebo middleware ověří session
         ↓
DB vrátí data nebo uloží nový záznam
         ↓
EJS šablona renderuje stránku
         ↓
Prohlížeč zobrazí komentáře a stav přihlášení

Pracovní tok: Jak aplikace chrání obsah

Když uživatel vstoupí na členskou stránku, server:

  1. zjistí, zda je uživatel přihlášen pomocí session
  2. pokud ano, načte historii zpráv z databáze
  3. předá data do EJS šablony dashboardu
  4. pokud ne, přesměruje uživatele na login nebo registraci

Příklad middleware, který chrání chráněnou routu:

// src/middlewares/sessions.js
exports.ensureAuthenticated = (req, res, next) => {
	if (req.isAuthenticated()) {
		return next();
	}
	req.flash("error", "Musíte být přihlášeni");
	res.redirect("/users/login");
};

Co v repo najdete

Projekt obsahuje:

  • src/app.js — nastavení Express aplikace a middleware
  • src/controllers/ — logika pro uživatele, zprávy a hlavní stránky
  • src/db/ — připojení k PostgreSQL a SQL dotazy
  • src/middlewares/ — konfigurace Passportu, flash zpráv a sessions
  • src/routes/ — definice veřejných i chráněných rout
  • src/views/ — EJS šablony pro přihlášení, registraci, dashboard a formuláře
  • .env.example — vzor pro citlivé proměnné

Co jsem si z projektu odnesl

Members Only je praktická ukázka toho, jak implementovat zabezpečený systém pro členy s relacemi a rolí uživatele. Hodí se jako základ pro komunitní web, interní fórum nebo učební projekt, kde je potřeba chránit obsah před veřejností.

GitHub: Members Only