Use cookies for client requests (#377)

* Use cookie for frontend request

* Remove api helper to use SDK

* Added error handling to status box

* Remove additional places that check for session.user

* Refactor sending password

* prettier clean up

* remove deadcode

* Move all authentication requests to the client

* refactor upload panel to only fetch assets after the upload panel disappear

* Added keydown to remove focus on title change on album viewer
This commit is contained in:
Alex 2022-07-26 12:28:07 -05:00 committed by GitHub
parent 2ebb755f00
commit 83cbf51704
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
54 changed files with 4954 additions and 4540 deletions

View file

@ -1,36 +1,23 @@
import type { GetSession, Handle } from '@sveltejs/kit';
import type { ExternalFetch, GetSession, Handle } from '@sveltejs/kit';
import * as cookie from 'cookie';
import { api } from '@api';
export const handle: Handle = async ({ event, resolve }) => {
const cookies = cookie.parse(event.request.headers.get('cookie') || '');
if (!cookies.session) {
if (!cookies['immich_is_authenticated']) {
return await resolve(event);
}
const accessToken = cookies['immich_access_token'];
try {
const { email, isAdmin, firstName, lastName, id, accessToken } = JSON.parse(cookies.session);
api.setAccessToken(accessToken);
const { status } = await api.authenticationApi.validateAccessToken();
const { data } = await api.userApi.getMyUserInfo();
event.locals.user = data;
if (status === 201) {
event.locals.user = {
id,
accessToken,
firstName,
lastName,
isAdmin,
email
};
}
const response = await resolve(event);
return response;
return await resolve(event);
} catch (error) {
console.log('Error [handle]', error);
event.locals.user = undefined;
return await resolve(event);
}
};
@ -39,13 +26,6 @@ export const getSession: GetSession = async ({ locals }) => {
if (!locals.user) return {};
return {
user: {
id: locals.user.id,
accessToken: locals.user.accessToken,
firstName: locals.user.firstName,
lastName: locals.user.lastName,
isAdmin: locals.user.isAdmin,
email: locals.user.email
}
user: locals.user
};
};