chat-with-gpt/server/src/auth0.ts

51 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-03-14 11:00:40 +00:00
import { auth, ConfigParams } from 'express-openid-connect';
import ChatServer from './index';
2023-04-15 10:30:02 +00:00
import { config } from './config';
2023-03-14 11:00:40 +00:00
2023-04-15 10:30:02 +00:00
const auth0Config: ConfigParams = {
2023-03-14 11:00:40 +00:00
authRequired: false,
auth0Logout: false,
2023-04-15 10:30:02 +00:00
secret: config.authSecret,
baseURL: config.publicSiteURL,
clientID: config.auth0?.clientID,
issuerBaseURL: config.auth0?.issuer,
2023-03-14 11:00:40 +00:00
routes: {
login: false,
logout: false,
},
};
export function configureAuth0(context: ChatServer) {
2023-04-15 10:30:02 +00:00
if (!config.publicSiteURL) {
throw new Error('Missing public site URL in config, required for Auth0');
}
if (!config.auth0?.clientID) {
throw new Error('Missing Auth0 client ID in config');
}
if (!config.auth0?.issuer) {
throw new Error('Missing Auth0 issuer in config');
}
context.app.use(auth(auth0Config));
2023-03-14 11:00:40 +00:00
context.app.get('/chatapi/login', (req, res) => {
res.oidc.login({
2023-04-15 10:30:02 +00:00
returnTo: config.publicSiteURL,
2023-03-14 11:00:40 +00:00
authorizationParams: {
2023-04-15 10:30:02 +00:00
redirect_uri: config.publicSiteURL + '/chatapi/login-callback',
2023-03-14 11:00:40 +00:00
},
});
});
context.app.get('/chatapi/logout', (req, res) => {
res.oidc.logout({
2023-04-15 10:30:02 +00:00
returnTo: config.publicSiteURL,
2023-03-14 11:00:40 +00:00
});
});
context.app.all('/chatapi/login-callback', (req, res) => {
res.oidc.callback({
2023-04-15 10:30:02 +00:00
redirectUri: config.publicSiteURL!,
});
2023-03-14 11:00:40 +00:00
});
}