mirror of
https://github.com/danbulant/Portfolio
synced 2026-05-24 12:35:31 +00:00
feat: massive layout refactor, redirect when cookie is not set
This commit is contained in:
parent
546a0047c0
commit
4040fa8bcb
19 changed files with 41 additions and 20 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import axios, { type AxiosProgressEvent } from 'axios';
|
||||
import type { CandidateData, CandidateLogin } from 'src/stores/candidate';
|
||||
import type { SubmissionProgress } from 'src/stores/portfolio';
|
||||
import type { CandidateData, CandidateLogin } from '$lib/stores/candidate';
|
||||
import type { SubmissionProgress } from '$lib/stores/portfolio';
|
||||
import { API_URL, errorHandler } from '.';
|
||||
|
||||
export async function apiWhoami(): Promise<string> {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import type { AxiosProgressEvent } from "axios";
|
||||
import { fetchSubmProgress } from "../../../stores/portfolio";
|
||||
import { apiUploadCoverLetter } from "../../../@api/candidate";
|
||||
import { fetchSubmProgress } from "$lib/stores/portfolio";
|
||||
import { apiUploadCoverLetter } from "$lib/@api/candidate";
|
||||
import DashboardUploadCard from "./DashboardUploadCard.svelte";
|
||||
|
||||
const onFileDrop = async (file: File) => {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import FileType from './FileType.svelte';
|
||||
import FileDrop from 'filedrop-svelte';
|
||||
import { submissionProgress, UploadStatus, type Status } from '../../../stores/portfolio';
|
||||
import { submissionProgress, UploadStatus, type Status } from '$lib/stores/portfolio';
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
import StatusNotification from './StatusNotification.svelte';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import type { AxiosProgressEvent } from "axios";
|
||||
import { fetchSubmProgress } from "../../../stores/portfolio";
|
||||
import { apiUploadPortfolioLetter } from "../../../@api/candidate";
|
||||
import { fetchSubmProgress } from "$lib/stores/portfolio";
|
||||
import { apiUploadPortfolioLetter } from "../../@api/candidate";
|
||||
import DashboardUploadCard from "./DashboardUploadCard.svelte";
|
||||
|
||||
const onFileDrop = async (file: File) => {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import type { AxiosProgressEvent } from "axios";
|
||||
import { fetchSubmProgress } from "../../../stores/portfolio";
|
||||
import { apiUploadPortfolioZip } from "../../../@api/candidate";
|
||||
import { fetchSubmProgress } from "$lib/stores/portfolio";
|
||||
import { apiUploadPortfolioZip } from "$lib/@api/candidate";
|
||||
import DashboardUploadCard from "./DashboardUploadCard.svelte";
|
||||
|
||||
const onFileDrop = async (file: File) => {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import type { Status } from "../../../stores/portfolio";
|
||||
import type { Status } from "$lib/stores/portfolio";
|
||||
|
||||
|
||||
export let status: Status;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
import type { LayoutServerLoad } from './$types';
|
||||
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
|
||||
export const load: LayoutServerLoad = ({ cookies }) => {
|
||||
const isAuthenticated = cookies.get('id');
|
||||
if (!isAuthenticated) {
|
||||
throw redirect(302, '/admin/auth/login');
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
import type { LayoutServerLoad } from './$types';
|
||||
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
|
||||
export const load: LayoutServerLoad = ({ cookies }) => {
|
||||
const isAuthenticated = cookies.get('id');
|
||||
if (!isAuthenticated) {
|
||||
throw redirect(302, '/login');
|
||||
}
|
||||
};
|
||||
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
import DashboardUploadCard from '$lib/components/dashboard/DashboardUploadCard.svelte';
|
||||
import DashboardInfoCard from '$lib/components/dashboard/DashboardInfoCard.svelte';
|
||||
import { candidateData, fetchDetails } from '../../stores/candidate';
|
||||
import { candidateData, fetchDetails } from '$lib/stores/candidate';
|
||||
import CoverLetterUploadCard from '$lib/components/dashboard/CoverLetterUploadCard.svelte';
|
||||
import PortfolioLetterUploadCard from '$lib/components/dashboard/PortfolioLetterUploadCard.svelte';
|
||||
import PortfolioZipUploadCard from '$lib/components/dashboard/PortfolioZipUploadCard.svelte';
|
||||
import { fetchSubmProgress } from '../../stores/portfolio';
|
||||
import { fetchSubmProgress } from '$lib/stores/portfolio';
|
||||
|
||||
|
||||
let fullName = "";
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
import IdField from '$lib/components/textfield/IdField.svelte';
|
||||
import TelephoneField from '$lib/components/textfield/TelephoneField.svelte';
|
||||
import TextField from '$lib/components/textfield/TextField.svelte';
|
||||
import { fillDetails, candidateData, type CandidateData } from '../../stores/candidate';
|
||||
import { fillDetails, candidateData, type CandidateData } from '$lib/stores/candidate';
|
||||
|
||||
import { createForm } from 'svelte-forms-lib';
|
||||
import * as yup from 'yup';
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
import woman from '$lib/assets/woman.png';
|
||||
import { onMount } from 'svelte';
|
||||
import { page } from '$app/stores';
|
||||
import { login } from '../../../stores/candidate';
|
||||
import { login } from '$lib/stores/candidate';
|
||||
import { goto } from '$app/navigation';
|
||||
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
/** @type {import('./$types').PageLoad} */
|
||||
export const load = async ({ url }) => {
|
||||
return {
|
||||
url: url.pathname
|
||||
};
|
||||
};
|
||||
7
frontend/src/routes/+layout.ts
Normal file
7
frontend/src/routes/+layout.ts
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import type { LayoutLoad } from './$types';
|
||||
|
||||
export const load: LayoutLoad = async ({ url }) => {
|
||||
return {
|
||||
url: url.pathname
|
||||
};
|
||||
};
|
||||
Loading…
Reference in a new issue