Add CORS headers.
This commit is contained in:
parent
1686ec01be
commit
d2aded6022
@ -1,9 +1,11 @@
|
||||
export const Config = {
|
||||
LISTEN_PORT: process.env.CERC_KCUSERREG_LISTEN_PORT || 9292,
|
||||
LISTEN_PORT: parseInt(process.env.CERC_KCUSERREG_LISTEN_PORT || '9292'),
|
||||
LISTEN_ADDR: parseInt(process.env.CERC_KCUSERREG_LISTEN_ADDR || '0.0.0.0'),
|
||||
API_URL: process.env.CERC_KCUSERREG_API_URL || 'http://localhost:57198/auth',
|
||||
REG_USER: process.env.CERC_KCUSERREG_REG_USER || 'admin',
|
||||
REG_PW: process.env.CERC_KCUSERREG_REG_PW || 'admin',
|
||||
REG_CLIENT_ID: process.env.CERC_KCUSERREG_REG_CLIENT_ID || 'admin-cli',
|
||||
TARGET_REALM: process.env.CERC_KCUSERREG_TARGET_REALM || 'cerc',
|
||||
TARGET_GROUPS: process.env.CERC_KCUSERREG_TARGET_GROUPS?.split(',') || ['eth'],
|
||||
CREATE_ENABLED: "true" === (process.env.CERC_KCUSERREG_CREATE_ENABLED || 'true')
|
||||
};
|
||||
|
||||
11
src/middleware/cors.ts
Normal file
11
src/middleware/cors.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import {MiddlewareFunction} from 'http-request-handler';
|
||||
|
||||
import {Logger} from '../util/logger.js';
|
||||
|
||||
const log = new Logger('cerc:keycloak-userreg:mw:cors');
|
||||
|
||||
export const CorsMW: MiddlewareFunction = (request, response, data, resolve, reject) => {
|
||||
response.setHeader('Access-Control-Allow-Origin', '*')
|
||||
response.setHeader('Access-Control-Allow-Headers', '*')
|
||||
resolve()
|
||||
};
|
||||
@ -7,7 +7,7 @@ import {Logger} from '../util/logger.js';
|
||||
const log = new Logger('cerc:keycloak-userreg:mw:register');
|
||||
|
||||
export const RegisterMW : MiddlewareFunction = async (request, response, data, resolve, reject) =>{
|
||||
if (!data?.json?.username) {
|
||||
if (!data?.json?.email && !data?.json?.username) {
|
||||
log.error(data);
|
||||
log.error('Invalid request', request.body);
|
||||
reject(400);
|
||||
@ -15,8 +15,9 @@ export const RegisterMW : MiddlewareFunction = async (request, response, data, r
|
||||
}
|
||||
|
||||
const userRequest = {
|
||||
username: data.json.username,
|
||||
enabled: true,
|
||||
username: data.json.username || data.json.email,
|
||||
email: data.json.email,
|
||||
enabled: Config.CREATE_ENABLED,
|
||||
groups: Config.TARGET_GROUPS,
|
||||
realm: Config.TARGET_REALM
|
||||
};
|
||||
@ -31,6 +32,7 @@ export const RegisterMW : MiddlewareFunction = async (request, response, data, r
|
||||
log.debug(user);
|
||||
response.send({
|
||||
'username': user?.username,
|
||||
'email': user?.email,
|
||||
'api-key': (user?.attributes as any)['api-key']
|
||||
});
|
||||
resolve();
|
||||
|
||||
@ -2,6 +2,7 @@ import * as http from 'http';
|
||||
import {HttpMethod, HTTPRequestHandler} from 'http-request-handler';
|
||||
|
||||
import {Config} from './config.js';
|
||||
import {CorsMW} from "./middleware/cors.js";
|
||||
import {JsonParserMW} from './middleware/json_parser.js';
|
||||
import {RegisterMW} from './middleware/register.js';
|
||||
import {Logger} from './util/logger.js';
|
||||
@ -9,9 +10,13 @@ import {Logger} from './util/logger.js';
|
||||
const log = new Logger('cerc:keycloak-userreg');
|
||||
const handler = new HTTPRequestHandler();
|
||||
|
||||
handler.on(HttpMethod.HTTP_POST, '/register', [JsonParserMW, RegisterMW], async (request, response) => {
|
||||
handler.on(HttpMethod.HTTP_OPTIONS, '/register', [CorsMW], async (request, response) => {
|
||||
response.ok()
|
||||
});
|
||||
|
||||
handler.on(HttpMethod.HTTP_POST, '/register', [CorsMW, JsonParserMW, RegisterMW], async (request, response) => {
|
||||
// If nothing has answered by now, return an error.
|
||||
response.error(500);
|
||||
});
|
||||
|
||||
http.createServer(handler.getListener()).listen(Config.LISTEN_PORT);
|
||||
http.createServer(handler.getListener()).listen(Config.LISTEN_PORT, '0.0.0.0');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user