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:
- zjistí, zda je uživatel přihlášen pomocí session
- pokud ano, načte historii zpráv z databáze
- předá data do EJS šablony dashboardu
- 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 middlewaresrc/controllers/— logika pro uživatele, zprávy a hlavní stránkysrc/db/— připojení k PostgreSQL a SQL dotazysrc/middlewares/— konfigurace Passportu, flash zpráv a sessionssrc/routes/— definice veřejných i chráněných routsrc/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