1
0
mirror of https://github.com/immich-app/immich.git synced 2025-02-04 18:35:31 +02:00

fix(server): prevent cross-library motion photo linking, made getByChecksum library specific (#8719)

prevent cross linking
This commit is contained in:
Kevin Huang 2024-04-11 06:41:30 -07:00 committed by GitHub
parent 37eea2d353
commit ec76e5ef23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 5 additions and 5 deletions

View File

@ -146,7 +146,7 @@ export interface IAssetRepository {
): Promise<AssetEntity[]>;
getByIdsWithAllRelations(ids: string[]): Promise<AssetEntity[]>;
getByDayOfYear(ownerIds: string[], monthDay: MonthDay): Promise<AssetEntity[]>;
getByChecksum(userId: string, checksum: Buffer): Promise<AssetEntity | null>;
getByChecksum(libraryId: string, checksum: Buffer): Promise<AssetEntity | null>;
getByAlbumId(pagination: PaginationOptions, albumId: string): Paginated<AssetEntity>;
getByUserId(pagination: PaginationOptions, userId: string, options?: AssetSearchOptions): Paginated<AssetEntity>;
getById(id: string, relations?: FindOptionsRelations<AssetEntity>): Promise<AssetEntity | null>;

View File

@ -464,7 +464,7 @@ FROM
WHERE
(
(
("AssetEntity"."ownerId" = $1)
("AssetEntity"."libraryId" = $1)
AND ("AssetEntity"."checksum" = $2)
)
)

View File

@ -265,8 +265,8 @@ export class AssetRepository implements IAssetRepository {
}
@GenerateSql({ params: [DummyValue.UUID, DummyValue.BUFFER] })
getByChecksum(userId: string, checksum: Buffer): Promise<AssetEntity | null> {
return this.repository.findOne({ where: { ownerId: userId, checksum } });
getByChecksum(libraryId: string, checksum: Buffer): Promise<AssetEntity | null> {
return this.repository.findOne({ where: { libraryId, checksum } });
}
findLivePhotoMatch(options: LivePhotoSearchOptions): Promise<AssetEntity | null> {

View File

@ -405,7 +405,7 @@ export class MetadataService {
}
const checksum = this.cryptoRepository.hashSha1(video);
let motionAsset = await this.assetRepository.getByChecksum(asset.ownerId, checksum);
let motionAsset = await this.assetRepository.getByChecksum(asset.libraryId, checksum);
if (motionAsset) {
this.logger.debug(
`Asset ${asset.id}'s motion photo video with checksum ${checksum.toString(