create-authenik8-app 2.0.3 → 2.0.5
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 +59 -221
- package/dist/bin/index.js +177 -37
- package/dist/bin/index.js.map +1 -1
- package/package.json +24 -23
- package/templates/express-auth+/src/auth/protected.routes.ts +4 -3
- package/templates/express-auth+/src/server.ts +1 -1
- package/templates/express-auth/src/utils/hash.ts +0 -12
- package/templates/express-auth+/src/utils/hash.ts +0 -12
package/README.md
CHANGED
|
@@ -1,71 +1,55 @@
|
|
|
1
|
-
<<<<<<< HEAD
|
|
2
|
-
<<<<<<< HEAD
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
=======
|
|
6
|
-
Good catch — then your README should reflect that. Don’t undersell what you already built.
|
|
7
|
-
|
|
8
|
-
Let’s fix it properly.
|
|
9
|
-
>>>>>>> 5471da4 (Update file README.md)
|
|
10
1
|
|
|
2
|
+
# Create-authenik8-app
|
|
11
3
|
|
|
12
|
-
---
|
|
13
4
|
|
|
14
|
-
<<<<<<< HEAD
|
|
15
|
-
=======
|
|
16
|
-
✅ Updated npm README (with RBAC included)
|
|
17
5
|
|
|
18
|
-
|
|
6
|
+
<p align="center">
|
|
7
|
+
<b> A lightweight authentication infrastructure generator powered by an internal Identity Engine.</b>
|
|
8
|
+
</p>
|
|
19
9
|
|
|
20
|
-
>>>>>>> 5471da4 (Update file README.md)
|
|
21
|
-
# create-authenik8-app
|
|
22
10
|
|
|
23
|
-
|
|
24
|
-
<b>Scaffold secure Express authentication APIs in seconds</b>
|
|
25
|
-
</p>
|
|
26
|
-
<<<<<<< HEAD
|
|
11
|
+

