Skip to content

Commit b174f73

Browse files
committed
PIN-4557-fix: Fix escaping for mongodb regex filters
1 parent ecd27ce commit b174f73

File tree

2 files changed

+2
-7
lines changed

2 files changed

+2
-7
lines changed

src/main/scala/it/pagopa/interop/purposeprocess/common/readmodel/ReadModelPurposeQueries.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ object ReadModelPurposeQueries extends ReadModelQuery {
143143
val eServicesIdsFilter = mapToVarArgs(eServicesIds.map(Filters.eq("data.eserviceId", _)))(Filters.or)
144144
val consumersIdsFilter = mapToVarArgs(consumersIds.map(Filters.eq("data.consumerId", _)))(Filters.or)
145145
val titleFilter =
146-
if (exactMatchOnTitle) title.map(n => safeRegex("data.title", s"^$n$$", "i"))
147-
else title.map(safeRegex("data.title", _, "i"))
146+
if (exactMatchOnTitle) title.map(n => Filters.regex("data.title", s"^${escape(n)}$$", "i"))
147+
else title.map(n => Filters.regex("data.title", escape(n), "i"))
148148
mapToVarArgs(
149149
eServicesIdsFilter.toList ++ consumersIdsFilter.toList ++ statesFilter.toList ++ titleFilter.toList // :+ permissionFilter
150150
)(Filters.and).getOrElse(Filters.empty())
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
package it.pagopa.interop.purposeprocess.common.readmodel
22

3-
import org.mongodb.scala.bson.conversions.Bson
4-
import org.mongodb.scala.model.Filters
5-
63
trait ReadModelQuery {
74
def mapToVarArgs[A, B](l: Seq[A])(f: Seq[A] => B): Option[B] = Option.when(l.nonEmpty)(f(l))
85

96
def escape(str: String): String = str.replaceAll("([.*+?^${}()|\\[\\]\\\\])", "\\\\$1")
10-
def safeRegex(fieldName: String, pattern: String, options: String): Bson =
11-
Filters.regex(fieldName, escape(pattern), options)
127
}

0 commit comments

Comments
 (0)