EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
initAuth.js
Go to the documentation of this file.
1const pool = require('./db');
2
3/**
4 *
5 */
6async function ensureAuthExtras() {
7 const client = await pool.connect();
8 try {
9 await client.query(`
10 CREATE TABLE IF NOT EXISTS password_reset_tokens (
11 token TEXT PRIMARY KEY,
12 user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
13 requested_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
14 expires_at TIMESTAMPTZ NOT NULL,
15 used_at TIMESTAMPTZ
16 );
17 `);
18
19 await client.query(`
20 CREATE TABLE IF NOT EXISTS email_verification_tokens (
21 token TEXT PRIMARY KEY,
22 user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
23 requested_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
24 expires_at TIMESTAMPTZ NOT NULL,
25 used_at TIMESTAMPTZ
26 );
27 `);
28
29 await client.query(`ALTER TABLE users ADD COLUMN IF NOT EXISTS email_verified BOOLEAN NOT NULL DEFAULT false;`);
30 await client.query(`ALTER TABLE users ADD COLUMN IF NOT EXISTS mfa_enabled BOOLEAN NOT NULL DEFAULT false;`);
31 await client.query(`ALTER TABLE users ADD COLUMN IF NOT EXISTS mfa_secret TEXT;`);
32 await client.query(`ALTER TABLE users ADD COLUMN IF NOT EXISTS password_reset_required BOOLEAN NOT NULL DEFAULT false;`);
33 } finally {
34 client.release();
35 }
36}
37
38module.exports = { ensureAuthExtras };