diff --git a/src/main/kotlin/fr/dcproject/component/article/ArticleAccessControl.kt b/src/main/kotlin/fr/dcproject/component/article/ArticleAccessControl.kt index 90604a0..31a5ed3 100644 --- a/src/main/kotlin/fr/dcproject/component/article/ArticleAccessControl.kt +++ b/src/main/kotlin/fr/dcproject/component/article/ArticleAccessControl.kt @@ -37,7 +37,7 @@ class ArticleAccessControl(private val articleRepo: ArticleRepository) : AccessC if (subject.createdBy.id == citizen.id) { /* The creator must be the same of the creator of preview version of article */ val lastVersionId = articleRepo - .findVersionsByVersionId(1, 1, subject.versionId) + .findSiblingVersions(1, 1, subject) .result .firstOrNull()?.createdBy?.id diff --git a/src/main/kotlin/fr/dcproject/component/article/database/ArticleRepository.kt b/src/main/kotlin/fr/dcproject/component/article/database/ArticleRepository.kt index 37d54eb..4f78cb3 100644 --- a/src/main/kotlin/fr/dcproject/component/article/database/ArticleRepository.kt +++ b/src/main/kotlin/fr/dcproject/component/article/database/ArticleRepository.kt @@ -1,5 +1,6 @@ package fr.dcproject.component.article.database +import fr.dcproject.common.entity.VersionableId import fr.postgresjson.connexion.Paginated import fr.postgresjson.connexion.Requester import fr.postgresjson.entity.Parameter @@ -19,10 +20,10 @@ class ArticleRepository(override var requester: Requester) : RepositoryI { .select(page, limit, "id" to id) } - fun findVersionsByVersionId(page: Int = 1, limit: Int = 50, versionId: UUID): Paginated { + fun findSiblingVersions(page: Int = 1, limit: Int = 50, article: A): Paginated where A : VersionableId, A : ArticleI { return requester .getFunction("find_articles_versions_by_version_id") - .select(page, limit, "version_id" to versionId) + .select(page, limit, "version_id" to article.versionId) } fun find( diff --git a/src/test/kotlin/unit/security/Article Access Control.kt b/src/test/kotlin/unit/security/Article Access Control.kt index bddb1d0..9f9389b 100644 --- a/src/test/kotlin/unit/security/Article Access Control.kt +++ b/src/test/kotlin/unit/security/Article Access Control.kt @@ -4,6 +4,7 @@ import fr.dcproject.common.security.AccessDecision.DENIED import fr.dcproject.common.security.AccessDecision.GRANTED import fr.dcproject.component.article.ArticleAccessControl import fr.dcproject.component.article.database.ArticleForListing +import fr.dcproject.component.article.database.ArticleForUpdate import fr.dcproject.component.article.database.ArticleForView import fr.dcproject.component.auth.database.User import fr.dcproject.component.auth.database.UserCreator @@ -48,7 +49,7 @@ internal class `Article Access Control` { private fun getRepo(article: ArticleForListing): ArticleRepo { return mockk { every { find(1, 1, any()) } returns Paginated(listOf(article), 0, 1, 1) - every { findVersionsByVersionId(1, 1, any()) } returns Paginated(listOf(article), 0, 1, 1) + every { findSiblingVersions(1, 1, any()) } returns Paginated(listOf(article), 0, 1, 1) } }