Discord Login Flow
Express.js serving static HTML files incorporating a Discord OAuth login flow to a protected dashboard.
Node.js Web Dashboards ដោយ zlizz
Deploy template នេះ
បើកនៅលើ GitHub
អំពី
README.md
មាតិកា
Discord Login Template
An Express template that adds a "Login with Discord" flow (OAuth2) and a protected dashboard page, using plain HTML/CSS/JS on the frontend — no templating engine required.
How it works
- User clicks Login with Discord on
index.html, which sends them to/auth/discord. - That route redirects them to Discord's consent screen.
- After approving, Discord redirects back to
/auth/discord/callbackwith a code. - The server exchanges that code for an access token, fetches the user's Discord profile, and stores it in a server-side session.
- The user is redirected to
/dashboard, which calls/api/userto fetch and display their info. /auth/logoutdestroys the session and sends them back to the login page.
/dashboard is protected — if there's no active session, requesting it redirects straight back to /. Static files are served without their .html extension (express.static is configured with extensions: ['html']), so /dashboard maps to public/dashboard.html and / maps to public/index.html.
Getting Started
Create a Discord application
- Go to the Discord Developer Portal and click New Application.
- Under OAuth2 → General, copy your Client ID and Client Secret.
- Under OAuth2 → Redirects, add:(update the port/domain if you change it later)
http://localhost:3000/auth/discord/callback
3. Set up your environment variables
Copy the example env file:
cp example.env .env
Then fill in .env:
PORT=3000
DISCORD_CLIENT_ID=your_client_id
DISCORD_CLIENT_SECRET=your_client_secret
DISCORD_REDIRECT_URI=http://localhost:3000/auth/discord/callback
SESSION_SECRET=any_long_random_string
Project Structure
.
├── index.js # Express server, session setup, OAuth routes
├── example.env # Rename to .env in production
├── package.json
├── example.env
└── public/
├── index.html # Login page
├── dashboard.html # Protected dashboard (client-side rendered)
└── css/
└── styles.css
Customizing
- Scopes — the login route requests
identify email. Add more scopes (e.g.guilds) in thescopeparameter inside the/auth/discordroute inindex.js, and update the callback to fetch/store any extra data you need. - Session storage — sessions currently live in memory, which resets on server restart and won't scale across multiple server instances. For production, swap in a persistent session store (e.g.
connect-redisorconnect-mongo). - Dashboard content —
dashboard.htmlcurrently shows username, tag, user ID, and email. Extend the/api/userroute inindex.jsto return more data, and update the script indashboard.htmlto display it. - Styling — all styles are in
public/css/styles.css.
Notes
- Requires Node 18+ (uses the built-in global
fetch). - Never commit your real
.envfile — onlyexample.envshould be checked into version control.
អថេរ
អ្នកបំពេញទាំងនេះពេល deploy។ ពួកវាក្លាយជាអថេរបរិស្ថាននៃ deployment របស់អ្នក។
PORTPORT Bot-hosting.net assigned Port ចាំបាច់DISCORD_CLIENT_IDDISCORD_CLIENT_ID From Discord Developer Portal ចាំបាច់DISCORD_CLIENT_SECRETDISCORD_CLIENT_SECRET From Discord Developer Portal ចាំបាច់, តម្លៃសម្ងាត់DISCORD_REDIRECT_URIDISCORD_REDIRECT_URI The callback link after the user approves the Discord Login flow ចាំបាច់SESSION_SECRETSESSION_SECRET Randomly generated. See example.env ចាំបាច់, តម្លៃសម្ងាត់
របៀប deploy វា
- 1 បើកទំព័រ deployដាក់ឈ្មោះ deployment របស់អ្នក។ អ្នកនឹងចូលគណនីពេលបញ្ជាក់។
- 2 បំពេញអថេររបស់វាតម្លៃដែល template ស្នើសុំ រក្សាទុកជាអថេរបរិស្ថាននៃ deployment របស់អ្នក។
- 3 ពិនិត្យធនធានរបស់អ្នកវាប្រើធនធានពីធនធានរួមនៃ plan របស់អ្នក រួចចាប់ផ្តើមដំណើរការ។ គ្រប់គណនីចាប់ផ្តើមឥតគិតថ្លៃ។