mirror of
https://github.com/immich-app/immich.git
synced 2025-06-06 21:38:26 +02:00
feat: lock auth session (#18322)
This commit is contained in:
parent
ecb66fdb2c
commit
c1150fe7e3
37 changed files with 765 additions and 123 deletions
open-api
|
@ -2377,7 +2377,7 @@
|
|||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/PinCodeChangeDto"
|
||||
"$ref": "#/components/schemas/PinCodeResetDto"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2470,15 +2470,40 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"/auth/pin-code/verify": {
|
||||
"/auth/session/lock": {
|
||||
"post": {
|
||||
"operationId": "verifyPinCode",
|
||||
"operationId": "lockAuthSession",
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Authentication"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/auth/session/unlock": {
|
||||
"post": {
|
||||
"operationId": "unlockAuthSession",
|
||||
"parameters": [],
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/PinCodeSetupDto"
|
||||
"$ref": "#/components/schemas/SessionUnlockDto"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -5695,6 +5720,41 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"/sessions/{id}/lock": {
|
||||
"post": {
|
||||
"operationId": "lockSession",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Sessions"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/shared-links": {
|
||||
"get": {
|
||||
"operationId": "getAllSharedLinks",
|
||||
|
@ -9327,6 +9387,9 @@
|
|||
},
|
||||
"AuthStatusResponseDto": {
|
||||
"properties": {
|
||||
"expiresAt": {
|
||||
"type": "string"
|
||||
},
|
||||
"isElevated": {
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -9335,6 +9398,9 @@
|
|||
},
|
||||
"pinCode": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"pinExpiresAt": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
@ -11096,6 +11162,7 @@
|
|||
"session.read",
|
||||
"session.update",
|
||||
"session.delete",
|
||||
"session.lock",
|
||||
"sharedLink.create",
|
||||
"sharedLink.read",
|
||||
"sharedLink.update",
|
||||
|
@ -11297,6 +11364,18 @@
|
|||
],
|
||||
"type": "object"
|
||||
},
|
||||
"PinCodeResetDto": {
|
||||
"properties": {
|
||||
"password": {
|
||||
"type": "string"
|
||||
},
|
||||
"pinCode": {
|
||||
"example": "123456",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"PinCodeSetupDto": {
|
||||
"properties": {
|
||||
"pinCode": {
|
||||
|
@ -12109,6 +12188,9 @@
|
|||
"deviceType": {
|
||||
"type": "string"
|
||||
},
|
||||
"expiresAt": {
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -12144,6 +12226,9 @@
|
|||
"deviceType": {
|
||||
"type": "string"
|
||||
},
|
||||
"expiresAt": {
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -12161,6 +12246,18 @@
|
|||
],
|
||||
"type": "object"
|
||||
},
|
||||
"SessionUnlockDto": {
|
||||
"properties": {
|
||||
"password": {
|
||||
"type": "string"
|
||||
},
|
||||
"pinCode": {
|
||||
"example": "123456",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SharedLinkCreateDto": {
|
||||
"properties": {
|
||||
"albumId": {
|
||||
|
|
|
@ -512,18 +512,28 @@ export type LogoutResponseDto = {
|
|||
redirectUri: string;
|
||||
successful: boolean;
|
||||
};
|
||||
export type PinCodeChangeDto = {
|
||||
newPinCode: string;
|
||||
export type PinCodeResetDto = {
|
||||
password?: string;
|
||||
pinCode?: string;
|
||||
};
|
||||
export type PinCodeSetupDto = {
|
||||
pinCode: string;
|
||||
};
|
||||
export type PinCodeChangeDto = {
|
||||
newPinCode: string;
|
||||
password?: string;
|
||||
pinCode?: string;
|
||||
};
|
||||
export type SessionUnlockDto = {
|
||||
password?: string;
|
||||
pinCode?: string;
|
||||
};
|
||||
export type AuthStatusResponseDto = {
|
||||
expiresAt?: string;
|
||||
isElevated: boolean;
|
||||
password: boolean;
|
||||
pinCode: boolean;
|
||||
pinExpiresAt?: string;
|
||||
};
|
||||
export type ValidateAccessTokenResponseDto = {
|
||||
authStatus: boolean;
|
||||
|
@ -1075,6 +1085,7 @@ export type SessionResponseDto = {
|
|||
current: boolean;
|
||||
deviceOS: string;
|
||||
deviceType: string;
|
||||
expiresAt?: string;
|
||||
id: string;
|
||||
updatedAt: string;
|
||||
};
|
||||
|
@ -1089,6 +1100,7 @@ export type SessionCreateResponseDto = {
|
|||
current: boolean;
|
||||
deviceOS: string;
|
||||
deviceType: string;
|
||||
expiresAt?: string;
|
||||
id: string;
|
||||
token: string;
|
||||
updatedAt: string;
|
||||
|
@ -2066,13 +2078,13 @@ export function logout(opts?: Oazapfts.RequestOpts) {
|
|||
method: "POST"
|
||||
}));
|
||||
}
|
||||
export function resetPinCode({ pinCodeChangeDto }: {
|
||||
pinCodeChangeDto: PinCodeChangeDto;
|
||||
export function resetPinCode({ pinCodeResetDto }: {
|
||||
pinCodeResetDto: PinCodeResetDto;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchText("/auth/pin-code", oazapfts.json({
|
||||
...opts,
|
||||
method: "DELETE",
|
||||
body: pinCodeChangeDto
|
||||
body: pinCodeResetDto
|
||||
})));
|
||||
}
|
||||
export function setupPinCode({ pinCodeSetupDto }: {
|
||||
|
@ -2093,13 +2105,19 @@ export function changePinCode({ pinCodeChangeDto }: {
|
|||
body: pinCodeChangeDto
|
||||
})));
|
||||
}
|
||||
export function verifyPinCode({ pinCodeSetupDto }: {
|
||||
pinCodeSetupDto: PinCodeSetupDto;
|
||||
export function lockAuthSession(opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchText("/auth/session/lock", {
|
||||
...opts,
|
||||
method: "POST"
|
||||
}));
|
||||
}
|
||||
export function unlockAuthSession({ sessionUnlockDto }: {
|
||||
sessionUnlockDto: SessionUnlockDto;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchText("/auth/pin-code/verify", oazapfts.json({
|
||||
return oazapfts.ok(oazapfts.fetchText("/auth/session/unlock", oazapfts.json({
|
||||
...opts,
|
||||
method: "POST",
|
||||
body: pinCodeSetupDto
|
||||
body: sessionUnlockDto
|
||||
})));
|
||||
}
|
||||
export function getAuthStatus(opts?: Oazapfts.RequestOpts) {
|
||||
|
@ -2952,6 +2970,14 @@ export function deleteSession({ id }: {
|
|||
method: "DELETE"
|
||||
}));
|
||||
}
|
||||
export function lockSession({ id }: {
|
||||
id: string;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchText(`/sessions/${encodeURIComponent(id)}/lock`, {
|
||||
...opts,
|
||||
method: "POST"
|
||||
}));
|
||||
}
|
||||
export function getAllSharedLinks({ albumId }: {
|
||||
albumId?: string;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
|
@ -3709,6 +3735,7 @@ export enum Permission {
|
|||
SessionRead = "session.read",
|
||||
SessionUpdate = "session.update",
|
||||
SessionDelete = "session.delete",
|
||||
SessionLock = "session.lock",
|
||||
SharedLinkCreate = "sharedLink.create",
|
||||
SharedLinkRead = "sharedLink.read",
|
||||
SharedLinkUpdate = "sharedLink.update",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue