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

43 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-03-17 18:27:13 +00:00
import crypto from 'crypto';
2023-03-14 11:00:40 +00:00
import { auth, ConfigParams } from 'express-openid-connect';
import ChatServer from './index';
2023-03-17 18:27:13 +00:00
const secret = process.env.AUTH_SECRET || crypto.randomBytes(32).toString('hex');
2023-03-14 11:00:40 +00:00
const config: ConfigParams = {
authRequired: false,
auth0Logout: false,
2023-03-17 18:27:13 +00:00
secret,
2023-03-14 11:00:40 +00:00
baseURL: process.env.PUBLIC_URL,
clientID: process.env.AUTH0_CLIENT_ID,
issuerBaseURL: process.env.AUTH0_ISSUER,
routes: {
login: false,
logout: false,
},
};
export function configureAuth0(context: ChatServer) {
context.app.use(auth(config));
context.app.get('/chatapi/login', (req, res) => {
res.oidc.login({
returnTo: process.env.PUBLIC_URL,
authorizationParams: {
redirect_uri: process.env.PUBLIC_URL + '/chatapi/login-callback',
},
});
});
context.app.get('/chatapi/logout', (req, res) => {
res.oidc.logout({
returnTo: process.env.PUBLIC_URL,
});
});
context.app.all('/chatapi/login-callback', (req, res) => {
res.oidc.callback({
redirectUri: process.env.PUBLIC_URL!,
})
});
}