@abp/ng.schematics 10.0.0-rc.2 → 10.0.0
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/collection.json +11 -1
- package/commands/create-lib/index.d.ts +1 -1
- package/commands/create-lib/index.js +13 -10
- package/commands/create-lib/index.js.map +1 -1
- package/commands/ssr-add/files/application-builder/server.ts.template +192 -0
- package/commands/ssr-add/files/server-builder/server.ts.template +220 -0
- package/commands/ssr-add/index.d.ts +11 -0
- package/commands/ssr-add/index.js +363 -0
- package/commands/ssr-add/index.js.map +1 -0
- package/commands/ssr-add/schema.json +23 -0
- package/commands/ssr-add/server/files/application-builder/ngmodule-src/app/app.module.server.ts.template +23 -0
- package/commands/ssr-add/server/files/application-builder/ngmodule-src/app/app.routes.server.ts.template +8 -0
- package/commands/ssr-add/server/files/application-builder/ngmodule-src/main.server.ts.template +1 -0
- package/commands/ssr-add/server/files/application-builder/standalone-src/app/app.config.server.ts.template +29 -0
- package/commands/ssr-add/server/files/application-builder/standalone-src/app/app.routes.server.ts.template +8 -0
- package/commands/ssr-add/server/files/application-builder/standalone-src/main.server.ts.template +7 -0
- package/commands/ssr-add/server/files/server-builder/ngmodule-src/app/app.module.server.ts.template +25 -0
- package/commands/ssr-add/server/files/server-builder/ngmodule-src/main.server.ts.template +1 -0
- package/commands/ssr-add/server/files/server-builder/root/tsconfig.server.json.template +15 -0
- package/commands/ssr-add/server/files/server-builder/standalone-src/app/app.config.server.ts.template +29 -0
- package/commands/ssr-add/server/files/server-builder/standalone-src/main.server.ts.template +7 -0
- package/commands/ssr-add/server/index.d.ts +10 -0
- package/commands/ssr-add/server/index.js +206 -0
- package/commands/ssr-add/server/index.js.map +1 -0
- package/commands/ssr-add/server/index.ts +268 -0
- package/commands/ssr-add/server/schema.json +23 -0
- package/package.json +1 -1
- package/utils/angular/index.d.ts +1 -0
- package/utils/angular/index.js +1 -0
- package/utils/angular/index.js.map +1 -1
- package/utils/angular/latest-versions/index.d.ts +28 -0
- package/utils/angular/latest-versions/index.js +32 -0
- package/utils/angular/latest-versions/index.js.map +1 -0
- package/utils/angular/workspace.d.ts +1 -0
- package/utils/angular/workspace.js +3 -1
- package/utils/angular/workspace.js.map +1 -1
package/collection.json
CHANGED
|
@@ -34,7 +34,17 @@
|
|
|
34
34
|
"description": "ABP Change Styles of Theme Schematics",
|
|
35
35
|
"factory": "./commands/change-theme",
|
|
36
36
|
"schema": "./commands/change-theme/schema.json"
|
|
37
|
-
|
|
37
|
+
},
|
|
38
|
+
"server": {
|
|
39
|
+
"factory": "./commands/ssr-add/server",
|
|
40
|
+
"description": "Create an Angular server app.",
|
|
41
|
+
"schema": "./commands/ssr-add/server/schema.json",
|
|
42
|
+
"hidden": true
|
|
43
|
+
},
|
|
44
|
+
"ssr-add": {
|
|
45
|
+
"description": "ABP SSR Add Schematics",
|
|
46
|
+
"factory": "./commands/ssr-add",
|
|
47
|
+
"schema": "./commands/ssr-add/schema.json"
|
|
38
48
|
}
|
|
39
49
|
}
|
|
40
50
|
}
|
|
@@ -10,4 +10,4 @@ export declare function createLibSecondaryEntry(tree: Tree, options: GenerateLib
|
|
|
10
10
|
export declare function createLibSecondaryEntryWithStandaloneTemplate(tree: Tree, options: GenerateLibSchema): Promise<Rule>;
|
|
11
11
|
export declare function importConfigModuleToDefaultProjectAppModule(packageName: string, options: GenerateLibSchema): (tree: Tree) => Promise<Rule | undefined>;
|
|
12
12
|
export declare function addRoutingToAppRoutingModule(workspace: WorkspaceDefinition, packageName: string, options: GenerateLibSchema): Rule;
|
|
13
|
-
export declare function addRouteToRoutesArray(source: ts.SourceFile,
|
|
13
|
+
export declare function addRouteToRoutesArray(source: ts.SourceFile, routeToAdd: string): InsertChange | null;
|
|
@@ -222,7 +222,7 @@ function addRoutingToAppRoutingModule(workspace, packageName, options) {
|
|
|
222
222
|
? `() => import('${routePath}').then(m => m.${macroName}_ROUTES)`
|
|
223
223
|
: `() => import('${routePath}').then(m => m.${moduleName}.forLazy())`;
|
|
224
224
|
const routeToAdd = `{ path: '${routePath}', loadChildren: ${routeExpr} }`;
|
|
225
|
-
const change = addRouteToRoutesArray(source,
|
|
225
|
+
const change = addRouteToRoutesArray(source, routeToAdd);
|
|
226
226
|
if (change instanceof utils_1.InsertChange) {
|
|
227
227
|
const recorder = tree.beginUpdate(appRoutesPath);
|
|
228
228
|
recorder.insertLeft(change.pos, change.toAdd);
|
|
@@ -261,16 +261,19 @@ function addRoutingToAppRoutingModule(workspace, packageName, options) {
|
|
|
261
261
|
};
|
|
262
262
|
}
|
|
263
263
|
exports.addRoutingToAppRoutingModule = addRoutingToAppRoutingModule;
|
|
264
|
-
function addRouteToRoutesArray(source,
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
264
|
+
function addRouteToRoutesArray(source, routeToAdd) {
|
|
265
|
+
// Find all variable declarations that are array literals and contain route definitions
|
|
266
|
+
const routeArrays = source.statements
|
|
267
|
+
.filter(ts.isVariableStatement)
|
|
268
|
+
.flatMap(stmt => stmt.declarationList.declarations.filter(decl => ts.isVariableDeclaration(decl) &&
|
|
269
|
+
decl.initializer &&
|
|
270
|
+
ts.isArrayLiteralExpression(decl.initializer) &&
|
|
271
|
+
decl.initializer.elements.some(el => el.getText().includes('path:'))));
|
|
272
|
+
if (routeArrays.length === 0) {
|
|
273
|
+
throw new Error('No routes array found in source file.');
|
|
272
274
|
}
|
|
273
|
-
|
|
275
|
+
// Select the first routes array found
|
|
276
|
+
const declaration = routeArrays[0];
|
|
274
277
|
const arrayLiteral = declaration.initializer;
|
|
275
278
|
const getPathValue = (routeText) => {
|
|
276
279
|
const match = routeText.match(/path:\s*['"`](.+?)['"`]/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/schematics/src/commands/create-lib/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/schematics/src/commands/create-lib/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AngularNodeAppEngine,
|
|
3
|
+
createNodeRequestHandler,
|
|
4
|
+
isMainModule,
|
|
5
|
+
writeResponseToNodeResponse,
|
|
6
|
+
} from '@angular/ssr/node';
|
|
7
|
+
import express from 'express';
|
|
8
|
+
import { dirname, resolve } from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import {environment} from './environments/environment';
|
|
11
|
+
import { ServerCookieParser } from '@abp/ng.core';
|
|
12
|
+
|
|
13
|
+
// ESM import
|
|
14
|
+
import * as oidc from 'openid-client';
|
|
15
|
+
|
|
16
|
+
if (environment.production === false) {
|
|
17
|
+
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = "0";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
const browserDistFolder = resolve(serverDistFolder, '../browser');
|
|
22
|
+
|
|
23
|
+
const app = express();
|
|
24
|
+
const angularApp = new AngularNodeAppEngine();
|
|
25
|
+
|
|
26
|
+
const ISSUER = new URL(environment.oAuthConfig.issuer);
|
|
27
|
+
const CLIENT_ID = environment.oAuthConfig.clientId;
|
|
28
|
+
const REDIRECT_URI = environment.oAuthConfig.redirectUri;
|
|
29
|
+
const SCOPE = environment.oAuthConfig.scope;
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
const CLIENT_SECRET = environment.oAuthConfig.clientSecret || undefined;
|
|
32
|
+
|
|
33
|
+
const config = await oidc.discovery(ISSUER, CLIENT_ID, CLIENT_SECRET);
|
|
34
|
+
const secureCookie = { httpOnly: true, sameSite: 'lax' as const, secure: environment.production, path: '/' };
|
|
35
|
+
const tokenCookie = { ...secureCookie, httpOnly: false };
|
|
36
|
+
|
|
37
|
+
app.use(ServerCookieParser.middleware());
|
|
38
|
+
|
|
39
|
+
const sessions = new Map<string, { pkce?: string; state?: string; refresh?: string; at?: string, returnUrl?: string }>();
|
|
40
|
+
|
|
41
|
+
app.get('/authorize', async (_req, res) => {
|
|
42
|
+
const code_verifier = oidc.randomPKCECodeVerifier();
|
|
43
|
+
const code_challenge = await oidc.calculatePKCECodeChallenge(code_verifier);
|
|
44
|
+
const state = oidc.randomState();
|
|
45
|
+
|
|
46
|
+
if (_req.query.returnUrl) {
|
|
47
|
+
const returnUrl = String(_req.query.returnUrl || null);
|
|
48
|
+
res.cookie('returnUrl', returnUrl, { ...secureCookie, maxAge: 5 * 60 * 1000 });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const sid = crypto.randomUUID();
|
|
52
|
+
sessions.set(sid, { pkce: code_verifier, state });
|
|
53
|
+
res.cookie('sid', sid, secureCookie);
|
|
54
|
+
|
|
55
|
+
const url = oidc.buildAuthorizationUrl(config, {
|
|
56
|
+
redirect_uri: REDIRECT_URI,
|
|
57
|
+
scope: SCOPE,
|
|
58
|
+
code_challenge,
|
|
59
|
+
code_challenge_method: 'S256',
|
|
60
|
+
state,
|
|
61
|
+
});
|
|
62
|
+
res.redirect(url.toString());
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
app.get('/logout', async (req, res) => {
|
|
66
|
+
try {
|
|
67
|
+
const sid = req.cookies.sid;
|
|
68
|
+
|
|
69
|
+
if (sid && sessions.has(sid)) {
|
|
70
|
+
sessions.delete(sid);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
res.clearCookie('sid', secureCookie);
|
|
74
|
+
res.clearCookie('access_token', tokenCookie);
|
|
75
|
+
res.clearCookie('refresh_token', secureCookie);
|
|
76
|
+
res.clearCookie('expires_at', tokenCookie);
|
|
77
|
+
res.clearCookie('returnUrl', secureCookie);
|
|
78
|
+
|
|
79
|
+
const endSessionEndpoint = config.serverMetadata().end_session_endpoint;
|
|
80
|
+
if (endSessionEndpoint) {
|
|
81
|
+
const logoutUrl = new URL(endSessionEndpoint);
|
|
82
|
+
logoutUrl.searchParams.set('post_logout_redirect_uri', REDIRECT_URI);
|
|
83
|
+
logoutUrl.searchParams.set('client_id', CLIENT_ID);
|
|
84
|
+
|
|
85
|
+
return res.redirect(logoutUrl.toString());
|
|
86
|
+
}
|
|
87
|
+
res.redirect('/');
|
|
88
|
+
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('Logout error:', error);
|
|
91
|
+
res.status(500).send('Logout error');
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
app.get('/', async (req, res, next) => {
|
|
96
|
+
try {
|
|
97
|
+
const { code, state } = req.query as any;
|
|
98
|
+
if (!code || !state) return next();
|
|
99
|
+
|
|
100
|
+
const sid = req.cookies.sid;
|
|
101
|
+
const sess = sid && sessions.get(sid);
|
|
102
|
+
if (!sess || state !== sess.state) return res.status(400).send('invalid state');
|
|
103
|
+
|
|
104
|
+
const tokenEndpoint = config.serverMetadata().token_endpoint!;
|
|
105
|
+
const body = new URLSearchParams({
|
|
106
|
+
grant_type: 'authorization_code',
|
|
107
|
+
code: String(code),
|
|
108
|
+
redirect_uri: environment.oAuthConfig.redirectUri,
|
|
109
|
+
code_verifier: sess.pkce!,
|
|
110
|
+
client_id: CLIENT_ID,
|
|
111
|
+
client_secret: CLIENT_SECRET || ''
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const resp = await fetch(tokenEndpoint, {
|
|
115
|
+
method: 'POST',
|
|
116
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
|
117
|
+
body,
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
if (!resp.ok) {
|
|
121
|
+
const errTxt = await resp.text();
|
|
122
|
+
console.error('token error:', resp.status, errTxt);
|
|
123
|
+
return res.status(500).send('token error');
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const tokens = await resp.json();
|
|
127
|
+
|
|
128
|
+
const expiresInSec =
|
|
129
|
+
Number(tokens.expires_in ?? tokens.expiresIn ?? 3600);
|
|
130
|
+
const skewSec = 60;
|
|
131
|
+
const accessExpiresAt = new Date(
|
|
132
|
+
Date.now() + Math.max(0, expiresInSec - skewSec) * 1000
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
sessions.set(sid, { ...sess, at: tokens.access_token, refresh: tokens.refresh_token });
|
|
136
|
+
res.cookie('access_token', tokens.access_token, {...tokenCookie, maxAge: accessExpiresAt.getTime()});
|
|
137
|
+
res.cookie('refresh_token', tokens.refresh_token, secureCookie);
|
|
138
|
+
res.cookie('expires_at', String(accessExpiresAt.getTime()), tokenCookie);
|
|
139
|
+
|
|
140
|
+
const returnUrl = req.cookies?.returnUrl ?? '/';
|
|
141
|
+
res.clearCookie('returnUrl', secureCookie);
|
|
142
|
+
|
|
143
|
+
return res.redirect(returnUrl);
|
|
144
|
+
} catch (e) {
|
|
145
|
+
console.error('OIDC error:', e);
|
|
146
|
+
return res.status(500).send('oidc error');
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Serve static files from /browser
|
|
152
|
+
*/
|
|
153
|
+
app.use(
|
|
154
|
+
express.static(browserDistFolder, {
|
|
155
|
+
maxAge: '1y',
|
|
156
|
+
index: false,
|
|
157
|
+
redirect: false,
|
|
158
|
+
}),
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Handle all other requests by rendering the Angular application.
|
|
163
|
+
*/
|
|
164
|
+
app.use((req, res, next) => {
|
|
165
|
+
angularApp
|
|
166
|
+
.handle(req)
|
|
167
|
+
.then(response => {
|
|
168
|
+
if (response) {
|
|
169
|
+
res.cookie('ssr-init', 'true', {...secureCookie, httpOnly: false});
|
|
170
|
+
return writeResponseToNodeResponse(response, res);
|
|
171
|
+
} else {
|
|
172
|
+
return next()
|
|
173
|
+
}
|
|
174
|
+
})
|
|
175
|
+
.catch(next);
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Start the server if this module is the main entry point.
|
|
180
|
+
* The server listens on the port defined by the `PORT` environment variable, or defaults to 4000.
|
|
181
|
+
*/
|
|
182
|
+
if (isMainModule(import.meta.url)) {
|
|
183
|
+
const port = process.env['PORT'] || 4200;
|
|
184
|
+
app.listen(port, () => {
|
|
185
|
+
console.log(`Node Express server listening on http://localhost:${port}`);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Request handler used by the Angular CLI (for dev-server and during build) or Firebase Cloud Functions.
|
|
191
|
+
*/
|
|
192
|
+
export const reqHandler = createNodeRequestHandler(app);
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import 'zone.js/node';
|
|
2
|
+
|
|
3
|
+
import { APP_BASE_HREF } from '@angular/common';
|
|
4
|
+
import { CommonEngine } from '@angular/ssr/node';
|
|
5
|
+
import * as express from 'express';
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %> from './main.server';
|
|
9
|
+
import {environment} from './environments/environment';
|
|
10
|
+
import * as oidc from 'openid-client';
|
|
11
|
+
import { ServerCookieParser } from '@abp/ng.core';
|
|
12
|
+
import {COOKIES} from "@abp/ng.oauth";
|
|
13
|
+
|
|
14
|
+
if (environment.production === false) {
|
|
15
|
+
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = "0";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const ISSUER = new URL(environment.oAuthConfig.issuer);
|
|
19
|
+
const CLIENT_ID = environment.oAuthConfig.clientId;
|
|
20
|
+
const REDIRECT_URI = environment.oAuthConfig.redirectUri;
|
|
21
|
+
const SCOPE = environment.oAuthConfig.scope;
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
const CLIENT_SECRET = environment.oAuthConfig.clientSecret || undefined;
|
|
24
|
+
|
|
25
|
+
let config: Awaited<ReturnType<typeof oidc.discovery>>;
|
|
26
|
+
const secureCookie = { httpOnly: true, sameSite: 'lax' as const, secure: environment.production, path: '/' };
|
|
27
|
+
const tokenCookie = { ...secureCookie, httpOnly: false };
|
|
28
|
+
|
|
29
|
+
async function initializeOIDC() {
|
|
30
|
+
config = await oidc.discovery(ISSUER, CLIENT_ID, CLIENT_SECRET);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// The Express app is exported so that it can be used by serverless Functions.
|
|
34
|
+
export function app(): express.Express {
|
|
35
|
+
const server = express();
|
|
36
|
+
const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
|
|
37
|
+
const indexHtml = existsSync(join(distFolder, 'index.original.html'))
|
|
38
|
+
? join(distFolder, 'index.original.html')
|
|
39
|
+
: join(distFolder, 'index.html');
|
|
40
|
+
|
|
41
|
+
const commonEngine = new CommonEngine();
|
|
42
|
+
|
|
43
|
+
server.set('view engine', 'html');
|
|
44
|
+
server.set('views', distFolder);
|
|
45
|
+
|
|
46
|
+
server.use(ServerCookieParser.middleware());
|
|
47
|
+
|
|
48
|
+
const sessions = new Map<string, { pkce?: string; state?: string; refresh?: string; at?: string, returnUrl?: string }>();
|
|
49
|
+
|
|
50
|
+
server.get('/authorize', async (_req, res) => {
|
|
51
|
+
const code_verifier = oidc.randomPKCECodeVerifier();
|
|
52
|
+
const code_challenge = await oidc.calculatePKCECodeChallenge(code_verifier);
|
|
53
|
+
const state = oidc.randomState();
|
|
54
|
+
|
|
55
|
+
if (_req.query.returnUrl) {
|
|
56
|
+
const returnUrl = String(_req.query.returnUrl || null);
|
|
57
|
+
res.cookie('returnUrl', returnUrl, { ...secureCookie, maxAge: 5 * 60 * 1000 });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const sid = crypto.randomUUID();
|
|
61
|
+
sessions.set(sid, { pkce: code_verifier, state });
|
|
62
|
+
res.cookie('sid', sid, secureCookie);
|
|
63
|
+
|
|
64
|
+
const url = oidc.buildAuthorizationUrl(config, {
|
|
65
|
+
redirect_uri: REDIRECT_URI,
|
|
66
|
+
scope: SCOPE,
|
|
67
|
+
code_challenge,
|
|
68
|
+
code_challenge_method: 'S256',
|
|
69
|
+
state,
|
|
70
|
+
});
|
|
71
|
+
res.redirect(url.toString());
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
server.get('/logout', async (req, res) => {
|
|
75
|
+
try {
|
|
76
|
+
const sid = req.cookies.sid;
|
|
77
|
+
|
|
78
|
+
if (sid && sessions.has(sid)) {
|
|
79
|
+
sessions.delete(sid);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
res.clearCookie('sid', secureCookie);
|
|
83
|
+
res.clearCookie('access_token', tokenCookie);
|
|
84
|
+
res.clearCookie('refresh_token', secureCookie);
|
|
85
|
+
res.clearCookie('expires_at', tokenCookie);
|
|
86
|
+
res.clearCookie('returnUrl', secureCookie);
|
|
87
|
+
|
|
88
|
+
if (!config) {
|
|
89
|
+
return res.redirect('/');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const endSessionEndpoint = config.serverMetadata().end_session_endpoint;
|
|
93
|
+
if (endSessionEndpoint) {
|
|
94
|
+
const logoutUrl = new URL(endSessionEndpoint);
|
|
95
|
+
logoutUrl.searchParams.set('post_logout_redirect_uri', REDIRECT_URI);
|
|
96
|
+
logoutUrl.searchParams.set('client_id', CLIENT_ID);
|
|
97
|
+
|
|
98
|
+
return res.redirect(logoutUrl.toString());
|
|
99
|
+
}
|
|
100
|
+
res.redirect('/');
|
|
101
|
+
|
|
102
|
+
} catch (error) {
|
|
103
|
+
console.error('Logout error:', error);
|
|
104
|
+
res.status(500).send('Logout error');
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
server.get('/', async (req, res, next) => {
|
|
109
|
+
try {
|
|
110
|
+
const { code, state } = req.query as any;
|
|
111
|
+
if (!code || !state) return next();
|
|
112
|
+
|
|
113
|
+
const sid = req.cookies.sid;
|
|
114
|
+
const sess = sid && sessions.get(sid);
|
|
115
|
+
if (!sess || state !== sess.state) return res.status(400).send('invalid state');
|
|
116
|
+
|
|
117
|
+
const tokenEndpoint = config.serverMetadata().token_endpoint!;
|
|
118
|
+
const body = new URLSearchParams({
|
|
119
|
+
grant_type: 'authorization_code',
|
|
120
|
+
code: String(code),
|
|
121
|
+
redirect_uri: environment.oAuthConfig.redirectUri,
|
|
122
|
+
code_verifier: sess.pkce!,
|
|
123
|
+
client_id: CLIENT_ID
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
const resp = await fetch(tokenEndpoint, {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
|
129
|
+
body,
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
if (!resp.ok) {
|
|
133
|
+
const errTxt = await resp.text();
|
|
134
|
+
console.error('token error:', resp.status, errTxt);
|
|
135
|
+
return res.status(500).send('token error');
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const tokens = await resp.json();
|
|
139
|
+
|
|
140
|
+
const expiresInSec =
|
|
141
|
+
Number(tokens.expires_in ?? tokens.expiresIn ?? 3600);
|
|
142
|
+
const skewSec = 60;
|
|
143
|
+
const accessExpiresAt = new Date(
|
|
144
|
+
Date.now() + Math.max(0, expiresInSec - skewSec) * 1000
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
sessions.set(sid, { ...sess, at: tokens.access_token, refresh: tokens.refresh_token });
|
|
148
|
+
res.cookie('access_token', tokens.access_token, {...tokenCookie, maxAge: accessExpiresAt.getTime()});
|
|
149
|
+
res.cookie('refresh_token', tokens.refresh_token, secureCookie);
|
|
150
|
+
res.cookie('expires_at', String(accessExpiresAt.getTime()), tokenCookie);
|
|
151
|
+
|
|
152
|
+
const returnUrl = req.cookies?.returnUrl ?? '/';
|
|
153
|
+
res.clearCookie('returnUrl', secureCookie);
|
|
154
|
+
|
|
155
|
+
return res.redirect(returnUrl);
|
|
156
|
+
} catch (e) {
|
|
157
|
+
console.error('OIDC error:', e);
|
|
158
|
+
return res.status(500).send('oidc error');
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
// Example Express Rest API endpoints
|
|
164
|
+
// server.get('/api/{*splat}', (req, res) => { });
|
|
165
|
+
// Serve static files from /browser
|
|
166
|
+
server.use(express.static(distFolder, {
|
|
167
|
+
maxAge: '1y',
|
|
168
|
+
index: false,
|
|
169
|
+
}));
|
|
170
|
+
|
|
171
|
+
// All regular routes use the Angular engine
|
|
172
|
+
server.use((req, res, next) => {
|
|
173
|
+
const { protocol, originalUrl, baseUrl, headers } = req;
|
|
174
|
+
|
|
175
|
+
commonEngine
|
|
176
|
+
.render({
|
|
177
|
+
<% if (isStandalone) { %>bootstrap<% } else { %>bootstrap: AppServerModule<% } %>,
|
|
178
|
+
documentFilePath: indexHtml,
|
|
179
|
+
url: `${protocol}://${headers.host}${originalUrl}`,
|
|
180
|
+
publicPath: distFolder,
|
|
181
|
+
providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }, { provide: COOKIES, useValue: JSON.stringify(req.headers.cookie) }],
|
|
182
|
+
})
|
|
183
|
+
.then((html) => {
|
|
184
|
+
res.cookie('ssr-init', 'true', {...secureCookie, httpOnly: false});
|
|
185
|
+
return res.send(html)
|
|
186
|
+
})
|
|
187
|
+
.catch((err) => next(err));
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
return server;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
async function run(): Promise<void> {
|
|
194
|
+
const port = process.env['PORT'] || 4000;
|
|
195
|
+
|
|
196
|
+
console.log('🔐 Initializing OIDC configuration...');
|
|
197
|
+
await initializeOIDC();
|
|
198
|
+
console.log('✅ OIDC configuration loaded');
|
|
199
|
+
|
|
200
|
+
// Start up the Node server
|
|
201
|
+
const server = app();
|
|
202
|
+
server.listen(port, (error) => {
|
|
203
|
+
if (error) {
|
|
204
|
+
throw error;
|
|
205
|
+
}
|
|
206
|
+
console.log(`Node Express server listening on http://localhost:${port}`);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Webpack will replace 'require' with '__webpack_require__'
|
|
211
|
+
// '__non_webpack_require__' is a proxy to Node 'require'
|
|
212
|
+
// The below code is to ensure that the server is run only when not requiring the bundle.
|
|
213
|
+
declare const __non_webpack_require__: NodeRequire;
|
|
214
|
+
const mainModule = __non_webpack_require__.main;
|
|
215
|
+
const moduleFilename = mainModule && mainModule.filename || '';
|
|
216
|
+
if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
|
|
217
|
+
run();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export default <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
import { Rule } from '@angular-devkit/schematics';
|
|
9
|
+
import { Schema as SSROptions } from './schema';
|
|
10
|
+
export declare function updateIndexHtml(options: SSROptions): Rule;
|
|
11
|
+
export default function (options: SSROptions): Rule;
|