create-authenik8-app 2.0.4 → 2.0.6
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/README.md +1 -0
- package/dist/bin/index.js +420 -257
- package/dist/bin/index.js.map +1 -1
- package/package.json +24 -25
- package/templates/express-auth/src/utils/hash.ts +0 -12
- package/templates/express-auth+/src/auth/protected.routes.ts +8 -2
- package/templates/express-auth+/src/server.ts +1 -1
- package/templates/express-auth+/src/utils/hash.ts +0 -12
- package/templates/prisma/postgresql/.env +3 -4
- package/templates/express-auth/src/.env +0 -9
- package/templates/express-auth+/src/.env +0 -9
package/README.md
CHANGED
package/dist/bin/index.js
CHANGED
|
@@ -7,6 +7,85 @@ import { ExitPromptError } from "@inquirer/core";
|
|
|
7
7
|
import ora from "ora";
|
|
8
8
|
import { execSync } from "child_process";
|
|
9
9
|
import { fileURLToPath } from "url";
|
|
10
|
+
import { spawnSync } from "child_process";
|
|
11
|
+
import os from "os";
|
|
12
|
+
function step(name, fn) {
|
|
13
|
+
return { name, fn };
|
|
14
|
+
}
|
|
15
|
+
let state = {};
|
|
16
|
+
let answers = {};
|
|
17
|
+
const stateFile = (project) => path.join(process.cwd(), project, ".authenik8-state.json");
|
|
18
|
+
function saveState(project, state) {
|
|
19
|
+
fs.ensureDirSync(path.join(process.cwd(), project));
|
|
20
|
+
fs.writeJsonSync(stateFile(project), state, { spaces: 2 });
|
|
21
|
+
}
|
|
22
|
+
function loadState(project) {
|
|
23
|
+
const file = stateFile(project);
|
|
24
|
+
if (!fs.existsSync(file))
|
|
25
|
+
return null;
|
|
26
|
+
return fs.readJsonSync(file);
|
|
27
|
+
}
|
|
28
|
+
function clearState(project) {
|
|
29
|
+
const file = stateFile(project);
|
|
30
|
+
if (fs.existsSync(file))
|
|
31
|
+
fs.removeSync(file);
|
|
32
|
+
}
|
|
33
|
+
const isResume = process.argv.includes("--resume");
|
|
34
|
+
const platform = os.platform();
|
|
35
|
+
// 'linux' | 'darwin' | 'win32'
|
|
36
|
+
const isTermux = process.env.PREFIX?.includes("com.termux") ||
|
|
37
|
+
process.env.TERMUX === "true";
|
|
38
|
+
function getBestHashLib() {
|
|
39
|
+
if (isTermux)
|
|
40
|
+
return "bcryptjs"; // argon2 breaks here
|
|
41
|
+
if (platform === "win32")
|
|
42
|
+
return "bcryptjs";
|
|
43
|
+
// avoids build tools issues for most users
|
|
44
|
+
if (platform === "darwin")
|
|
45
|
+
return "argon2";
|
|
46
|
+
// mac usually fine
|
|
47
|
+
if (platform === "linux")
|
|
48
|
+
return "argon2";
|
|
49
|
+
// but still fallback later if needed
|
|
50
|
+
return "bcryptjs";
|
|
51
|
+
}
|
|
52
|
+
function createSaver(projectName, ctx) {
|
|
53
|
+
return (step, extra) => {
|
|
54
|
+
saveState(projectName, {
|
|
55
|
+
step,
|
|
56
|
+
projectName,
|
|
57
|
+
...ctx.state,
|
|
58
|
+
...ctx.answers,
|
|
59
|
+
...extra,
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function generateHashModule(hashLib) {
|
|
64
|
+
if (hashLib === "argon2") {
|
|
65
|
+
return `
|
|
66
|
+
import argon2 from "argon2";
|
|
67
|
+
|
|
68
|
+
export const hashPassword = (password: string) => {
|
|
69
|
+
return argon2.hash(password);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const comparePassword = (password: string, hash: string) => {
|
|
73
|
+
return argon2.verify(hash, password);
|
|
74
|
+
};
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
return `
|
|
78
|
+
import bcrypt from "bcryptjs";
|
|
79
|
+
|
|
80
|
+
export const hashPassword = (password: string) => {
|
|
81
|
+
return bcrypt.hash(password, 10);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const comparePassword = (password: string, hash: string) => {
|
|
85
|
+
return bcrypt.compare(password, hash);
|
|
86
|
+
};
|
|
87
|
+
`;
|
|
88
|
+
}
|
|
10
89
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
90
|
const __dirname = path.dirname(__filename);
|
|
12
91
|
const projectName = process.argv[2];
|
|
@@ -17,69 +96,96 @@ if (!projectName) {
|
|
|
17
96
|
const isProduction = process.argv.includes("--production-ready");
|
|
18
97
|
const targetDir = path.join(process.cwd(), projectName);
|
|
19
98
|
let projectCreated = false;
|
|
99
|
+
const exists = fs.existsSync(targetDir);
|
|
100
|
+
if (isResume) {
|
|
101
|
+
}
|
|
102
|
+
if (exists && !isResume) {
|
|
103
|
+
const { action } = await inquirer.prompt([
|
|
104
|
+
{
|
|
105
|
+
type: "select",
|
|
106
|
+
name: "action",
|
|
107
|
+
message: `Folder "${projectName}" already exists. What do you want to do?`,
|
|
108
|
+
choices: [
|
|
109
|
+
{ name: "Resume setup", value: "resume" },
|
|
110
|
+
{ name: "Overwrite", value: "overwrite" },
|
|
111
|
+
{ name: "Cancel", value: "cancel" },
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
]);
|
|
115
|
+
if (action === "resume") {
|
|
116
|
+
// trigger resume logic
|
|
117
|
+
}
|
|
118
|
+
if (action === "overwrite") {
|
|
119
|
+
await fs.remove(targetDir);
|
|
120
|
+
}
|
|
121
|
+
if (action === "cancel") {
|
|
122
|
+
process.exit(0);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
20
125
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
21
126
|
const cleanLogo = `
|
|
22
127
|
|
|
23
|
-
|
|
128
|
+
█████╗ █████╗
|
|
24
129
|
██╔══██╗ ██╔══██╗
|
|
25
130
|
███████║ ╚█████╔╝
|
|
26
131
|
██╔══██║ ██╔══██╗
|
|
27
132
|
██║ ██║ ╚█████╔╝
|
|
28
133
|
╚═╝ ╚═╝ ╚════╝
|
|
29
134
|
|
|
30
|
-
|
|
135
|
+
A8
|
|
136
|
+
|
|
31
137
|
Authenik8 CLI
|
|
32
|
-
|
|
33
|
-
|
|
138
|
+
Build Faster
|
|
139
|
+
More , Secure
|
|
34
140
|
`;
|
|
35
141
|
const glitchFrames = [
|
|
36
|
-
`
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
142
|
+
`
|
|
143
|
+
█████╗ █████╗
|
|
144
|
+
██╔══██╗ ██▒▒▒▒██
|
|
145
|
+
███████║ ╚█████╔╝
|
|
146
|
+
██╔══██║ ██▒▒▒▒██
|
|
147
|
+
██║ ██║ ╚█████╔╝
|
|
148
|
+
╚═╝ ╚═╝ ╚════╝
|
|
43
149
|
|
|
44
|
-
|
|
45
|
-
|
|
150
|
+
A8
|
|
151
|
+
Authenik8 CLI
|
|
46
152
|
|
|
47
|
-
|
|
153
|
+
More
|
|
48
154
|
`,
|
|
49
155
|
`
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
156
|
+
██▓▓██╗ ██▓▓██╗
|
|
157
|
+
██▒▒██╔╝ ██▒▒██╔╝
|
|
158
|
+
██▒▒▒▒██ ╚█████╔╝
|
|
159
|
+
██▓▓██╔╝ ██▒▒██╗
|
|
160
|
+
██▒▒██║ ╚█████╔╝
|
|
161
|
+
╚═════╝ ╚════╝
|
|
162
|
+
|
|
163
|
+
A8
|
|
164
|
+
Authenik8 CLI
|
|
165
|
+
Faster
|
|
60
166
|
`,
|
|
61
167
|
`
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
168
|
+
██▒▒██╗ ██▒▒██╗
|
|
169
|
+
██▓▓██╔╝ ██▓▓██╔╝
|
|
170
|
+
██▒▒▒▒██ ╚█████╔╝
|
|
171
|
+
██▓▓██╔╝ ██▓▓██╗
|
|
172
|
+
██▒▒██║ ╚█████╔╝
|
|
173
|
+
╚═════╝ ╚════╝
|
|
174
|
+
|
|
175
|
+
A8
|
|
176
|
+
Authenik8 CLI
|
|
177
|
+
Build
|
|
72
178
|
`,
|
|
73
179
|
`
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
180
|
+
██▓▓██╗ ██▓▓██╗
|
|
181
|
+
██▒▒██╔╝ ██▒▒██╔╝
|
|
182
|
+
██▒▒▒▒██ ╚█████╔╝
|
|
183
|
+
██▓▓██╔╝ ██▒▒██╗
|
|
184
|
+
██▒▒██║ ╚█████╔╝
|
|
185
|
+
╚═════╝ ╚════╝
|
|
80
186
|
|
|
81
|
-
|
|
82
|
-
|
|
187
|
+
A8
|
|
188
|
+
Authenik8 CLI
|
|
83
189
|
|
|
84
190
|
`
|
|
85
191
|
];
|
|
@@ -112,277 +218,339 @@ async function showBootLogo() {
|
|
|
112
218
|
await sleep(800);
|
|
113
219
|
boot.succeed("Engine ready");
|
|
114
220
|
}
|
|
221
|
+
//const isResume = process.argv.includes("--resume");
|
|
115
222
|
async function main() {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
223
|
+
try {
|
|
224
|
+
await showBootLogo();
|
|
225
|
+
if (process.argv.includes("--help")) {
|
|
226
|
+
console.log(`
|
|
119
227
|
Authenik8 CLI
|
|
120
228
|
|
|
121
229
|
Usage:
|
|
122
|
-
|
|
230
|
+
create-authenik8-app <project-name>
|
|
123
231
|
|
|
124
232
|
Options:
|
|
125
|
-
|
|
126
|
-
|
|
233
|
+
--resume Resume project setup(in development)
|
|
234
|
+
--help Show this help message
|
|
235
|
+
--production-ready production mode
|
|
127
236
|
Features:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
237
|
+
|
|
238
|
+
Express backend (default)
|
|
239
|
+
|
|
240
|
+
Optional Prisma ORM
|
|
241
|
+
|
|
242
|
+
PostgreSQL (production)
|
|
243
|
+
|
|
244
|
+
SQLite (quick start)
|
|
245
|
+
|
|
246
|
+
Optional Git initialization
|
|
247
|
+
|
|
248
|
+
Optional OAuth
|
|
249
|
+
|
|
134
250
|
|
|
135
251
|
Examples:
|
|
136
|
-
|
|
252
|
+
create-authenik8-app my-app
|
|
137
253
|
`);
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
254
|
+
process.exit(0);
|
|
255
|
+
}
|
|
256
|
+
console.log(chalk.gray(`
|
|
141
257
|
Available options:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
258
|
+
Authentication setup:
|
|
259
|
+
• base (JWT only)
|
|
260
|
+
• auth (JWT + Password/Email auth)
|
|
261
|
+
• auth-oauth(JWT+ Password/Email + oauth)
|
|
262
|
+
|
|
263
|
+
Frameworks:
|
|
264
|
+
• Express
|
|
265
|
+
• Fastify(coming soon)
|
|
266
|
+
|
|
267
|
+
Database (if Prisma enabled):
|
|
268
|
+
• PostgreSQL
|
|
269
|
+
• SQLite (quick start)
|
|
270
|
+
|
|
271
|
+
Features:
|
|
272
|
+
• Prisma ORM (optional)
|
|
273
|
+
• Git initialization (optional)
|
|
274
|
+
• OAuth + Auth
|
|
159
275
|
`));
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
276
|
+
answers = await inquirer.prompt([
|
|
277
|
+
{
|
|
278
|
+
type: "list",
|
|
279
|
+
name: "framework",
|
|
280
|
+
message: "Choose framework:",
|
|
281
|
+
choices: ["Express", "Fastify (coming soon)"],
|
|
282
|
+
default: state.framework ?? "Express",
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
type: "confirm",
|
|
286
|
+
name: "usePrisma",
|
|
287
|
+
message: "Use Prisma?",
|
|
288
|
+
default: state.usePrisma ?? true,
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
type: "list",
|
|
292
|
+
name: "database",
|
|
293
|
+
message: "Choose database:",
|
|
294
|
+
choices: [
|
|
295
|
+
{ name: "PostgreSQL", value: "postgresql" },
|
|
296
|
+
{ name: "SQLite ", value: "sqlite" }
|
|
297
|
+
],
|
|
298
|
+
when: (answers) => answers.usePrisma,
|
|
299
|
+
default: state.database ?? "sqlite",
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
type: "confirm",
|
|
303
|
+
name: "useGit",
|
|
304
|
+
message: "Initialize git?",
|
|
305
|
+
default: state.useGit ?? true,
|
|
306
|
+
}, {
|
|
307
|
+
type: "list",
|
|
308
|
+
name: "authMode",
|
|
309
|
+
message: "Choose authentication setup:",
|
|
310
|
+
choices: [
|
|
311
|
+
{ name: "JWT only", value: "base" },
|
|
312
|
+
{ name: "Email + Password Auth", value: "auth" },
|
|
313
|
+
{ name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
|
|
314
|
+
],
|
|
315
|
+
default: state.authMode ?? "base"
|
|
316
|
+
}
|
|
317
|
+
]);
|
|
318
|
+
function assertRequired(value, name) {
|
|
319
|
+
if (value === undefined || value === null || value === "") {
|
|
320
|
+
console.log(`❌ Missing required input: ${name}`);
|
|
321
|
+
process.exit(1);
|
|
322
|
+
}
|
|
198
323
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
let templateName = "express-base";
|
|
208
|
-
if (answers.authMode === "auth") {
|
|
209
|
-
templateName = "express-auth";
|
|
210
|
-
}
|
|
211
|
-
if (answers.authMode === "auth-oauth") {
|
|
212
|
-
templateName = "express-auth+";
|
|
213
|
-
}
|
|
214
|
-
const templatePath = path.join(templateRoot, templateName);
|
|
215
|
-
// 📁 Create project (SPINNER)
|
|
216
|
-
const createSpinner = ora("Creating project structure...").start();
|
|
217
|
-
try {
|
|
218
|
-
await fs.copy(templatePath, targetDir);
|
|
219
|
-
projectCreated = true;
|
|
220
|
-
createSpinner.succeed("Project files created");
|
|
221
|
-
}
|
|
222
|
-
catch (err) {
|
|
223
|
-
createSpinner.fail("Failed to create project");
|
|
224
|
-
console.error(err);
|
|
225
|
-
process.exit(1);
|
|
226
|
-
}
|
|
227
|
-
if (answers.usePrisma) {
|
|
228
|
-
const prismaSpinner = ora("Adding Prisma setup...").start();
|
|
229
|
-
try {
|
|
230
|
-
const dbType = answers.database ===
|
|
231
|
-
"postgresql" ? "postgresql"
|
|
232
|
-
: "sqlite";
|
|
233
|
-
const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
|
|
234
|
-
// Copy prisma schema
|
|
235
|
-
await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
|
|
236
|
-
// Copy env
|
|
237
|
-
await fs.copy(path.join(prismaTemplatePath, ".env"), path.join(targetDir, ".env"));
|
|
238
|
-
const pkgPath = path.join(targetDir, "package.json");
|
|
239
|
-
const pkg = await fs.readJson(pkgPath);
|
|
240
|
-
await fs.writeJson(pkgPath, pkg, { spaces: 2 });
|
|
241
|
-
// Inject dependencies
|
|
242
|
-
pkg.dependencies = {
|
|
243
|
-
...pkg.dependencies,
|
|
244
|
-
"@prisma/client": "5.22.0",
|
|
245
|
-
};
|
|
246
|
-
pkg.devDependencies = {
|
|
247
|
-
...pkg.devDependencies,
|
|
248
|
-
prisma: "5.22.0",
|
|
249
|
-
};
|
|
250
|
-
// Add scripts
|
|
251
|
-
pkg.scripts = {
|
|
252
|
-
...pkg.scripts,
|
|
253
|
-
"prisma:generate": "prisma generate",
|
|
254
|
-
"prisma:migrate": "prisma migrate dev",
|
|
255
|
-
};
|
|
256
|
-
prismaSpinner.succeed(`Prisma (${dbType}) configured`);
|
|
324
|
+
const finalConfig = {
|
|
325
|
+
...state,
|
|
326
|
+
...answers,
|
|
327
|
+
};
|
|
328
|
+
assertRequired(finalConfig.framework, "framework");
|
|
329
|
+
assertRequired(finalConfig.authMode, "authMode");
|
|
330
|
+
if (finalConfig.usePrisma && !finalConfig.database) {
|
|
331
|
+
finalConfig.database = "sqlite";
|
|
257
332
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
console.error(err);
|
|
333
|
+
if (finalConfig.usePrisma) {
|
|
334
|
+
assertRequired(finalConfig.database, "database");
|
|
261
335
|
}
|
|
262
|
-
|
|
336
|
+
if (finalConfig.usePrisma && !answers.database && !state.database) {
|
|
337
|
+
console.log(chalk.gray("ℹ️ Defaulting to SQLite (quick start)"));
|
|
338
|
+
}
|
|
339
|
+
if (!answers.authMode || !answers.framework) {
|
|
340
|
+
console.log("❌ Invalid setup state. Restart CLI.");
|
|
341
|
+
process.exit(1);
|
|
342
|
+
}
|
|
343
|
+
console.log(chalk.cyan("\n⚙️ Setting things up...\n"));
|
|
344
|
+
const templateRoot = path.resolve(__dirname, "../../templates");
|
|
345
|
+
let templateName = "express-base";
|
|
346
|
+
if (answers.authMode === "auth") {
|
|
347
|
+
templateName = "express-auth";
|
|
348
|
+
}
|
|
349
|
+
if (answers.authMode === "auth-oauth") {
|
|
350
|
+
templateName = "express-auth+";
|
|
351
|
+
}
|
|
352
|
+
const templatePath = path.join(templateRoot, templateName);
|
|
353
|
+
// 📁 Create project (SPINNER)
|
|
354
|
+
const createSpinner = ora("Creating project structure...").start();
|
|
263
355
|
try {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
});
|
|
268
|
-
installSpinner.succeed("Dependencies installed");
|
|
356
|
+
await fs.copy(templatePath, targetDir);
|
|
357
|
+
projectCreated = true;
|
|
358
|
+
createSpinner.succeed("Project files created");
|
|
269
359
|
}
|
|
270
360
|
catch (err) {
|
|
271
|
-
|
|
361
|
+
createSpinner.fail("Failed to create project");
|
|
272
362
|
console.error(err);
|
|
273
363
|
process.exit(1);
|
|
274
364
|
}
|
|
275
|
-
|
|
276
|
-
|
|
365
|
+
let selectedHash = "bcryptjs"; // default safe fallback
|
|
366
|
+
if (answers.authMode !== "base") {
|
|
367
|
+
const authSpinner = ora("Installing password auth...").start();
|
|
368
|
+
selectedHash = getBestHashLib();
|
|
277
369
|
try {
|
|
278
|
-
|
|
370
|
+
spawnSync("npm", ["install", selectedHash], {
|
|
279
371
|
cwd: targetDir,
|
|
280
372
|
stdio: "ignore"
|
|
281
373
|
});
|
|
282
|
-
|
|
374
|
+
authSpinner.succeed(`Password auth ready ${selectedHash}`);
|
|
283
375
|
}
|
|
284
376
|
catch (err) {
|
|
285
|
-
|
|
286
|
-
|
|
377
|
+
if (selectedHash !== "bcryptjs") {
|
|
378
|
+
authSpinner.warn(`${selectedHash} failed, falling back to bcryptjs`);
|
|
379
|
+
spawnSync("npm", ["install", "bcryptjs"], {
|
|
380
|
+
cwd: targetDir,
|
|
381
|
+
stdio: "ignore",
|
|
382
|
+
});
|
|
383
|
+
selectedHash = "bcryptjs";
|
|
384
|
+
authSpinner.succeed("Password auth ready (bcryptjs fallback)");
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
authSpinner.fail("Failed to install password auth");
|
|
388
|
+
process.exit(1);
|
|
389
|
+
}
|
|
287
390
|
}
|
|
288
391
|
}
|
|
289
|
-
if (
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
392
|
+
if (answers.authMode !== "base") {
|
|
393
|
+
const hashLib = getBestHashLib(); // or CLI decision
|
|
394
|
+
await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
|
|
395
|
+
const deps = [];
|
|
396
|
+
if (hashLib === "argon2")
|
|
397
|
+
deps.push("argon2");
|
|
398
|
+
if (hashLib === "bcryptjs")
|
|
399
|
+
deps.push("bcryptjs");
|
|
400
|
+
if (deps.length) {
|
|
401
|
+
execSync(`npm install ${deps.join(" ")}`, {
|
|
293
402
|
cwd: targetDir,
|
|
294
403
|
stdio: "ignore",
|
|
295
404
|
});
|
|
296
|
-
|
|
405
|
+
}
|
|
406
|
+
;
|
|
407
|
+
}
|
|
408
|
+
if (answers.usePrisma) {
|
|
409
|
+
const prismaSpinner = ora("Adding Prisma setup...").start();
|
|
410
|
+
try {
|
|
411
|
+
const dbType = answers.database ===
|
|
412
|
+
"postgresql" ? "postgresql"
|
|
413
|
+
: "sqlite";
|
|
414
|
+
const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
|
|
415
|
+
// Copy prisma schema
|
|
416
|
+
await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
|
|
417
|
+
// Copy env
|
|
418
|
+
await fs.copy(path.join(prismaTemplatePath, ".env"), path.join(targetDir, ".env"));
|
|
419
|
+
const pkgPath = path.join(targetDir, "package.json");
|
|
420
|
+
const pkg = await fs.readJson(pkgPath);
|
|
421
|
+
await fs.writeJson(pkgPath, pkg, { spaces: 2 });
|
|
422
|
+
// Inject dependencies
|
|
423
|
+
pkg.dependencies = {
|
|
424
|
+
...pkg.dependencies,
|
|
425
|
+
"@prisma/client": "5.22.0",
|
|
426
|
+
};
|
|
427
|
+
pkg.devDependencies = {
|
|
428
|
+
...pkg.devDependencies,
|
|
429
|
+
prisma: "5.22.0",
|
|
430
|
+
};
|
|
431
|
+
// Add scripts
|
|
432
|
+
pkg.scripts = {
|
|
433
|
+
...pkg.scripts,
|
|
434
|
+
"prisma:generate": "prisma generate",
|
|
435
|
+
"prisma:migrate": "prisma migrate dev",
|
|
436
|
+
};
|
|
437
|
+
prismaSpinner.succeed(`Prisma (${dbType}) configured`);
|
|
297
438
|
}
|
|
298
439
|
catch (err) {
|
|
299
|
-
|
|
440
|
+
prismaSpinner.fail("Failed to setup Prisma");
|
|
441
|
+
console.error(err);
|
|
300
442
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
443
|
+
if (answers.usePrisma) {
|
|
444
|
+
const prismaGenSpinner = ora("Generating Prisma client...").start();
|
|
445
|
+
try {
|
|
446
|
+
execSync("npx prisma@5.22.0 generate", {
|
|
447
|
+
cwd: targetDir,
|
|
448
|
+
stdio: "ignore"
|
|
449
|
+
});
|
|
450
|
+
prismaGenSpinner.succeed("Prisma client generated");
|
|
451
|
+
}
|
|
452
|
+
catch (err) {
|
|
453
|
+
prismaGenSpinner.fail("Failed to generate Prisma client");
|
|
454
|
+
console.error(err);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
const installSpinner = ora("Installing dependencies...(this may take a few minutes)").start();
|
|
304
458
|
try {
|
|
305
|
-
execSync("npm install
|
|
459
|
+
execSync("npm install", {
|
|
306
460
|
cwd: targetDir,
|
|
307
461
|
stdio: "ignore",
|
|
308
462
|
});
|
|
309
|
-
|
|
463
|
+
installSpinner.succeed("Dependencies installed");
|
|
310
464
|
}
|
|
311
465
|
catch (err) {
|
|
312
|
-
|
|
466
|
+
installSpinner.fail("Failed to install dependencies");
|
|
313
467
|
console.error(err);
|
|
314
468
|
process.exit(1);
|
|
315
469
|
}
|
|
470
|
+
if (isProduction) {
|
|
471
|
+
const pm2Spinner = ora("Setting up production mode (PM2)...").start();
|
|
472
|
+
try {
|
|
473
|
+
execSync("npm install pm2", {
|
|
474
|
+
cwd: targetDir,
|
|
475
|
+
stdio: "ignore",
|
|
476
|
+
});
|
|
477
|
+
pm2Spinner.succeed("PM2 installed (production-ready)");
|
|
478
|
+
}
|
|
479
|
+
catch (err) {
|
|
480
|
+
pm2Spinner.fail("Failed to install PM2");
|
|
481
|
+
}
|
|
482
|
+
}
|
|
316
483
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
484
|
+
if (answers.useGit) {
|
|
485
|
+
const gitSpinner = ora("Initializing git...").start();
|
|
486
|
+
try {
|
|
487
|
+
execSync("git init", {
|
|
488
|
+
cwd: targetDir,
|
|
489
|
+
stdio: "ignore",
|
|
490
|
+
});
|
|
491
|
+
gitSpinner.succeed("Git initialized");
|
|
492
|
+
}
|
|
493
|
+
catch (err) {
|
|
494
|
+
gitSpinner.fail("Git init failed");
|
|
495
|
+
}
|
|
329
496
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
fs.appendFileSync(path.join(targetDir, "README.md"), `
|
|
497
|
+
console.log(chalk.green.bold("\n🎉 Authenik8 app created successfully!\n"));
|
|
498
|
+
if (isProduction) {
|
|
499
|
+
fs.appendFileSync(path.join(targetDir, "README.md"), `
|
|
334
500
|
|
|
335
|
-
|
|
501
|
+
🚀 Production Mode
|
|
336
502
|
|
|
337
503
|
This project is configured for production using PM2.
|
|
338
504
|
|
|
339
|
-
|
|
505
|
+
Start app in cluster mode:
|
|
506
|
+
|
|
340
507
|
npm run pm2:start
|
|
341
508
|
|
|
342
|
-
|
|
509
|
+
View logs:
|
|
510
|
+
|
|
343
511
|
npm run pm2:logs
|
|
344
512
|
|
|
345
|
-
|
|
513
|
+
Stop app:
|
|
514
|
+
|
|
346
515
|
npm run pm2:stop
|
|
347
516
|
|
|
348
|
-
`);
|
|
349
|
-
|
|
350
|
-
|
|
517
|
+
`);
|
|
518
|
+
}
|
|
519
|
+
console.log(chalk.white(`
|
|
351
520
|
Next steps:
|
|
352
521
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
522
|
+
cd ${projectName}
|
|
523
|
+
redis-server --daemonize yes
|
|
524
|
+
npm run dev
|
|
356
525
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
526
|
+
Auth Features:
|
|
527
|
+
${answers.authMode === "base"
|
|
528
|
+
? "✓ JWT only"
|
|
529
|
+
: answers.authMode === "auth"
|
|
530
|
+
? "✓ Email + Password"
|
|
531
|
+
: "✓ Password + OAuth (Google/GitHub)"}
|
|
364
532
|
|
|
365
533
|
🛠 Stack:
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
534
|
+
✔ Express
|
|
535
|
+
✔ ${answers.usePrisma ? (answers.database.includes("postgresql") ? "PostgreSQL" : "SQLite") : "No database"}
|
|
536
|
+
✔ ${answers.usePrisma ? "Prisma ORM" : "No ORM"}
|
|
369
537
|
|
|
370
|
-
📡
|
|
538
|
+
📡 API Routes:
|
|
371
539
|
${answers.authMode === "base"
|
|
372
|
-
|
|
540
|
+
? `
|
|
373
541
|
GET /public
|
|
374
542
|
GET /guest
|
|
375
543
|
GET /protected
|
|
376
544
|
POST /refresh
|
|
377
545
|
`
|
|
378
|
-
|
|
379
|
-
|
|
546
|
+
: answers.authMode === "auth"
|
|
547
|
+
? `
|
|
380
548
|
POST /auth/register
|
|
381
549
|
POST /auth/login
|
|
382
550
|
POST /auth/refresh
|
|
383
551
|
GET /protected
|
|
384
552
|
`
|
|
385
|
-
|
|
553
|
+
: `
|
|
386
554
|
POST /auth/register
|
|
387
555
|
POST /auth/login
|
|
388
556
|
POST /auth/refresh
|
|
@@ -391,11 +559,10 @@ ${answers.authMode === "base"
|
|
|
391
559
|
GET /protected
|
|
392
560
|
`}
|
|
393
561
|
|
|
394
|
-
|
|
395
562
|
🔥 You're ready to build.
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
563
|
+
`));
|
|
564
|
+
if (isProduction) {
|
|
565
|
+
console.log(`
|
|
399
566
|
🚀 Production Ready Enabled:
|
|
400
567
|
|
|
401
568
|
✔ PM2 installed
|
|
@@ -403,16 +570,17 @@ ${answers.authMode === "base"
|
|
|
403
570
|
✔ Memory auto-restart (300MB)
|
|
404
571
|
|
|
405
572
|
Run:
|
|
406
|
-
|
|
573
|
+
npm run pm2:start
|
|
407
574
|
`);
|
|
575
|
+
}
|
|
408
576
|
}
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
if (projectCreated && fs.existsSync(targetDir)) {
|
|
413
|
-
await fs.remove(targetDir);
|
|
414
|
-
console.log("🧹 Cleaned up incomplete project.");
|
|
577
|
+
catch (err) {
|
|
578
|
+
console.error("Fatal error", err);
|
|
579
|
+
process.exit(1);
|
|
415
580
|
}
|
|
581
|
+
}
|
|
582
|
+
process.on("SIGINT", () => {
|
|
583
|
+
console.log("\n👋 Cancelled.");
|
|
416
584
|
process.exit(0);
|
|
417
585
|
});
|
|
418
586
|
main().catch(async (err) => {
|
|
@@ -424,12 +592,7 @@ main().catch(async (err) => {
|
|
|
424
592
|
}
|
|
425
593
|
process.exit(0);
|
|
426
594
|
}
|
|
427
|
-
console.error("
|
|
428
|
-
console.error(err);
|
|
429
|
-
if (projectCreated && fs.existsSync(targetDir)) {
|
|
430
|
-
await fs.remove(targetDir);
|
|
431
|
-
console.log("🧹 Cleaned up incomplete project.");
|
|
432
|
-
}
|
|
595
|
+
console.error("❌ Unexpected error:", err);
|
|
433
596
|
process.exit(1);
|
|
434
597
|
});
|
|
435
598
|
//# sourceMappingURL=index.js.map
|
package/dist/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-authenik8-app",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
|
|
5
|
-
"description":"Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
|
|
3
|
+
"version": "2.0.6",
|
|
4
|
+
"description": "Create production-ready backend APIs in seconds. Authenik8 scaffolds Express + Prisma projects with JWT authentication, database setup (PostgreSQL or SQLite), and scalable architecture out of the box.",
|
|
6
5
|
"bin": {
|
|
7
6
|
"create-authenik8-app": "dist/bin/index.js"
|
|
8
7
|
},
|
|
9
8
|
"keywords": [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
],
|
|
29
|
-
"license":"MIT",
|
|
30
|
-
"author":"Karabo Seeisa",
|
|
9
|
+
"cli",
|
|
10
|
+
"create-app",
|
|
11
|
+
"express",
|
|
12
|
+
"node",
|
|
13
|
+
"typescript",
|
|
14
|
+
"prisma",
|
|
15
|
+
"auth",
|
|
16
|
+
"authentication",
|
|
17
|
+
"scaffold",
|
|
18
|
+
"boilerplate",
|
|
19
|
+
"starter",
|
|
20
|
+
"backend",
|
|
21
|
+
"jwt",
|
|
22
|
+
"redis",
|
|
23
|
+
"api",
|
|
24
|
+
"nodejs-cli",
|
|
25
|
+
"project-generator",
|
|
26
|
+
"fullstack-backend"
|
|
27
|
+
],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"author": "Karabo Seeisa",
|
|
31
30
|
"type": "module",
|
|
32
31
|
"dependencies": {
|
|
33
32
|
"authenik8-core": "^1.0.3",
|
|
@@ -44,6 +43,6 @@
|
|
|
44
43
|
"devDependencies": {
|
|
45
44
|
"@types/express": "^5.0.6",
|
|
46
45
|
"@types/fs-extra": "^11.0.4",
|
|
47
|
-
"@types/node": "^25.
|
|
46
|
+
"@types/node": "^25.6.0"
|
|
48
47
|
}
|
|
49
48
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import argon2 from "argon2";
|
|
2
|
-
|
|
3
|
-
export const hashPassword = async (password: string): Promise<string> => {
|
|
4
|
-
return argon2.hash(password);
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export const comparePassword = async (
|
|
8
|
-
password: string,
|
|
9
|
-
hash: string
|
|
10
|
-
): Promise<boolean> => {
|
|
11
|
-
return argon2.verify(hash, password);
|
|
12
|
-
};
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import express from "express";
|
|
2
2
|
import { getAuth } from "./auth";
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
const router = express.Router();
|
|
5
|
-
const auth = getAuth();
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
router.get("/protected", (req, res) => {
|
|
9
|
+
|
|
10
|
+
const auth = getAuth()
|
|
11
|
+
|
|
12
|
+
return auth.requireAdmin(req, res, next);
|
|
13
|
+
}, (req, res) => {
|
|
8
14
|
res.json({ message: "Protected route" });
|
|
9
15
|
});
|
|
10
16
|
|
|
@@ -2,7 +2,7 @@ import express from "express";
|
|
|
2
2
|
import passwordRoutes from "./auth/password.route";
|
|
3
3
|
import oauthRoutes from "./auth/oauth.routes";
|
|
4
4
|
import protectedRoutes from "./auth/protected.routes";
|
|
5
|
-
import { initAuth } from "./auth";
|
|
5
|
+
import { initAuth } from "./auth/auth";
|
|
6
6
|
const app = express();
|
|
7
7
|
app.use(express.json());
|
|
8
8
|
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import argon2 from "argon2";
|
|
2
|
-
|
|
3
|
-
export const hashPassword = async (password: string): Promise<string> => {
|
|
4
|
-
return argon2.hash(password);
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export const comparePassword = async (
|
|
8
|
-
password: string,
|
|
9
|
-
hash: string
|
|
10
|
-
): Promise<boolean> => {
|
|
11
|
-
return argon2.verify(hash, password);
|
|
12
|
-
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
DIRECT_URL="postgresql://postgres:password@localhost:5432/authenik8_dev"
|
|
1
|
+
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public"
|
|
2
|
+
#localdev
|
|
3
|
+
DATABASE_URL="postgresql://postgres:password@localhost:5432/authenik8"
|