Skip to content

Commit df3a11a

Browse files
fix #2207
1 parent 977a4dd commit df3a11a

2 files changed

Lines changed: 24 additions & 12 deletions

File tree

otoroshi/app/next/plugins/cookies.scala

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package otoroshi.next.plugins
22

33
import akka.stream.Materializer
4+
import otoroshi.el.GlobalExpressionLanguage
45
import otoroshi.env.Env
56
import otoroshi.gateway.Errors
67
import otoroshi.next.plugins.api._
8+
import otoroshi.utils.TypedMap
79
import otoroshi.utils.http.WSCookieWithSameSite
810
import otoroshi.utils.syntax.implicits._
911
import play.api.libs.json._
@@ -23,10 +25,10 @@ case class AdditionalCookieOutConfig(
2325
sameSite: Option[play.api.mvc.Cookie.SameSite] = None
2426
) extends NgPluginConfig {
2527
override def json: JsValue = AdditionalCookieOutConfig.format.writes(this)
26-
def toCookie(implicit env: Env): WSCookieWithSameSite = WSCookieWithSameSite(
27-
name = name,
28-
value = value,
29-
domain = domain,
28+
def toCookie(attrs: TypedMap)(implicit env: Env): WSCookieWithSameSite = WSCookieWithSameSite(
29+
name = GlobalExpressionLanguage.apply(name, attrs, env),
30+
value = GlobalExpressionLanguage.apply(value, attrs, env),
31+
domain = domain.map(v => GlobalExpressionLanguage.apply(v, attrs, env)),
3032
path = path,
3133
maxAge = maxAge,
3234
secure = secure,
@@ -106,9 +108,9 @@ case class AdditionalCookieInConfig(
106108
value: String
107109
) extends NgPluginConfig {
108110
override def json: JsValue = AdditionalCookieInConfig.format.writes(this)
109-
def toCookie(implicit env: Env): WSCookieWithSameSite = WSCookieWithSameSite(
110-
name = name,
111-
value = value
111+
def toCookie(attrs: TypedMap)(implicit env: Env): WSCookieWithSameSite = WSCookieWithSameSite(
112+
name = GlobalExpressionLanguage.apply(name, attrs, env),
113+
value = GlobalExpressionLanguage.apply(value, attrs, env)
112114
)
113115
}
114116

@@ -169,7 +171,7 @@ class AdditionalCookieIn extends NgRequestTransformer {
169171
ctx.cachedConfig(internalName)(AdditionalCookieInConfig.format.reads).getOrElse(AdditionalCookieInConfig.default)
170172
Right(
171173
ctx.otoroshiRequest.copy(
172-
cookies = ctx.otoroshiRequest.cookies :+ config.toCookie
174+
cookies = ctx.otoroshiRequest.cookies :+ config.toCookie(ctx.attrs)
173175
)
174176
).vfuture
175177
}
@@ -202,7 +204,7 @@ class AdditionalCookieOut extends NgRequestTransformer {
202204
.getOrElse(AdditionalCookieOutConfig.default)
203205
Right(
204206
ctx.otoroshiResponse.copy(
205-
cookies = ctx.otoroshiResponse.cookies :+ config.toCookie
207+
cookies = ctx.otoroshiResponse.cookies :+ config.toCookie(ctx.attrs)
206208
)
207209
).vfuture
208210
}
@@ -328,7 +330,7 @@ class MissingCookieIn extends NgRequestTransformer {
328330
if (!ctx.otoroshiRequest.cookies.exists(_.name == config.name)) {
329331
Right(
330332
ctx.otoroshiRequest.copy(
331-
cookies = ctx.otoroshiRequest.cookies :+ config.toCookie
333+
cookies = ctx.otoroshiRequest.cookies :+ config.toCookie(ctx.attrs)
332334
)
333335
).vfuture
334336
} else {
@@ -365,7 +367,7 @@ class MissingCookieOut extends NgRequestTransformer {
365367
if (!ctx.otoroshiResponse.cookies.exists(_.name == config.name)) {
366368
Right(
367369
ctx.otoroshiResponse.copy(
368-
cookies = ctx.otoroshiResponse.cookies :+ config.toCookie
370+
cookies = ctx.otoroshiResponse.cookies :+ config.toCookie(ctx.attrs)
369371
)
370372
).vfuture
371373
} else {

otoroshi/app/next/plugins/response.scala

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,17 @@ class StaticResponse extends NgBackendCall {
8787
).byteString
8888
case str => str.byteString
8989
}
90-
inMemoryBodyResponse(config.status, config.headers, body).future
90+
inMemoryBodyResponse(config.status, config.headers.applyOnIf(config.applyEl)(_.mapValues(str => GlobalExpressionLanguage.apply(
91+
value = str.debugPrintln,
92+
req = ctx.rawRequest.some,
93+
service = None,
94+
route = ctx.route.some,
95+
apiKey = ctx.apikey,
96+
user = ctx.user,
97+
context = ctx.attrs.get(otoroshi.plugins.Keys.ElCtxKey).getOrElse(Map.empty),
98+
attrs = ctx.attrs,
99+
env = env
100+
))), body).future
91101
}
92102
}
93103

0 commit comments

Comments
 (0)