26-login-route #28
@@ -16,4 +16,4 @@ AUTH_REVOCATION_URI=
|
|||||||
|
|
||||||
# SERVER SETTINGS
|
# SERVER SETTINGS
|
||||||
SERVER_PORT=3000
|
SERVER_PORT=3000
|
||||||
|
CLIENT_URL= # This is whatever URL the client web app is served on
|
||||||
@@ -61,7 +61,7 @@ passport.use(new OpenIDConnectStrategy({
|
|||||||
|
|
||||||
router.get('/login', (req, res, next) => {
|
router.get('/login', (req, res, next) => {
|
||||||
// Store redirect target in session if provided
|
// Store redirect target in session if provided
|
||||||
req.session.redirectTo = req.query.redirect || '/';
|
req.session.redirectTo = req.query.redirect;
|
||||||
|
|
||||||
next();
|
next();
|
||||||
}, passport.authenticate('openidconnect'));
|
}, passport.authenticate('openidconnect'));
|
||||||
@@ -69,7 +69,7 @@ router.get('/login', (req, res, next) => {
|
|||||||
// router.get('/callback', (req, res, next) => {
|
// router.get('/callback', (req, res, next) => {
|
||||||
// passport.authenticate('openidconnect', {
|
// passport.authenticate('openidconnect', {
|
||||||
// successRedirect: req.session.redirectTo,
|
// successRedirect: req.session.redirectTo,
|
||||||
// failureRedirect: process.env.BASE_URL
|
// failureRedirect: process.env.CLIENT_URL
|
||||||
// })
|
// })
|
||||||
// });
|
// });
|
||||||
|
|
||||||
@@ -77,27 +77,27 @@ router.get('/callback', (req, res, next) => {
|
|||||||
const redirectURI = req.session.redirectTo;
|
const redirectURI = req.session.redirectTo;
|
||||||
passport.authenticate('openidconnect', (err, user) => {
|
passport.authenticate('openidconnect', (err, user) => {
|
||||||
if (err) return next(err);
|
if (err) return next(err);
|
||||||
if (!user) return res.redirect(process.env.BASE_URL);
|
if (!user) return res.redirect(process.env.CLIENT_URL);
|
||||||
|
|
||||||
req.logIn(user, err => {
|
req.logIn(user, err => {
|
||||||
if (err) return next(err);
|
if (err) return next(err);
|
||||||
|
|
||||||
// Use redirect saved from session
|
// Use redirect saved from session
|
||||||
const redirectTo = redirectURI || process.env.BASE_URL;
|
const redirectTo = redirectURI || process.env.CLIENT_URL;
|
||||||
delete req.session.redirectTo;
|
delete req.session.redirectTo;
|
||||||
return res.redirect(redirectTo);
|
return res.redirect(redirectTo);
|
||||||
});
|
});
|
||||||
})(req, res, next);
|
})(req, res, next);
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/logout', function (req, res, next) {
|
router.get('/logout', function (req, res, next) {
|
||||||
req.logout(function (err) {
|
req.logout(function (err) {
|
||||||
if (err) { return next(err); }
|
if (err) { return next(err); }
|
||||||
var params = {
|
var params = {
|
||||||
client_id: process.env.AUTH_CLIENT_ID,
|
client_id: process.env.AUTH_CLIENT_ID,
|
||||||
returnTo: process.env.BASE_URL
|
returnTo: process.env.CLIENT_URL
|
||||||
};
|
};
|
||||||
res.redirect(process.env.AUTH_DOMAIN + '/v2/logout?' + querystring.stringify(params));
|
res.redirect(process.env.AUTH_END_SESSION_URI + '?' + querystring.stringify(params));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# SITE SETTINGS
|
# SITE SETTINGS
|
||||||
BASE_URL=
|
VITE_APIHOST=
|
||||||
|
|||||||
@@ -27,12 +27,13 @@ const userStore = useUserStore();
|
|||||||
const APIHOST = import.meta.env.VITE_APIHOST;
|
const APIHOST = import.meta.env.VITE_APIHOST;
|
||||||
|
|
||||||
async function logout() {
|
async function logout() {
|
||||||
await fetch(`${APIHOST}/logout`, {
|
// await fetch(`${APIHOST}/logout`, {
|
||||||
method: 'POST',
|
// method: 'GET',
|
||||||
credentials: 'include',
|
// credentials: 'include',
|
||||||
});
|
// });
|
||||||
|
|
||||||
userStore.user = null;
|
userStore.user = null;
|
||||||
|
window.location.href = APIHOST + "/logout";
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatDate(dateStr) {
|
function formatDate(dateStr) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useUserStore } from '@/stores/user'
|
|||||||
import { createRouter, createWebHistory } from 'vue-router'
|
import { createRouter, createWebHistory } from 'vue-router'
|
||||||
|
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHistory(import.meta.env.BASE_URL),
|
history: createWebHistory(),
|
||||||
routes: [
|
routes: [
|
||||||
// PUBLIC
|
// PUBLIC
|
||||||
{ path: '/join', component: () => import('@/pages/Join.vue') },
|
{ path: '/join', component: () => import('@/pages/Join.vue') },
|
||||||
|
|||||||
Reference in New Issue
Block a user