56 lines
1.7 KiB
Scala
56 lines
1.7 KiB
Scala
package multistepform
|
|
|
|
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
|
|
import org.thymeleaf.TemplateEngine
|
|
import org.thymeleaf.context.Context
|
|
import cask.endpoints.ParamReader
|
|
import java.util.UUID
|
|
|
|
case class Routes()(implicit cc: castor.Context, log: cask.Logger)
|
|
extends cask.Routes {
|
|
val templateResolver = new ClassLoaderTemplateResolver()
|
|
templateResolver.setPrefix("templates/");
|
|
templateResolver.setSuffix(".html")
|
|
templateResolver.setTemplateMode("HTML5")
|
|
|
|
val templateEngine = new TemplateEngine()
|
|
templateEngine.setTemplateResolver(templateResolver)
|
|
|
|
val sessoinCookieName = "sessionId"
|
|
|
|
@cask.get("/")
|
|
def getIndex(ctx: cask.Request) = {
|
|
val sessionCookie = ctx.cookies.get(sessoinCookieName)
|
|
lazy val newSessionCookies = sessionCookie match {
|
|
case None => Seq(cask.Cookie(sessoinCookieName, UUID.randomUUID().toString(), path = "/"))
|
|
case Some(_) => Seq.empty // don't set new cookies
|
|
}
|
|
|
|
println(s"getting cookie $sessionCookie will set new? ${newSessionCookies}")
|
|
|
|
val context = new Context()
|
|
val indexPage = templateEngine.process("index", context)
|
|
cask.Response(
|
|
indexPage,
|
|
headers = Seq("Content-Type" -> "text/html;charset=UTF-8"),
|
|
cookies = newSessionCookies
|
|
)
|
|
}
|
|
|
|
@cask.get("/force-new-session")
|
|
def forceNewSession() = {
|
|
val newSessionCookie = cask.Cookie(sessoinCookieName, UUID.randomUUID().toString(), path = "/")
|
|
println(s"setting new session ${newSessionCookie.value}")
|
|
cask.Response(
|
|
s"New session forced. Force new session",
|
|
headers = Seq("Content-Type" -> "text/html;charset=UTF-8"),
|
|
cookies = Seq(newSessionCookie)
|
|
)
|
|
}
|
|
|
|
@cask.staticResources("/public")
|
|
def publicFiles() = "public"
|
|
|
|
initialize()
|
|
}
|