diff --git a/web/src/lib/managers/event-manager.svelte.ts b/web/src/lib/managers/event-manager.svelte.ts
index d612d4fe8c..f6ef83386f 100644
--- a/web/src/lib/managers/event-manager.svelte.ts
+++ b/web/src/lib/managers/event-manager.svelte.ts
@@ -65,6 +65,8 @@ export type Events = {
// confirmed permanently deleted from server
UserAdminDeleted: [{ id: string }];
+ SessionLocked: [];
+
SystemConfigUpdate: [SystemConfigDto];
LibraryCreate: [LibraryResponseDto];
diff --git a/web/src/lib/services/user.service.ts b/web/src/lib/services/user.service.ts
index fbb562b2c0..a1fead693f 100644
--- a/web/src/lib/services/user.service.ts
+++ b/web/src/lib/services/user.service.ts
@@ -1,8 +1,38 @@
import { eventManager } from '$lib/managers/event-manager.svelte';
import { handleError } from '$lib/utils/handle-error';
import { getFormatter } from '$lib/utils/i18n';
-import { changePassword, resetPinCode, type ChangePasswordDto, type PinCodeResetDto } from '@immich/sdk';
-import { toastManager } from '@immich/ui';
+import {
+ changePassword,
+ lockAuthSession,
+ resetPinCode,
+ type ChangePasswordDto,
+ type PinCodeResetDto,
+} from '@immich/sdk';
+import { toastManager, type ActionItem } from '@immich/ui';
+import { mdiLockOutline } from '@mdi/js';
+import type { MessageFormatter } from 'svelte-i18n';
+
+export const getUserActions = ($t: MessageFormatter) => {
+ const LockSession: ActionItem = {
+ title: $t('lock'),
+ color: 'primary',
+ icon: mdiLockOutline,
+ onAction: () => handleLockSession(),
+ };
+
+ return { LockSession };
+};
+
+const handleLockSession = async () => {
+ const $t = await getFormatter();
+
+ try {
+ await lockAuthSession();
+ eventManager.emit('SessionLocked');
+ } catch (error) {
+ handleError(error, $t('errors.something_went_wrong'));
+ }
+};
export const handleResetPinCode = async (dto: PinCodeResetDto) => {
const $t = await getFormatter();
diff --git a/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte
index 43d05f6265..931c19341b 100644
--- a/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte
+++ b/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte
@@ -1,6 +1,7 @@
-
- {#snippet buttons()}
-
- {/snippet}
+
+