diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 5cf31e5..e855cb0 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -133,7 +133,8 @@ jobs: - name: verify kubernetes access run: | kubectl config current-context - kubectl cluster-info + kubectl get deployment/backend -n 22012-job-queue-manager + kubectl get deployment/frontend -n 22012-job-queue-manager - name: rollout backend and frontend deployments run: | diff --git a/backend/app/controllers/cas_controller.ts b/backend/app/controllers/cas_controller.ts index ff4e39f..0537050 100644 --- a/backend/app/controllers/cas_controller.ts +++ b/backend/app/controllers/cas_controller.ts @@ -175,7 +175,8 @@ export default class CasController { } // Redirect to CAS logout — ends the university-wide SSO session - const logoutUrl = this.casService.getLogoutUrl() + const frontendUrl = env.get('FRONTEND_URL', 'https://webcatmaxxers.discovery.cs.vt.edu') + const logoutUrl = this.casService.getLogoutUrl(`${frontendUrl}/login`) return response.redirect(logoutUrl) } } diff --git a/backend/app/services/cas_service.ts b/backend/app/services/cas_service.ts index 444b114..21c6fc5 100644 --- a/backend/app/services/cas_service.ts +++ b/backend/app/services/cas_service.ts @@ -68,8 +68,12 @@ export default class CasService { * Build the CAS logout redirect URL. * Sending the user here ends their CAS session university-wide. */ - getLogoutUrl(): string { - const params = new URLSearchParams({ service: this.serviceUrl }) + getLogoutUrl(redirectUrl?: string): string { + const params = new URLSearchParams({ + service: + redirectUrl ?? + `${env.get('FRONTEND_URL', 'https://webcatmaxxers.discovery.cs.vt.edu')}/login`, + }) return `${this.casBaseUrl}/logout?${params.toString()}` } diff --git a/frontend/app/stores/auth.ts b/frontend/app/stores/auth.ts index ae2e3fe..539a659 100644 --- a/frontend/app/stores/auth.ts +++ b/frontend/app/stores/auth.ts @@ -128,7 +128,12 @@ export const useAuthStore = defineStore( } } clearAuth(); - await navigateTo("/login"); + + if (import.meta.client) { + window.location.assign(`${config.public.apiBase}/api/auth/cas/logout`); + } else { + await navigateTo("/login"); + } } return {