mbkauthe
Version:
MBKTech's reusable authentication system for Node.js applications.
140 lines (109 loc) • 5.58 kB
Markdown
# Environment Configuration Guide
[← Back to README](README.md)
This document describes the environment variables MBKAuth expects and keeps brief usage notes for each parameter. Validation and defaults are implemented in `lib/config/index.js` (it parses `mbkautheVar`, applies optional `mbkauthShared` fallbacks, normalizes values, and throws on validation failures).
## How configuration is provided
- Primary payload: `mbkautheVar` — a JSON string with app-specific keys.
- Optional shared defaults: `mbkauthShared` — a JSON string used only for missing or empty keys.
- Example: `mbkautheVar={"APP_NAME":"mbkauthe", ...}`
---
## Parameters (short descriptions)
- APP_NAME
- Description: Application identifier used for access control.
- Example: `"APP_NAME":"mbkauthe"`
- Required: Yes
- Main_SECRET_TOKEN
- Description: Primary token used for internal auth and validations.
- Example: `"Main_SECRET_TOKEN":"my-secret-token"`
- Required: Yes
- SESSION_SECRET_KEY
- Description: Cryptographic key for sessions/cookies. Use a long random string.
- Example: `"SESSION_SECRET_KEY":"<32+ random chars>"`
- Required: Yes
- IS_DEPLOYED
- Description: Deployment mode flag; affects cookie domain and localhost behavior.
- Values: `true` / `false` / `f` (normalized to strings)
- Example: `"IS_DEPLOYED":"false"`
- Required: Yes
- DOMAIN
- Description: App domain (e.g., `localhost` or `yourdomain.com`). Required when deployed.
- Example: `"DOMAIN":"localhost"`
- Required: Yes
- LOGIN_DB
- Description: PostgreSQL connection string for auth (must start with `postgresql://` or `postgres://`).
- Example: `"LOGIN_DB":"postgresql://user:pass@localhost:5432/mbkauth"`
- Required: Yes
- Create free postgres db: https://neon.com/
- MBKAUTH_TWO_FA_ENABLE
- Description: Enable Two-Factor Authentication.
- Values: `true` / `false` / `f`
- Example: `"MBKAUTH_TWO_FA_ENABLE":"true"`
- Required: Yes
- COOKIE_EXPIRE_TIME
- Description: Session cookie lifetime (days).
- Default: `2`
- Example: `"COOKIE_EXPIRE_TIME":7`
- Required: No
- DEVICE_TRUST_DURATION_DAYS
- Description: Days a device remains trusted (skips some auth steps).
- Default: `7`
- Example: `"DEVICE_TRUST_DURATION_DAYS":30`
- Required: No
- MAX_SESSIONS_PER_USER
- Description: Maximum number of concurrent application sessions allowed per user. When creating a new session that would exceed this number, the oldest session(s) for that user are pruned to make room for the new session.
- Default: `5`
- Example: `"MAX_SESSIONS_PER_USER": 10`
- Notes: Must be a positive integer. Validation is performed at startup by `lib/config/index.js`.
- Required: No
- loginRedirectURL
- Description: Post-login redirect path.
- Default: `/dashboard`
- Example: `"loginRedirectURL":"/dashboard"`
- Required: No
- env
- Description: Development flag to enable diagnostics (DB query monitor, debug endpoints).
- Values: `dev` to enable; any other value disables.
- Example: `env=dev`
- Required: No
- bucket
- Description: Optional external storage bucket name or identifier used for static assets or third-party integrations.
- Default: an empty string `""` (no bucket configured)
- Example: `"bucket":"s3-bucket-name"`
- Usage: Future use in mbkbucket
- Required: No
- GITHUB_LOGIN_ENABLED / GOOGLE_LOGIN_ENABLED
- Description: Enable social login providers.
- Default: `false`
- If `GOOGLE_LOGIN_ENABLED=true`, `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` are required.
- If `GITHUB_LOGIN_ENABLED=true`, GitHub App client credentials are required.
- GITHUB_APP_SLUG
- Description: GitHub App slug (optional for login flow in this package; useful for install/link flows handled elsewhere).
- Required: No
- Create GitHub App: https://github.com/settings/apps
- GITHUB_APP_CLIENT_ID / GITHUB_APP_CLIENT_SECRET
- Description: GitHub App OAuth credentials used for user sign-in.
- Required when `GITHUB_LOGIN_ENABLED=true`.
- GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET
- Description: Legacy fallback keys if app-prefixed keys are not provided.
- GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET
- Description: Google OAuth credentials.
- Required when `GOOGLE_LOGIN_ENABLED=true`.
- Create Google OAuth: https://console.cloud.google.com/
---
## Quick examples
Development (.env):
```env
mbkautheVar={"APP_NAME":"mbkauthe","Main_SECRET_TOKEN":"dev-token","SESSION_SECRET_KEY":"dev-secret","IS_DEPLOYED":"false","DOMAIN":"localhost","LOGIN_DB":"postgresql://user:pass@localhost:5432/mbkauth_dev","MBKAUTH_TWO_FA_ENABLE":"false"}
mbkauthShared={"GITHUB_LOGIN_ENABLED":"false"}
```
Production (short):
```env
mbkautheVar={"APP_NAME":"mbkauthe","Main_SECRET_TOKEN":"prod-token","SESSION_SECRET_KEY":"prod-secret","IS_DEPLOYED":"true","DOMAIN":"yourdomain.com","LOGIN_DB":"postgresql://dbuser:secure@db:5432/mbkauth_prod","MBKAUTH_TWO_FA_ENABLE":"true"}
```
---
## Rules & best practices
- Boolean-like fields: use `"true"`, `"false"`, or `"f"` (the parser accepts booleans too and normalizes to strings).
- Numeric fields: must be positive numbers (e.g., `COOKIE_EXPIRE_TIME`, `DEVICE_TRUST_DURATION_DAYS`).
- `LOGIN_DB` must start with `postgresql://` or `postgres://`.
- Never commit `.env` to source control and use HTTPS in production (when `IS_DEPLOYED=true`).
- Use a >=32-char `SESSION_SECRET_KEY` and rotate secrets regularly.
For the exact validation messages and default application, consult `lib/config/index.js` (it will throw a comprehensive error if validation fails at startup).