sitepaige-mcp-server 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/form.tsx +133 -6
- package/components/login.tsx +173 -21
- package/components/menu.tsx +128 -3
- package/components/testimonial.tsx +1 -1
- package/defaultapp/api/Auth/route.ts +105 -3
- package/defaultapp/api/Auth/signup/route.ts +143 -0
- package/defaultapp/api/Auth/verify-email/route.ts +98 -0
- package/defaultapp/db-password-auth.ts +325 -0
- package/defaultapp/storage/email.ts +162 -0
- package/dist/blueprintWriter.js +15 -1
- package/dist/blueprintWriter.js.map +1 -1
- package/dist/components/form.tsx +133 -6
- package/dist/components/login.tsx +173 -21
- package/dist/components/menu.tsx +128 -3
- package/dist/components/testimonial.tsx +1 -1
- package/dist/defaultapp/api/Auth/route.ts +105 -3
- package/dist/defaultapp/api/Auth/signup/route.ts +143 -0
- package/dist/defaultapp/api/Auth/verify-email/route.ts +98 -0
- package/dist/defaultapp/db-password-auth.ts +325 -0
- package/dist/defaultapp/storage/email.ts +162 -0
- package/dist/generators/apis.js +1 -0
- package/dist/generators/apis.js.map +1 -1
- package/dist/generators/defaultapp.js +2 -2
- package/dist/generators/defaultapp.js.map +1 -1
- package/dist/generators/env-example-template.txt +27 -0
- package/dist/generators/images.js +38 -13
- package/dist/generators/images.js.map +1 -1
- package/dist/generators/pages.js +1 -1
- package/dist/generators/pages.js.map +1 -1
- package/dist/generators/sql.js +19 -0
- package/dist/generators/sql.js.map +1 -1
- package/dist/generators/views.js +16 -1
- package/dist/generators/views.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Username/Password Authentication Database Utilities
|
|
3
|
+
* Handles all database operations related to username/password authentication
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { db_init, db_query } from './db';
|
|
7
|
+
import type { DatabaseClient } from './db';
|
|
8
|
+
import * as crypto from 'node:crypto';
|
|
9
|
+
import { scrypt, randomBytes } from 'node:crypto';
|
|
10
|
+
import { promisify } from 'node:util';
|
|
11
|
+
|
|
12
|
+
const scryptAsync = promisify(scrypt);
|
|
13
|
+
|
|
14
|
+
export interface PasswordAuth {
|
|
15
|
+
id: string;
|
|
16
|
+
email: string; // Email serves as username
|
|
17
|
+
passwordhash: string;
|
|
18
|
+
salt: string;
|
|
19
|
+
verificationtoken?: string;
|
|
20
|
+
verificationtokenexpires?: string;
|
|
21
|
+
emailverified: boolean;
|
|
22
|
+
resettoken?: string;
|
|
23
|
+
resettokenexpires?: string;
|
|
24
|
+
createdat: string;
|
|
25
|
+
updatedat: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Hash a password using scrypt
|
|
30
|
+
*/
|
|
31
|
+
export async function hashPassword(password: string): Promise<{ hash: string; salt: string }> {
|
|
32
|
+
const salt = randomBytes(32).toString('base64');
|
|
33
|
+
const hash = (await scryptAsync(password, salt, 64)) as Buffer;
|
|
34
|
+
return {
|
|
35
|
+
hash: hash.toString('base64'),
|
|
36
|
+
salt
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Verify a password against its hash
|
|
42
|
+
*/
|
|
43
|
+
export async function verifyPassword(password: string, hash: string, salt: string): Promise<boolean> {
|
|
44
|
+
const derivedKey = (await scryptAsync(password, salt, 64)) as Buffer;
|
|
45
|
+
return derivedKey.toString('base64') === hash;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create the password authentication table
|
|
50
|
+
*/
|
|
51
|
+
export async function createPasswordAuthTable(): Promise<void> {
|
|
52
|
+
const client = await db_init();
|
|
53
|
+
|
|
54
|
+
const createTableQuery = `
|
|
55
|
+
CREATE TABLE IF NOT EXISTS passwordauth (
|
|
56
|
+
id TEXT PRIMARY KEY,
|
|
57
|
+
email TEXT NOT NULL UNIQUE,
|
|
58
|
+
passwordhash TEXT NOT NULL,
|
|
59
|
+
salt TEXT NOT NULL,
|
|
60
|
+
verificationtoken TEXT,
|
|
61
|
+
verificationtokenexpires TIMESTAMP,
|
|
62
|
+
emailverified BOOLEAN DEFAULT FALSE,
|
|
63
|
+
resettoken TEXT,
|
|
64
|
+
resettokenexpires TIMESTAMP,
|
|
65
|
+
createdat TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
+
updatedat TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
67
|
+
)
|
|
68
|
+
`;
|
|
69
|
+
|
|
70
|
+
await db_query(client, createTableQuery);
|
|
71
|
+
|
|
72
|
+
// Create index on email for faster lookups
|
|
73
|
+
await db_query(client, 'CREATE INDEX IF NOT EXISTS idx_passwordauth_email ON passwordauth(email)');
|
|
74
|
+
await db_query(client, 'CREATE INDEX IF NOT EXISTS idx_passwordauth_verification_token ON passwordauth(verificationtoken)');
|
|
75
|
+
await db_query(client, 'CREATE INDEX IF NOT EXISTS idx_passwordauth_reset_token ON passwordauth(resettoken)');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Get password auth record by email
|
|
80
|
+
*/
|
|
81
|
+
export async function getPasswordAuthByEmail(email: string): Promise<PasswordAuth | null> {
|
|
82
|
+
const client = await db_init();
|
|
83
|
+
|
|
84
|
+
const results = await db_query(client,
|
|
85
|
+
"SELECT * FROM passwordauth WHERE email = ?",
|
|
86
|
+
[email.toLowerCase()]
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
return results.length > 0 ? results[0] as PasswordAuth : null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Create a new password auth record (for signup)
|
|
94
|
+
*/
|
|
95
|
+
export async function createPasswordAuth(
|
|
96
|
+
email: string,
|
|
97
|
+
password: string
|
|
98
|
+
): Promise<{ passwordAuth: PasswordAuth; verificationToken: string }> {
|
|
99
|
+
const client = await db_init();
|
|
100
|
+
|
|
101
|
+
// Check if email already exists
|
|
102
|
+
const existing = await getPasswordAuthByEmail(email);
|
|
103
|
+
if (existing) {
|
|
104
|
+
throw new Error('Email already registered');
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Hash the password
|
|
108
|
+
const { hash, salt } = await hashPassword(password);
|
|
109
|
+
|
|
110
|
+
// Generate verification token
|
|
111
|
+
const verificationToken = randomBytes(32).toString('base64url');
|
|
112
|
+
const verificationTokenExpires = new Date(Date.now() + 24 * 60 * 60 * 1000); // 24 hours
|
|
113
|
+
|
|
114
|
+
const id = crypto.randomUUID();
|
|
115
|
+
const now = new Date().toISOString();
|
|
116
|
+
|
|
117
|
+
await db_query(client,
|
|
118
|
+
`INSERT INTO passwordauth
|
|
119
|
+
(id, email, passwordhash, salt, verificationtoken, verificationtokenexpires, emailverified, createdat, updatedat)
|
|
120
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
121
|
+
[id, email.toLowerCase(), hash, salt, verificationToken, verificationTokenExpires.toISOString(), false, now, now]
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
const passwordAuth = await getPasswordAuthByEmail(email);
|
|
125
|
+
if (!passwordAuth) {
|
|
126
|
+
throw new Error('Failed to create password auth record');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return { passwordAuth, verificationToken };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Verify email with token
|
|
134
|
+
*/
|
|
135
|
+
export async function verifyEmailWithToken(token: string): Promise<PasswordAuth | null> {
|
|
136
|
+
const client = await db_init();
|
|
137
|
+
|
|
138
|
+
// Find the auth record with this token
|
|
139
|
+
const results = await db_query(client,
|
|
140
|
+
`SELECT * FROM passwordauth
|
|
141
|
+
WHERE verificationtoken = ?
|
|
142
|
+
AND verificationtokenexpires > CURRENT_TIMESTAMP
|
|
143
|
+
AND emailverified = false`,
|
|
144
|
+
[token]
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
if (results.length === 0) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const authRecord = results[0];
|
|
152
|
+
|
|
153
|
+
// Mark email as verified and clear token
|
|
154
|
+
await db_query(client,
|
|
155
|
+
`UPDATE passwordauth
|
|
156
|
+
SET emailverified = true,
|
|
157
|
+
verificationtoken = NULL,
|
|
158
|
+
verificationtokenexpires = NULL,
|
|
159
|
+
updatedat = CURRENT_TIMESTAMP
|
|
160
|
+
WHERE id = ?`,
|
|
161
|
+
[authRecord.id]
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
return await getPasswordAuthByEmail(authRecord.email);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Authenticate user with email and password
|
|
169
|
+
*/
|
|
170
|
+
export async function authenticateUser(email: string, password: string): Promise<PasswordAuth | null> {
|
|
171
|
+
const authRecord = await getPasswordAuthByEmail(email);
|
|
172
|
+
|
|
173
|
+
if (!authRecord) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Check if email is verified
|
|
178
|
+
if (!authRecord.emailverified) {
|
|
179
|
+
throw new Error('Email not verified');
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Verify password
|
|
183
|
+
const isValid = await verifyPassword(password, authRecord.passwordhash, authRecord.salt);
|
|
184
|
+
|
|
185
|
+
if (!isValid) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return authRecord;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Generate password reset token
|
|
194
|
+
*/
|
|
195
|
+
export async function generatePasswordResetToken(email: string): Promise<string | null> {
|
|
196
|
+
const client = await db_init();
|
|
197
|
+
|
|
198
|
+
const authRecord = await getPasswordAuthByEmail(email);
|
|
199
|
+
if (!authRecord) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const resetToken = randomBytes(32).toString('base64url');
|
|
204
|
+
const resetTokenExpires = new Date(Date.now() + 60 * 60 * 1000); // 1 hour
|
|
205
|
+
|
|
206
|
+
await db_query(client,
|
|
207
|
+
`UPDATE passwordauth
|
|
208
|
+
SET resettoken = ?,
|
|
209
|
+
resettokenexpires = ?,
|
|
210
|
+
updatedat = CURRENT_TIMESTAMP
|
|
211
|
+
WHERE id = ?`,
|
|
212
|
+
[resetToken, resetTokenExpires.toISOString(), authRecord.id]
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
return resetToken;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Reset password with token
|
|
220
|
+
*/
|
|
221
|
+
export async function resetPasswordWithToken(token: string, newPassword: string): Promise<boolean> {
|
|
222
|
+
const client = await db_init();
|
|
223
|
+
|
|
224
|
+
// Find the auth record with this token
|
|
225
|
+
const results = await db_query(client,
|
|
226
|
+
`SELECT * FROM passwordauth
|
|
227
|
+
WHERE resettoken = ?
|
|
228
|
+
AND resettokenexpires > CURRENT_TIMESTAMP`,
|
|
229
|
+
[token]
|
|
230
|
+
);
|
|
231
|
+
|
|
232
|
+
if (results.length === 0) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const authRecord = results[0];
|
|
237
|
+
|
|
238
|
+
// Hash the new password
|
|
239
|
+
const { hash, salt } = await hashPassword(newPassword);
|
|
240
|
+
|
|
241
|
+
// Update password and clear reset token
|
|
242
|
+
await db_query(client,
|
|
243
|
+
`UPDATE passwordauth
|
|
244
|
+
SET passwordhash = ?,
|
|
245
|
+
salt = ?,
|
|
246
|
+
resettoken = NULL,
|
|
247
|
+
resettokenexpires = NULL,
|
|
248
|
+
updatedat = CURRENT_TIMESTAMP
|
|
249
|
+
WHERE id = ?`,
|
|
250
|
+
[hash, salt, authRecord.id]
|
|
251
|
+
);
|
|
252
|
+
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Delete unverified accounts older than 7 days
|
|
258
|
+
*/
|
|
259
|
+
export async function cleanupUnverifiedAccounts(): Promise<number> {
|
|
260
|
+
const client = await db_init();
|
|
261
|
+
|
|
262
|
+
const result = await db_query(client,
|
|
263
|
+
`DELETE FROM passwordauth
|
|
264
|
+
WHERE emailverified = false
|
|
265
|
+
AND createdat < datetime('now', '-7 days')`
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
return result[0]?.changes || 0;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Update password for authenticated user
|
|
273
|
+
*/
|
|
274
|
+
export async function updatePassword(email: string, currentPassword: string, newPassword: string): Promise<boolean> {
|
|
275
|
+
// First verify the current password
|
|
276
|
+
const authRecord = await authenticateUser(email, currentPassword);
|
|
277
|
+
if (!authRecord) {
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Hash the new password
|
|
282
|
+
const { hash, salt } = await hashPassword(newPassword);
|
|
283
|
+
const client = await db_init();
|
|
284
|
+
|
|
285
|
+
// Update password
|
|
286
|
+
await db_query(client,
|
|
287
|
+
`UPDATE passwordauth
|
|
288
|
+
SET passwordhash = ?,
|
|
289
|
+
salt = ?,
|
|
290
|
+
updatedat = CURRENT_TIMESTAMP
|
|
291
|
+
WHERE id = ?`,
|
|
292
|
+
[hash, salt, authRecord.id]
|
|
293
|
+
);
|
|
294
|
+
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Check if an email is already registered
|
|
300
|
+
*/
|
|
301
|
+
export async function isEmailRegistered(email: string): Promise<boolean> {
|
|
302
|
+
const authRecord = await getPasswordAuthByEmail(email);
|
|
303
|
+
return authRecord !== null;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Get statistics about password auth users
|
|
308
|
+
*/
|
|
309
|
+
export async function getPasswordAuthStats(): Promise<{
|
|
310
|
+
totalUsers: number;
|
|
311
|
+
verifiedUsers: number;
|
|
312
|
+
unverifiedUsers: number;
|
|
313
|
+
}> {
|
|
314
|
+
const client = await db_init();
|
|
315
|
+
|
|
316
|
+
const stats = await db_query(client, `
|
|
317
|
+
SELECT
|
|
318
|
+
COUNT(*) as totalUsers,
|
|
319
|
+
SUM(CASE WHEN emailverified = true THEN 1 ELSE 0 END) as verifiedUsers,
|
|
320
|
+
SUM(CASE WHEN emailverified = false THEN 1 ELSE 0 END) as unverifiedUsers
|
|
321
|
+
FROM passwordauth
|
|
322
|
+
`);
|
|
323
|
+
|
|
324
|
+
return stats[0];
|
|
325
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
|
|
3
|
+
// Simple in-memory storage for email tracking (in production, use a database)
|
|
4
|
+
const emailHistory: Map<string, any> = new Map();
|
|
5
|
+
|
|
6
|
+
export interface EmailOptions {
|
|
7
|
+
to: string | string[];
|
|
8
|
+
from: string;
|
|
9
|
+
subject: string;
|
|
10
|
+
html?: string;
|
|
11
|
+
text?: string;
|
|
12
|
+
cc?: string | string[];
|
|
13
|
+
bcc?: string | string[];
|
|
14
|
+
replyTo?: string | string[];
|
|
15
|
+
attachments?: Array<{
|
|
16
|
+
filename: string;
|
|
17
|
+
content: string; // base64 encoded content
|
|
18
|
+
contentType?: string;
|
|
19
|
+
}>;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
tags?: Array<{
|
|
22
|
+
name: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Send email function that sends emails via the Resend API
|
|
29
|
+
* @param options Email options including to, from, subject, message content, etc.
|
|
30
|
+
* @returns Promise that resolves to the email ID from Resend
|
|
31
|
+
*/
|
|
32
|
+
export async function send_email(options: EmailOptions): Promise<string> {
|
|
33
|
+
console.log(`📧 Sending email to: ${Array.isArray(options.to) ? options.to.join(', ') : options.to}`);
|
|
34
|
+
console.log(`📧 Subject: ${options.subject}`);
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
// Get API key from environment
|
|
38
|
+
const apiKey = process.env.RESEND_API_KEY;
|
|
39
|
+
if (!apiKey) {
|
|
40
|
+
throw new Error('RESEND_API_KEY environment variable is not set');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Prepare request body for Resend API
|
|
44
|
+
const requestBody: any = {
|
|
45
|
+
to: options.to,
|
|
46
|
+
from: options.from,
|
|
47
|
+
subject: options.subject,
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Add optional fields
|
|
51
|
+
if (options.html) requestBody.html = options.html;
|
|
52
|
+
if (options.text) requestBody.text = options.text;
|
|
53
|
+
if (options.cc) requestBody.cc = options.cc;
|
|
54
|
+
if (options.bcc) requestBody.bcc = options.bcc;
|
|
55
|
+
if (options.replyTo) requestBody.reply_to = options.replyTo;
|
|
56
|
+
if (options.headers) requestBody.headers = options.headers;
|
|
57
|
+
if (options.tags) requestBody.tags = options.tags;
|
|
58
|
+
|
|
59
|
+
// Handle attachments
|
|
60
|
+
if (options.attachments && options.attachments.length > 0) {
|
|
61
|
+
requestBody.attachments = options.attachments.map(att => ({
|
|
62
|
+
filename: att.filename,
|
|
63
|
+
content: att.content,
|
|
64
|
+
content_type: att.contentType,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Make API request to Resend
|
|
69
|
+
const response = await fetch('https://api.resend.com/emails', {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: {
|
|
72
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
73
|
+
'Content-Type': 'application/json',
|
|
74
|
+
},
|
|
75
|
+
body: JSON.stringify(requestBody),
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
const errorData = await response.json().catch(() => ({ message: 'Unknown error' }));
|
|
80
|
+
throw new Error(`Resend API error: ${response.status} - ${errorData.message || response.statusText}`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const result = await response.json();
|
|
84
|
+
const emailId = result.id;
|
|
85
|
+
|
|
86
|
+
// Store email metadata
|
|
87
|
+
const emailKey = `${Date.now()}_${randomBytes(6).toString('hex')}`;
|
|
88
|
+
emailHistory.set(emailKey, {
|
|
89
|
+
id: emailId,
|
|
90
|
+
to: options.to,
|
|
91
|
+
from: options.from,
|
|
92
|
+
subject: options.subject,
|
|
93
|
+
sentAt: new Date().toISOString(),
|
|
94
|
+
status: 'sent',
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
console.log(`✅ Email sent successfully. ID: ${emailId}`);
|
|
98
|
+
|
|
99
|
+
return emailId;
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error('❌ Error sending email:', error);
|
|
102
|
+
throw new Error(`Failed to send email: ${error}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get email status by ID
|
|
108
|
+
* @param emailId The email ID returned from send_email
|
|
109
|
+
* @returns Email metadata or undefined if not found
|
|
110
|
+
*/
|
|
111
|
+
export async function getEmailStatus(emailId: string): Promise<any> {
|
|
112
|
+
// Find email in history by Resend ID
|
|
113
|
+
for (const [key, data] of emailHistory.entries()) {
|
|
114
|
+
if (data.id === emailId) {
|
|
115
|
+
return data;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// If not found locally, could query Resend API for status
|
|
120
|
+
const apiKey = process.env.RESEND_API_KEY;
|
|
121
|
+
if (!apiKey) {
|
|
122
|
+
throw new Error('RESEND_API_KEY environment variable is not set');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
const response = await fetch(`https://api.resend.com/emails/${emailId}`, {
|
|
127
|
+
headers: {
|
|
128
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return await response.json();
|
|
137
|
+
} catch (error) {
|
|
138
|
+
console.error('Error fetching email status:', error);
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* List sent emails from local history
|
|
145
|
+
* @returns Array of email metadata
|
|
146
|
+
*/
|
|
147
|
+
export function listSentEmails(): Array<any> {
|
|
148
|
+
return Array.from(emailHistory.values());
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Initialize global send_email function for generated API code
|
|
153
|
+
* This makes send_email available in the same way as the preview environment
|
|
154
|
+
*/
|
|
155
|
+
export function initializeGlobalEmailAPI(): void {
|
|
156
|
+
// Make send_email available globally for API code execution
|
|
157
|
+
(global as any).send_email = send_email;
|
|
158
|
+
(global as any).getEmailStatus = getEmailStatus;
|
|
159
|
+
(global as any).listSentEmails = listSentEmails;
|
|
160
|
+
|
|
161
|
+
console.log('✅ Global email API initialized');
|
|
162
|
+
}
|
package/dist/generators/apis.js
CHANGED
|
@@ -245,6 +245,7 @@ This file is generated by Sitepaige.
|
|
|
245
245
|
import { NextRequest, NextResponse } from 'next/server';
|
|
246
246
|
import { check_auth } from '${relativePathToRoot}auth/auth';
|
|
247
247
|
import { store_file } from '${relativePathToRoot}storage/files';
|
|
248
|
+
import { send_email } from '${relativePathToRoot}storage/email';
|
|
248
249
|
import { db_init, db_query } from '${relativePathToRoot}db';
|
|
249
250
|
`;
|
|
250
251
|
const routeCode = header + "\n" + processedApiCode + "\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apis.js","sourceRoot":"","sources":["../../src/generators/apis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apis.js","sourceRoot":"","sources":["../../src/generators/apis.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,14 +49,14 @@ export async function writeDefaultApp(targetDir, databaseType = "postgres") {
|
|
|
49
49
|
// Ensure the app directory exists
|
|
50
50
|
ensureDir(appDir);
|
|
51
51
|
// Copy all contents from defaultapp to src/app, excluding database files we'll handle separately
|
|
52
|
-
const excludeFiles = ['db.ts', 'db-sqlite.ts', 'db-postgres.ts', 'db-mysql.ts', 'db-users.ts', 'util.ts', 'middleware.ts', 'csrf.ts'];
|
|
52
|
+
const excludeFiles = ['db.ts', 'db-sqlite.ts', 'db-postgres.ts', 'db-mysql.ts', 'db-users.ts', 'db-password-auth.ts', 'util.ts', 'middleware.ts', 'csrf.ts'];
|
|
53
53
|
await copyDirectoryWithExclusions(defaultAppPath, appDir, excludeFiles);
|
|
54
54
|
// Copy defaultpublic folder to public directory if it exists
|
|
55
55
|
if (fs.existsSync(defaultPublicPath)) {
|
|
56
56
|
await copyDirectory(defaultPublicPath, publicDir);
|
|
57
57
|
}
|
|
58
58
|
// Copy database files based on selected database type
|
|
59
|
-
const dbFiles = ['db-users.ts', 'util.ts', 'csrf.ts'];
|
|
59
|
+
const dbFiles = ['db-users.ts', 'db-password-auth.ts', 'util.ts', 'csrf.ts'];
|
|
60
60
|
// Copy the common database files
|
|
61
61
|
for (const file of dbFiles) {
|
|
62
62
|
const sourcePath = path.join(defaultAppPath, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultapp.js","sourceRoot":"","sources":["../../src/generators/defaultapp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,mCAAmC;AACnC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,WAAmB;IAC9D,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,8CAA8C;YAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,MAAc,EAAE,WAAmB,EAAE,YAAsB;IACpG,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,2BAA2B,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,6EAA6E;YAC7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,eAAgD,UAAU;IACjH,sDAAsD;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEjD,kCAAkC;IAClC,SAAS,CAAC,MAAM,CAAC,CAAC;IAElB,iGAAiG;IACjG,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"defaultapp.js","sourceRoot":"","sources":["../../src/generators/defaultapp.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,3 +51,30 @@ DATABASE_TYPE=sqlite
|
|
|
51
51
|
# DB_USER=dbuser
|
|
52
52
|
# DB_PASSWORD=dbpassword
|
|
53
53
|
# DB_NAME=app
|
|
54
|
+
|
|
55
|
+
# Email Configuration (Resend)
|
|
56
|
+
# Get your API key from https://resend.com/api-keys
|
|
57
|
+
# RESEND_API_KEY=re_123456789_abcdefghijklmnopqrstuvwxyz
|
|
58
|
+
# EMAIL_FROM=noreply@yourdomain.com
|
|
59
|
+
|
|
60
|
+
# Site Configuration
|
|
61
|
+
# SITE_DOMAIN is used for generating absolute URLs (e.g., in emails)
|
|
62
|
+
# Defaults to https://sitepaige.com if not set
|
|
63
|
+
# SITE_DOMAIN=https://yourdomain.com
|
|
64
|
+
|
|
65
|
+
# OAuth Configuration
|
|
66
|
+
# Google OAuth
|
|
67
|
+
# NEXT_PUBLIC_GOOGLE_CLIENT_ID=your-google-client-id
|
|
68
|
+
# GOOGLE_CLIENT_SECRET=your-google-client-secret
|
|
69
|
+
|
|
70
|
+
# GitHub OAuth
|
|
71
|
+
# NEXT_PUBLIC_GITHUB_CLIENT_ID=your-github-client-id
|
|
72
|
+
# GITHUB_CLIENT_SECRET=your-github-client-secret
|
|
73
|
+
|
|
74
|
+
# Facebook OAuth
|
|
75
|
+
# NEXT_PUBLIC_FACEBOOK_CLIENT_ID=your-facebook-app-id
|
|
76
|
+
# FACEBOOK_CLIENT_SECRET=your-facebook-app-secret
|
|
77
|
+
|
|
78
|
+
# Apple OAuth
|
|
79
|
+
# NEXT_PUBLIC_APPLE_CLIENT_ID=your-apple-client-id
|
|
80
|
+
# APPLE_CLIENT_SECRET=your-apple-client-secret
|