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