refactor: replace hardcoded Directus URLs with env variable #314
Removes hardcoded Directus base URLs across the app and replaces them with
the PUBLIC_DIRECTUS_URL environment variable, making the app environment-aware.
refactor: use exact email match filter in profile load function #312
Updated filter from filter[email][_icontains] to filter[email][_eq]
Updated comment to reflect exact match behavior
feat: fetch user profile data from Directus API #312
Created profile/+page.server.js with async load function
Receives fetch and locals from SvelteKit context
Queries Directus API filtering footguard_users by logged-in user's email
Uses _icontains filter for case-insensitive email matching
Limits results to 1 users
feat: add authentication guard to profile routes #312
Created +layout.server.js with a load function
Checks for authenticated user in locals.user
Throws a 302 redirect to /login if user is not authenticated
fix: change the loading from in the profile page #312
Here I changed the loading in the profile page so it is dynamic instead of loading one special user
refactor: replace hardcoded Directus URLs with env variable #314
Removes hardcoded Directus base URLs across the app and replaces them with
the PUBLIC_DIRECTUS_URL environment variable, making the app environment-aware.
refactor: use exact email match filter in profile load function #312
Updated filter from filter[email][_icontains] to filter[email][_eq]
Updated comment to reflect exact match behavior
feat: fetch user profile data from Directus API #312
Created profile/+page.server.js with async load function
Receives fetch and locals from SvelteKit context
Queries Directus API filtering footguard_users by logged-in user's email
Uses _icontains filter for case-insensitive email matching
Limits results to 1 users
feat: add authentication guard to profile routes #312
Created +layout.server.js with a load function
Checks for authenticated user in locals.user
Throws a 302 redirect to /login if user is not authenticated
fix: change the loading from in the profile page #312
Here I changed the loading in the profile page so it is dynamic instead of loading one special user
Merge pull request #307 from fdnd-agency/288-documentation-addbasic-authentication-tests-for-magic-link-login
288 documentation addbasic authentication tests for magic link login
fix: change the location off the group link #278
Group page link component were previously loaded inside the ProfileInfo component
- Now they load at the profile page instead
fix(tests): limit vitest to unit and integration tests only. #288
Explicitly include only unit and integration test files
to prevent vitest from picking up playwright e2e tests.
Refs: #288
ci: add vitest and playwright e2e tests to pipeline #288
- Run unit and integration tests with vitest --run- Install chromium and firefox for playwright e2e
Refs: #288
test(e2e): add protected route redirect e2e tests. #288
These tests verify that unauthenticated users are redirected
to /login when visiting protected routes like /dashboard,
/research, and the root route.
Refs: #288
Merge pull request #301 from fdnd-agency/300-bug-remove-unused-publicenv-import-and-use-urlorigin-for-magic-link
fix: remove unused publicEnv import and use url.origin for magic link…
Merge pull request #298 from fdnd-agency/288-documentation-add-basic-authentication-tests-for-magic-link-login
test(integration): add magic link API integration tests. #288
test(integration): add magic link API integration tests. #288
These tests verify the magic link request logic including
happy path with existing email, unknown email returning
success for security, and failed Directus insert handling.
Refs #288