|
|
27
12
|
|
|
28
13
|
<p align="center">
|
|
29
|
-
|
|
14
|
+
<img src="./assets/giffy-ezgif.com-video-to-gif-converter.gif" width="600" />
|
|
30
15
|
</p>
|
|
31
|
-
|
|
32
16
|
---
|
|
33
17
|
|
|
34
|
-
##
|
|
18
|
+
## Usage
|
|
35
19
|
|
|
36
20
|
Create a new project:
|
|
37
21
|
|
|
38
|
-
|
|
22
|
+
bash
|
|
39
23
|
npx create-authenik8-app my-app
|
|
40
24
|
|
|
41
25
|
Then:
|
|
42
26
|
|
|
43
27
|
cd my-app
|
|
44
|
-
|
|
28
|
+
redis-server --daemonize yes
|
|
45
29
|
npm run dev
|
|
46
|
-
|
|
30
|
+
|
|
47
31
|
|
|
48
32
|
---
|
|
49
33
|
|
|
50
34
|
## What you get instantly
|
|
51
35
|
|
|
52
|
-
A fully working Express authentication starter with:
|
|
36
|
+
• A fully working Express authentication starter with:
|
|
53
37
|
|
|
54
|
-
JWT authentication (access + refresh tokens)
|
|
38
|
+
• JWT authentication (access + refresh tokens)
|
|
55
39
|
|
|
56
|
-
Secure refresh token rotation
|
|
40
|
+
• Secure refresh token rotation
|
|
57
41
|
|
|
58
|
-
Redis-based token storage
|
|
42
|
+
• Redis-based token storage
|
|
59
43
|
|
|
60
|
-
Role-Based Access Control (RBAC)
|
|
44
|
+
• Role-Based Access Control (RBAC)
|
|
61
45
|
|
|
62
|
-
TypeScript setup
|
|
46
|
+
• TypeScript setup
|
|
63
47
|
|
|
64
|
-
Express server preconfigured
|
|
48
|
+
• Express server preconfigured
|
|
65
49
|
|
|
66
|
-
Clean scalable folder structure
|
|
50
|
+
• Clean scalable folder structure
|
|
67
51
|
|
|
68
|
-
.env file generated automatically
|
|
52
|
+
• .env file generated automatically
|
|
69
53
|
|
|
70
54
|
|
|
71
55
|
|
|
@@ -99,9 +83,8 @@ Redis (required for refresh tokens)
|
|
|
99
83
|
|
|
100
84
|
---
|
|
101
85
|
|
|
102
|
-
## Redis Setup
|
|
103
|
-
|
|
104
|
-
|
|
86
|
+
## Redis Setup
|
|
87
|
+
|
|
105
88
|
Local
|
|
106
89
|
|
|
107
90
|
redis-server
|
|
@@ -110,228 +93,85 @@ Docker
|
|
|
110
93
|
|
|
111
94
|
docker run -p 6379:6379 redis
|
|
112
95
|
|
|
113
|
-
|
|
96
|
+
|
|
114
97
|
---
|
|
115
98
|
|
|
116
99
|
## Environment Variables
|
|
117
100
|
|
|
118
101
|
Generated automatically:
|
|
119
|
-
|
|
102
|
+
|
|
103
|
+
|
|
120
104
|
JWT_SECRET=your-secret
|
|
121
105
|
REFRESH_SECRET=your-refresh-secret
|
|
122
106
|
|
|
123
107
|
REDIS_HOST=127.0.0.1
|
|
124
108
|
REDIS_PORT=6379
|
|
125
109
|
|
|
126
|
-
|
|
110
|
+
|
|
111
|
+
|
|
127
112
|
---
|
|
128
113
|
|
|
114
|
+
|
|
115
|
+
|
|
129
116
|
## RBAC Example
|
|
130
|
-
```
|
|
131
|
-
Example of a protected route:
|
|
132
117
|
|
|
118
|
+
Example of a protected route:
|
|
119
|
+
``
|
|
133
120
|
app.get("/admin", auth.requireAdmin, (req, res) => {
|
|
134
121
|
res.json({ message: "Admin only route" });
|
|
135
122
|
});
|
|
123
|
+
``
|
|
136
124
|
|
|
137
|
-
```
|
|
138
125
|
---
|
|
139
|
-
|
|
140
|
-
📦 Powered by
|
|
126
|
+
## Powered by
|
|
141
127
|
|
|
142
128
|
authenik8-core
|
|
143
129
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Project Structure
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
my-app/
|
|
152
|
-
├── src/
|
|
153
|
-
│ |
|
|
154
|
-
│ ├
|
|
155
|
-
│ └── server.ts
|
|
156
|
-
├── .env
|
|
157
|
-
├── package.json
|
|
158
|
-
└── tsconfig.json
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Notes
|
|
164
|
-
|
|
165
|
-
Redis is required for refresh token handling
|
|
166
|
-
|
|
167
|
-
This CLI generates a starter project, not a full framework
|
|
168
|
-
|
|
169
|
-
RBAC is included via middleware (e.g. requireAdmin)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## Roadmap
|
|
176
|
-
|
|
177
|
-
OAuth providers (Google, GitHub)
|
|
178
|
-
|
|
179
|
-
Advanced RBAC (custom roles/permissions)
|
|
180
|
-
|
|
181
|
-
Docker templates
|
|
182
|
-
|
|
183
|
-
Admin dashboard
|
|
184
|
-
|
|
185
|
-
Production presets
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
# Create-authenik8-app
|
|
191
|
-
=======
|
|
192
|
-
# create-authenik8-app
|
|
193
|
-
>>>>>>> 01efb21 (Update file README.md)
|
|
194
|
-
|
|
195
|
-
<p align="center">
|
|
196
|
-
<b>Scaffold secure Express authentication APIs in seconds</b>
|
|
197
|
-
</p>
|
|
198
|
-
=======
|
|
199
|
-
>>>>>>> 5471da4 (Update file README.md)
|
|
200
|
-
|
|
201
|
-
<p align="center">
|
|
202
|
-
JWT • Refresh Tokens • Redis • RBAC • TypeScript • Express
|
|
203
|
-
</p>
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Usage
|
|
208
|
-
|
|
209
|
-
Create a new project:
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
-
npx create-authenik8-app my-app
|
|
213
|
-
|
|
214
|
-
Then:
|
|
215
|
-
|
|
216
|
-
cd my-app
|
|
217
|
-
npm install
|
|
218
|
-
npm run dev
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## What you get instantly
|
|
224
|
-
|
|
225
|
-
A fully working Express authentication starter with:
|
|
226
|
-
|
|
227
|
-
JWT authentication (access + refresh tokens)
|
|
228
|
-
|
|
229
|
-
Secure refresh token rotation
|
|
230
|
-
|
|
231
|
-
Redis-based token storage
|
|
232
|
-
|
|
233
|
-
Role-Based Access Control (RBAC)
|
|
234
|
-
|
|
235
|
-
TypeScript setup
|
|
236
|
-
|
|
237
|
-
Express server preconfigured
|
|
238
|
-
|
|
239
|
-
Clean scalable folder structure
|
|
240
|
-
|
|
241
|
-
.env file generated automatically
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
🧠 Why Authenik8?
|
|
248
|
-
|
|
249
|
-
Authentication systems usually require:
|
|
250
|
-
|
|
251
|
-
manual JWT setup
|
|
252
|
-
|
|
253
|
-
refresh token handling
|
|
254
|
-
|
|
255
|
-
Redis/session configuration
|
|
256
|
-
|
|
257
|
-
access control logic
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
Authenik8 provides all of this out of the box so you can start building your API immediately.
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
Requirements
|
|
266
|
-
|
|
267
|
-
Node.js 18+
|
|
268
|
-
|
|
269
|
-
Redis (required for refresh tokens)
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
130
|
---
|
|
274
131
|
|
|
275
|
-
|
|
276
|
-
|
|
132
|
+
## Design Goal
|
|
133
|
+
Authenik8 is not an auth library.
|
|
134
|
+
It is an auth system generator.
|
|
135
|
+
It removes setup time and enforces consistent backend security patterns by default.
|
|
277
136
|
|
|
278
|
-
|
|
137
|
+
Authenik8 treats authentication as an identity resolution problem, not just a login system.
|
|
279
138
|
|
|
280
|
-
|
|
139
|
+
At the core is an Identity Engine that ensures consistent user identity across:
|
|
140
|
+
- credentials (email/password)
|
|
141
|
+
- OAuth providers
|
|
142
|
+
- future authentication strategies
|
|
281
143
|
|
|
282
|
-
Docker
|
|
283
|
-
|
|
284
|
-
docker run -p 6379:6379 redis
|
|
285
|
-
```
|
|
286
144
|
---
|
|
287
145
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
JWT_SECRET=your-secret
|
|
293
|
-
REFRESH_SECRET=your-refresh-secret
|
|
294
|
-
|
|
295
|
-
REDIS_HOST=127.0.0.1
|
|
296
|
-
REDIS_PORT=6379
|
|
297
|
-
```
|
|
146
|
+
## OAuth
|
|
147
|
+
• Google
|
|
148
|
+
• Github
|
|
149
|
+
OAuth in Authenik8 is not a direct provider integration layer.
|
|
298
150
|
|
|
299
|
-
|
|
151
|
+
It is implemented through an internal Identity Engine that sits inside `authenik8-core`.
|
|
300
152
|
|
|
301
|
-
|
|
153
|
+
The Identity Engine is responsible for:
|
|
154
|
+
- Resolving OAuth profiles into system identities
|
|
155
|
+
- Handling login vs account linking flows
|
|
156
|
+
- Preventing duplicate identity creation across providers
|
|
157
|
+
- Normalizing provider-specific user data into a unified schema
|
|
302
158
|
|
|
303
|
-
|
|
304
|
-
```
|
|
305
|
-
app.get("/admin", auth.requireAdmin, (req, res) => {
|
|
306
|
-
res.json({ message: "Admin only route" });
|
|
307
|
-
});
|
|
308
|
-
```
|
|
159
|
+
This allows OAuth support to remain consistent regardless of provider complexity.
|
|
309
160
|
|
|
310
161
|
---
|
|
311
162
|
|
|
312
|
-
|
|
163
|
+
### Production Enhancements
|
|
313
164
|
|
|
314
|
-
|
|
165
|
+
- PM2 cluster mode support
|
|
166
|
+
- Auto restart on crashes
|
|
167
|
+
- Memory usage guardrails
|
|
168
|
+
- Basic security middleware (helmet, rate limiting)
|
|
315
169
|
|
|
316
170
|
|
|
317
171
|
|
|
318
172
|
---
|
|
319
173
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
my-app/
|
|
323
|
-
├── src/
|
|
324
|
-
│ ├
|
|
325
|
-
│ ├
|
|
326
|
-
│ └── server.ts
|
|
327
|
-
├── .env
|
|
328
|
-
├── package.json
|
|
329
|
-
└── tsconfig.json
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
---
|
|
333
|
-
|
|
334
|
-
📌 Notes
|
|
174
|
+
## Notes
|
|
335
175
|
|
|
336
176
|
Redis is required for refresh token handling
|
|
337
177
|
|
|
@@ -343,9 +183,7 @@ RBAC is included via middleware (e.g. requireAdmin)
|
|
|
343
183
|
|
|
344
184
|
---
|
|
345
185
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
OAuth providers (Google, GitHub)
|
|
186
|
+
## Roadmap
|
|
349
187
|
|
|
350
188
|
Advanced RBAC (custom roles/permissions)
|
|
351
189
|
|
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,6 +96,32 @@ 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: "list",
|
|
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
|
|
|
@@ -112,6 +217,7 @@ async function showBootLogo() {
|
|
|
112
217
|
await sleep(800);
|
|
113
218
|
boot.succeed("Engine ready");
|
|
114
219
|
}
|
|
220
|
+
//const isResume = process.argv.includes("--resume");
|
|
115
221
|
async function main() {
|
|
116
222
|
await showBootLogo();
|
|
117
223
|
if (process.argv.includes("--help")) {
|
|
@@ -122,6 +228,7 @@ Usage:
|
|
|
122
228
|
create-authenik8-app <project-name>
|
|
123
229
|
|
|
124
230
|
Options:
|
|
231
|
+
--resume Resume project setup(in development)
|
|
125
232
|
--help Show this help message
|
|
126
233
|
--production-ready production mode
|
|
127
234
|
Features:
|
|
@@ -157,19 +264,19 @@ Available options:
|
|
|
157
264
|
• Git initialization (optional)
|
|
158
265
|
• OAuth + Auth
|
|
159
266
|
`));
|
|
160
|
-
|
|
161
|
-
const answers = await inquirer.prompt([
|
|
267
|
+
answers = await inquirer.prompt([
|
|
162
268
|
{
|
|
163
269
|
type: "list",
|
|
164
270
|
name: "framework",
|
|
165
271
|
message: "Choose framework:",
|
|
166
272
|
choices: ["Express", "Fastify (coming soon)"],
|
|
273
|
+
default: state.framework ?? "Express",
|
|
167
274
|
},
|
|
168
275
|
{
|
|
169
276
|
type: "confirm",
|
|
170
277
|
name: "usePrisma",
|
|
171
278
|
message: "Use Prisma?",
|
|
172
|
-
default: true,
|
|
279
|
+
default: state.usePrisma ?? true,
|
|
173
280
|
},
|
|
174
281
|
{
|
|
175
282
|
type: "list",
|
|
@@ -180,12 +287,13 @@ Available options:
|
|
|
180
287
|
{ name: "SQLite (quick start, limited features)", value: "sqlite" }
|
|
181
288
|
],
|
|
182
289
|
when: (answers) => answers.usePrisma,
|
|
290
|
+
default: state.database ?? "sqlite",
|
|
183
291
|
},
|
|
184
292
|
{
|
|
185
293
|
type: "confirm",
|
|
186
294
|
name: "useGit",
|
|
187
295
|
message: "Initialize git?",
|
|
188
|
-
default: true,
|
|
296
|
+
default: state.useGit ?? true,
|
|
189
297
|
}, {
|
|
190
298
|
type: "list",
|
|
191
299
|
name: "authMode",
|
|
@@ -195,11 +303,32 @@ Available options:
|
|
|
195
303
|
{ name: "Email + Password Auth", value: "auth" },
|
|
196
304
|
{ name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
|
|
197
305
|
],
|
|
306
|
+
default: state.authMode ?? "base"
|
|
198
307
|
}
|
|
199
308
|
]);
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
309
|
+
function assertRequired(value, name) {
|
|
310
|
+
if (value === undefined || value === null || value === "") {
|
|
311
|
+
console.log(`❌ Missing required input: ${name}`);
|
|
312
|
+
process.exit(1);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
const finalConfig = {
|
|
316
|
+
...state,
|
|
317
|
+
...answers,
|
|
318
|
+
};
|
|
319
|
+
assertRequired(finalConfig.framework, "framework");
|
|
320
|
+
assertRequired(finalConfig.authMode, "authMode");
|
|
321
|
+
if (finalConfig.usePrisma && !finalConfig.database) {
|
|
322
|
+
finalConfig.database = "sqlite";
|
|
323
|
+
}
|
|
324
|
+
if (finalConfig.usePrisma) {
|
|
325
|
+
assertRequired(finalConfig.database, "database");
|
|
326
|
+
}
|
|
327
|
+
if (finalConfig.usePrisma && !answers.database && !state.database) {
|
|
328
|
+
console.log(chalk.gray("ℹ️ Defaulting to SQLite (quick start)"));
|
|
329
|
+
}
|
|
330
|
+
if (!answers.authMode || !answers.framework) {
|
|
331
|
+
console.log("❌ Invalid setup state. Restart CLI.");
|
|
203
332
|
process.exit(1);
|
|
204
333
|
}
|
|
205
334
|
console.log(chalk.cyan("\n⚙️ Setting things up...\n"));
|
|
@@ -224,6 +353,47 @@ Available options:
|
|
|
224
353
|
console.error(err);
|
|
225
354
|
process.exit(1);
|
|
226
355
|
}
|
|
356
|
+
let selectedHash = "bcryptjs"; // default safe fallback
|
|
357
|
+
if (answers.authMode !== "base") {
|
|
358
|
+
const authSpinner = ora("Installing password auth...").start();
|
|
359
|
+
selectedHash = getBestHashLib();
|
|
360
|
+
try {
|
|
361
|
+
spawnSync("npm", ["install", selectedHash], {
|
|
362
|
+
cwd: targetDir,
|
|
363
|
+
stdio: "ignore"
|
|
364
|
+
});
|
|
365
|
+
authSpinner.succeed(`Password auth ready ${selectedHash}`);
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
if (selectedHash !== "bcryptjs") {
|
|
369
|
+
authSpinner.warn(`${selectedHash} failed, falling back to bcryptjs`);
|
|
370
|
+
spawnSync("npm", ["install", "bcryptjs"], {
|
|
371
|
+
cwd: targetDir,
|
|
372
|
+
stdio: "ignore",
|
|
373
|
+
});
|
|
374
|
+
selectedHash = "bcryptjs";
|
|
375
|
+
authSpinner.succeed("Password auth ready (bcryptjs fallback)");
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
authSpinner.fail("Failed to install password auth");
|
|
379
|
+
process.exit(1);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const hashLib = getBestHashLib(); // or CLI decision
|
|
384
|
+
await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
|
|
385
|
+
const deps = [];
|
|
386
|
+
if (hashLib === "argon2")
|
|
387
|
+
deps.push("argon2");
|
|
388
|
+
if (hashLib === "bcryptjs")
|
|
389
|
+
deps.push("bcryptjs");
|
|
390
|
+
if (deps.length) {
|
|
391
|
+
execSync(`npm install ${deps.join(" ")}`, {
|
|
392
|
+
cwd: targetDir,
|
|
393
|
+
stdio: "ignore",
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
;
|
|
227
397
|
if (answers.usePrisma) {
|
|
228
398
|
const prismaSpinner = ora("Adding Prisma setup...").start();
|
|
229
399
|
try {
|
|
@@ -299,21 +469,6 @@ Available options:
|
|
|
299
469
|
pm2Spinner.fail("Failed to install PM2");
|
|
300
470
|
}
|
|
301
471
|
}
|
|
302
|
-
if (answers.authMode !== "base") {
|
|
303
|
-
const authSpinner = ora("Installing password auth...").start();
|
|
304
|
-
try {
|
|
305
|
-
execSync("npm install argon2", {
|
|
306
|
-
cwd: targetDir,
|
|
307
|
-
stdio: "ignore",
|
|
308
|
-
});
|
|
309
|
-
authSpinner.succeed("Password auth ready (argon2)");
|
|
310
|
-
}
|
|
311
|
-
catch (err) {
|
|
312
|
-
authSpinner.fail("Failed to install password auth");
|
|
313
|
-
console.error(err);
|
|
314
|
-
process.exit(1);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
472
|
}
|
|
318
473
|
if (answers.useGit) {
|
|
319
474
|
const gitSpinner = ora("Initializing git...").start();
|
|
@@ -407,14 +562,6 @@ Run:
|
|
|
407
562
|
`);
|
|
408
563
|
}
|
|
409
564
|
}
|
|
410
|
-
process.on("SIGINT", async () => {
|
|
411
|
-
console.log("\n👋 Authenik8 setup cancelled.");
|
|
412
|
-
if (projectCreated && fs.existsSync(targetDir)) {
|
|
413
|
-
await fs.remove(targetDir);
|
|
414
|
-
console.log("🧹 Cleaned up incomplete project.");
|
|
415
|
-
}
|
|
416
|
-
process.exit(0);
|
|
417
|
-
});
|
|
418
565
|
main().catch(async (err) => {
|
|
419
566
|
if (err instanceof ExitPromptError) {
|
|
420
567
|
console.log("\n👋 Authenik8 setup cancelled.");
|
|
@@ -424,12 +571,5 @@ main().catch(async (err) => {
|
|
|
424
571
|
}
|
|
425
572
|
process.exit(0);
|
|
426
573
|
}
|
|
427
|
-
console.error("\n❌ Unexpected error:");
|
|
428
|
-
console.error(err);
|
|
429
|
-
if (projectCreated && fs.existsSync(targetDir)) {
|
|
430
|
-
await fs.remove(targetDir);
|
|
431
|
-
console.log("🧹 Cleaned up incomplete project.");
|
|
432
|
-
}
|
|
433
|
-
process.exit(1);
|
|
434
574
|
});
|
|
435
575
|
//# 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,34 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-authenik8-app",
|
|
3
|
-
"version": "2.0.
|
|
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.",
|
|
3
|
+
"version": "2.0.5",
|
|
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.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-authenik8-app": "dist/bin/index.js"
|
|
7
7
|
},
|
|
8
8
|
"keywords": [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
],
|
|
28
|
-
"license":"MIT",
|
|
29
|
-
"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",
|
|
30
30
|
"type": "module",
|
|
31
31
|
"dependencies": {
|
|
32
|
+
"argon2": "^0.44.0",
|
|
32
33
|
"authenik8-core": "^1.0.3",
|
|
33
34
|
"chalk": "^5.6.2",
|
|
34
35
|
"fs-extra": "^11.3.4",
|
|
@@ -2,10 +2,11 @@ import express from "express";
|
|
|
2
2
|
import { getAuth } from "./auth";
|
|
3
3
|
|
|
4
4
|
const router = express.Router();
|
|
5
|
-
const auth = getAuth();
|
|
6
5
|
|
|
7
|
-
router.get("/protected",
|
|
8
|
-
|
|
6
|
+
router.get("/protected", (req, res,next) => {
|
|
7
|
+
const auth = getAuth();
|
|
8
|
+
return auth.requireAdmin(req,res,next);},(req,res)=>{
|
|
9
|
+
res.json({ message: "Protected route" });
|
|
9
10
|
});
|
|
10
11
|
|
|
11
12
|
export default router;
|
|
@@ -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,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
|
-
};
|