Merge branch 'main' into Training-Report

This commit is contained in:
2025-11-22 13:08:30 -05:00
5 changed files with 41 additions and 16 deletions

19
api/.env.example Normal file
View File

@@ -0,0 +1,19 @@
# DATABASE SETTINGS
DB_HOST=
DB_PORT=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
# AUTH SETTINGS
AUTH_DOMAIN=
AUTH_ISSUER=
AUTH_CLIENT_ID=
AUTH_CLIENT_SECRET=
AUTH_REDIRECT_URI=
AUTH_REVOCATION_URI=
# AUTH_MODE=mock #uncomment this to bypass authentik
# SERVER SETTINGS
SERVER_PORT=3000

View File

@@ -12,9 +12,9 @@ const querystring = require('querystring');
passport.use(new OpenIDConnectStrategy({
issuer: process.env.AUTH_ISSUER,
authorizationURL: 'https://sso.iceberg-gaming.com/application/o/authorize/',
tokenURL: 'https://sso.iceberg-gaming.com/application/o/token/',
userInfoURL: 'https://sso.iceberg-gaming.com/application/o/userinfo/',
authorizationURL: process.env.AUTH_DOMAIN +'/authorize/',
tokenURL: process.env.AUTH_DOMAIN +'/token/',
userInfoURL: process.env.AUTH_DOMAIN +'/userinfo/',
clientID: process.env.AUTH_CLIENT_ID,
clientSecret: process.env.AUTH_CLIENT_SECRET,
callbackURL: process.env.AUTH_REDIRECT_URI,
@@ -69,7 +69,7 @@ router.get('/login', (req, res, next) => {
// router.get('/callback', (req, res, next) => {
// passport.authenticate('openidconnect', {
// successRedirect: req.session.redirectTo,
// failureRedirect: 'https://aj17thdev.nexuszone.net/'
// failureRedirect: process.env.BASE_URL
// })
// });
@@ -77,13 +77,13 @@ router.get('/callback', (req, res, next) => {
const redirectURI = req.session.redirectTo;
passport.authenticate('openidconnect', (err, user) => {
if (err) return next(err);
if (!user) return res.redirect('https://aj17thdev.nexuszone.net/');
if (!user) return res.redirect(process.env.BASE_URL);
req.logIn(user, err => {
if (err) return next(err);
// Use redirect saved from session
const redirectTo = redirectURI || 'https://aj17thdev.nexuszone.net/';
const redirectTo = redirectURI || process.env.BASE_URL;
delete req.session.redirectTo;
return res.redirect(redirectTo);
});
@@ -95,7 +95,7 @@ router.post('/logout', function (req, res, next) {
if (err) { return next(err); }
var params = {
client_id: process.env.AUTH_CLIENT_ID,
returnTo: 'https://aj17thdev.nexuszone.net/'
returnTo: process.env.BASE_URL
};
res.redirect(process.env.AUTH_DOMAIN + '/v2/logout?' + querystring.stringify(params));
});

2
ui/.env.example Normal file
View File

@@ -0,0 +1,2 @@
# SITE SETTINGS
BASE_URL=

View File

@@ -24,9 +24,10 @@ const userStore = useUserStore();
// console.log(data);
// userStore.user = data;
// });
const APIHOST = import.meta.env.VITE_APIHOST;
async function logout() {
await fetch(`${import.meta.env.VITE_APIHOST}/logout`, {
await fetch(`${APIHOST}/logout`, {
method: 'POST',
credentials: 'include',
});
@@ -112,7 +113,7 @@ function formatDate(dateStr) {
</DropdownMenuContent>
</DropdownMenu>
<a v-else href="https://aj17thdevapi.nexuszone.net/login">Login</a>
<a v-else :href="APIHOST+'/login'">Login</a>
</div>
</div>
<Separator></Separator>

View File

@@ -40,6 +40,9 @@ const router = createRouter({
]
})
const addr = import.meta.env.VITE_APIHOST;
router.beforeEach(async (to) => {
const user = useUserStore()
@@ -48,13 +51,13 @@ router.beforeEach(async (to) => {
await user.loadUser();
}
// // Not logged in
// if (to.meta.requiresAuth && !user.isLoggedIn) {
// // Redirect back to original page after login
// const redirectUrl = encodeURIComponent(window.location.origin + to.fullPath)
// window.location.href = `https://aj17thdevapi.nexuszone.net/login?redirect=${redirectUrl}`
// return false // Prevent Vue Router from continuing
// }
// Not logged in
if (to.meta.requiresAuth && !user.isLoggedIn) {
// Redirect back to original page after login
const redirectUrl = encodeURIComponent(window.location.origin + to.fullPath)
window.location.href = `${addr}/login?redirect=${redirectUrl}`
return false // Prevent Vue Router from continuing
}
// // Must be a member