diff --git a/server/src/config.ts b/server/src/config.ts index ce97e0c2d09de..b79643c5015b0 100644 --- a/server/src/config.ts +++ b/server/src/config.ts @@ -3,13 +3,13 @@ import { CronExpression } from '@nestjs/schedule'; import { Request, Response } from 'express'; import Joi, { Root } from 'joi'; import { CLS_ID, ClsModuleOptions } from 'nestjs-cls'; -import { ImmichHeader } from 'src/dtos/auth.dto'; import { AudioCodec, Colorspace, CQMode, ImageFormat, ImmichEnvironment, + ImmichHeader, LogLevel, ToneMapping, TranscodeHWAccel, diff --git a/server/src/controllers/asset-media.controller.ts b/server/src/controllers/asset-media.controller.ts index b2d3933be4cbc..56e793975a641 100644 --- a/server/src/controllers/asset-media.controller.ts +++ b/server/src/controllers/asset-media.controller.ts @@ -32,8 +32,8 @@ import { CheckExistingAssetsDto, UploadFieldName, } from 'src/dtos/asset-media.dto'; -import { AuthDto, ImmichHeader } from 'src/dtos/auth.dto'; -import { RouteKey } from 'src/enum'; +import { AuthDto } from 'src/dtos/auth.dto'; +import { ImmichHeader, RouteKey } from 'src/enum'; import { ILoggerRepository } from 'src/interfaces/logger.interface'; import { AssetUploadInterceptor } from 'src/middleware/asset-upload.interceptor'; import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard'; diff --git a/server/src/controllers/auth.controller.ts b/server/src/controllers/auth.controller.ts index 04250f530044f..92fa59f6bf459 100644 --- a/server/src/controllers/auth.controller.ts +++ b/server/src/controllers/auth.controller.ts @@ -4,7 +4,6 @@ import { Request, Response } from 'express'; import { AuthDto, ChangePasswordDto, - ImmichCookie, LoginCredentialDto, LoginResponseDto, LogoutResponseDto, @@ -12,7 +11,7 @@ import { ValidateAccessTokenResponseDto, } from 'src/dtos/auth.dto'; import { UserAdminResponseDto } from 'src/dtos/user.dto'; -import { AuthType } from 'src/enum'; +import { AuthType, ImmichCookie } from 'src/enum'; import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard'; import { AuthService, LoginDetails } from 'src/services/auth.service'; import { respondWithCookie, respondWithoutCookie } from 'src/utils/response'; diff --git a/server/src/controllers/oauth.controller.ts b/server/src/controllers/oauth.controller.ts index 4e626b10f01b4..b5b94030f2e2a 100644 --- a/server/src/controllers/oauth.controller.ts +++ b/server/src/controllers/oauth.controller.ts @@ -3,14 +3,13 @@ import { ApiTags } from '@nestjs/swagger'; import { Request, Response } from 'express'; import { AuthDto, - ImmichCookie, LoginResponseDto, OAuthAuthorizeResponseDto, OAuthCallbackDto, OAuthConfigDto, } from 'src/dtos/auth.dto'; import { UserAdminResponseDto } from 'src/dtos/user.dto'; -import { AuthType } from 'src/enum'; +import { AuthType, ImmichCookie } from 'src/enum'; import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard'; import { AuthService, LoginDetails } from 'src/services/auth.service'; import { respondWithCookie } from 'src/utils/response'; diff --git a/server/src/controllers/shared-link.controller.ts b/server/src/controllers/shared-link.controller.ts index 065e578ec562c..59f81068d8dac 100644 --- a/server/src/controllers/shared-link.controller.ts +++ b/server/src/controllers/shared-link.controller.ts @@ -3,14 +3,14 @@ import { ApiTags } from '@nestjs/swagger'; import { Request, Response } from 'express'; import { AssetIdsResponseDto } from 'src/dtos/asset-ids.response.dto'; import { AssetIdsDto } from 'src/dtos/asset.dto'; -import { AuthDto, ImmichCookie } from 'src/dtos/auth.dto'; +import { AuthDto } from 'src/dtos/auth.dto'; import { SharedLinkCreateDto, SharedLinkEditDto, SharedLinkPasswordDto, SharedLinkResponseDto, } from 'src/dtos/shared-link.dto'; -import { Permission } from 'src/enum'; +import { ImmichCookie, Permission } from 'src/enum'; import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard'; import { LoginDetails } from 'src/services/auth.service'; import { SharedLinkService } from 'src/services/shared-link.service'; diff --git a/server/src/dtos/auth.dto.ts b/server/src/dtos/auth.dto.ts index f2d5bd2324d28..b2bf1b8bccc86 100644 --- a/server/src/dtos/auth.dto.ts +++ b/server/src/dtos/auth.dto.ts @@ -5,30 +5,9 @@ import { APIKeyEntity } from 'src/entities/api-key.entity'; import { SessionEntity } from 'src/entities/session.entity'; import { SharedLinkEntity } from 'src/entities/shared-link.entity'; import { UserEntity } from 'src/entities/user.entity'; +import { ImmichCookie } from 'src/enum'; import { toEmail } from 'src/validation'; -export enum ImmichCookie { - ACCESS_TOKEN = 'immich_access_token', - AUTH_TYPE = 'immich_auth_type', - IS_AUTHENTICATED = 'immich_is_authenticated', - SHARED_LINK_TOKEN = 'immich_shared_link_token', -} - -export enum ImmichHeader { - API_KEY = 'x-api-key', - USER_TOKEN = 'x-immich-user-token', - SESSION_TOKEN = 'x-immich-session-token', - SHARED_LINK_KEY = 'x-immich-share-key', - CHECKSUM = 'x-immich-checksum', - CID = 'x-immich-cid', -} - -export enum ImmichQuery { - SHARED_LINK_KEY = 'key', - API_KEY = 'apiKey', - SESSION_KEY = 'sessionKey', -} - export type CookieResponse = { isSecure: boolean; values: Array<{ key: ImmichCookie; value: string }>; diff --git a/server/src/enum.ts b/server/src/enum.ts index 109e9a90b7eba..157fa0003da34 100644 --- a/server/src/enum.ts +++ b/server/src/enum.ts @@ -3,6 +3,28 @@ export enum AuthType { OAUTH = 'oauth', } +export enum ImmichCookie { + ACCESS_TOKEN = 'immich_access_token', + AUTH_TYPE = 'immich_auth_type', + IS_AUTHENTICATED = 'immich_is_authenticated', + SHARED_LINK_TOKEN = 'immich_shared_link_token', +} + +export enum ImmichHeader { + API_KEY = 'x-api-key', + USER_TOKEN = 'x-immich-user-token', + SESSION_TOKEN = 'x-immich-session-token', + SHARED_LINK_KEY = 'x-immich-share-key', + CHECKSUM = 'x-immich-checksum', + CID = 'x-immich-cid', +} + +export enum ImmichQuery { + SHARED_LINK_KEY = 'key', + API_KEY = 'apiKey', + SESSION_KEY = 'sessionKey', +} + export enum AssetType { IMAGE = 'IMAGE', VIDEO = 'VIDEO', diff --git a/server/src/middleware/asset-upload.interceptor.ts b/server/src/middleware/asset-upload.interceptor.ts index 0f38c34259561..bc403ee5624eb 100644 --- a/server/src/middleware/asset-upload.interceptor.ts +++ b/server/src/middleware/asset-upload.interceptor.ts @@ -2,7 +2,7 @@ import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nes import { Response } from 'express'; import { of } from 'rxjs'; import { AssetMediaResponseDto, AssetMediaStatus } from 'src/dtos/asset-media-response.dto'; -import { ImmichHeader } from 'src/dtos/auth.dto'; +import { ImmichHeader } from 'src/enum'; import { AuthenticatedRequest } from 'src/middleware/auth.guard'; import { AssetMediaService } from 'src/services/asset-media.service'; import { fromMaybeArray } from 'src/utils/request'; diff --git a/server/src/middleware/auth.guard.ts b/server/src/middleware/auth.guard.ts index 7bc4f41b21c8f..2eaf4114758d7 100644 --- a/server/src/middleware/auth.guard.ts +++ b/server/src/middleware/auth.guard.ts @@ -10,8 +10,8 @@ import { import { Reflector } from '@nestjs/core'; import { ApiBearerAuth, ApiCookieAuth, ApiOkResponse, ApiQuery, ApiSecurity } from '@nestjs/swagger'; import { Request } from 'express'; -import { AuthDto, ImmichQuery } from 'src/dtos/auth.dto'; -import { MetadataKey, Permission } from 'src/enum'; +import { AuthDto } from 'src/dtos/auth.dto'; +import { ImmichQuery, MetadataKey, Permission } from 'src/enum'; import { ILoggerRepository } from 'src/interfaces/logger.interface'; import { AuthService, LoginDetails } from 'src/services/auth.service'; import { UAParser } from 'ua-parser-js'; diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index 8a86ad16d18b3..00324c909c5df 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -8,9 +8,6 @@ import { OnEvent } from 'src/decorators'; import { AuthDto, ChangePasswordDto, - ImmichCookie, - ImmichHeader, - ImmichQuery, LoginCredentialDto, LogoutResponseDto, OAuthAuthorizeResponseDto, @@ -21,7 +18,7 @@ import { } from 'src/dtos/auth.dto'; import { UserAdminResponseDto, mapUserAdmin } from 'src/dtos/user.dto'; import { UserEntity } from 'src/entities/user.entity'; -import { AuthType, Permission } from 'src/enum'; +import { AuthType, ImmichCookie, ImmichHeader, ImmichQuery, Permission } from 'src/enum'; import { OAuthProfile } from 'src/interfaces/oauth.interface'; import { BaseService } from 'src/services/base.service'; import { isGranted } from 'src/utils/access'; diff --git a/server/src/utils/misc.ts b/server/src/utils/misc.ts index e191170e0dbe2..6e435e68a8dc7 100644 --- a/server/src/utils/misc.ts +++ b/server/src/utils/misc.ts @@ -12,8 +12,7 @@ import { writeFileSync } from 'node:fs'; import path from 'node:path'; import { SystemConfig } from 'src/config'; import { CLIP_MODEL_INFO, serverVersion } from 'src/constants'; -import { ImmichCookie, ImmichHeader } from 'src/dtos/auth.dto'; -import { MetadataKey } from 'src/enum'; +import { ImmichCookie, ImmichHeader, MetadataKey } from 'src/enum'; import { ILoggerRepository } from 'src/interfaces/logger.interface'; export const getExternalDomain = (server: SystemConfig['server'], port: number) => diff --git a/server/src/utils/response.ts b/server/src/utils/response.ts index f318ca33009e3..679d947afb7d6 100644 --- a/server/src/utils/response.ts +++ b/server/src/utils/response.ts @@ -1,6 +1,7 @@ import { CookieOptions, Response } from 'express'; import { Duration } from 'luxon'; -import { CookieResponse, ImmichCookie } from 'src/dtos/auth.dto'; +import { CookieResponse } from 'src/dtos/auth.dto'; +import { ImmichCookie } from 'src/enum'; export const respondWithCookie = (res: Response, body: T, { isSecure, values }: CookieResponse) => { const defaults: CookieOptions = {