diff --git a/.gitignore b/.gitignore index c0c2529..666f573 100644 --- a/.gitignore +++ b/.gitignore @@ -138,3 +138,4 @@ target /knockoutwhistweb/.g8/ /knockoutwhistweb/.bsp/ /currentSnapshot.json +.env \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e9f1033 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +# === Stage 1: Build the Play application === +FROM sbtscala/scala-sbt:eclipse-temurin-alpine-22_36_1.10.3_3.5.1 AS builder + +WORKDIR /app + +# Install Node.js and Less CSS preprocessor +USER root +RUN apk add --no-cache nodejs npm && \ + npm install -g less + +# Cache dependencies first +COPY project ./project +COPY build.sbt ./ +RUN sbt -Dscoverage.skip=true update + +# Copy the rest of the code +COPY . . + +# Build the app and stage it +RUN sbt -Dscoverage.skip=true clean stage + +# === Stage 2: Runtime image === +FROM eclipse-temurin:21-jre-alpine + +# Install Argon2 CLI and libraries +RUN apk add --no-cache bash argon2 argon2-libs + +WORKDIR /opt/playapp + +# Copy staged Play build +COPY --from=builder /app/knockoutwhistweb/target/universal/stage /opt/playapp + +# Expose the default Play port +EXPOSE 9000 + +# Set environment variables +ENV PLAY_HTTP_PORT=9000 + +# Run the Play app +ENTRYPOINT ["./bin/knockoutwhistweb"] +CMD ["-Dplay.server.pidfile.path=/dev/null"] diff --git a/knockoutwhist b/knockoutwhist index e0e45c4..b9a7b0a 160000 --- a/knockoutwhist +++ b/knockoutwhist @@ -1 +1 @@ -Subproject commit e0e45c4b431fff6740e38a59906f5e217fcd801f +Subproject commit b9a7b0a2af7cef7225bf1a0388ebf58171a173f2 diff --git a/knockoutwhistweb/app/auth/Auth.scala b/knockoutwhistweb/app/auth/AuthAction.scala similarity index 93% rename from knockoutwhistweb/app/auth/Auth.scala rename to knockoutwhistweb/app/auth/AuthAction.scala index b956035..30add86 100644 --- a/knockoutwhistweb/app/auth/Auth.scala +++ b/knockoutwhistweb/app/auth/AuthAction.scala @@ -14,8 +14,8 @@ class AuthAction @Inject()(val sessionManager: SessionManager, val parser: BodyP extends ActionBuilder[AuthenticatedRequest, AnyContent] { override def executionContext: ExecutionContext = ec - - private def getUserFromSession(request: RequestHeader): Option[User] = { + + protected def getUserFromSession(request: RequestHeader): Option[User] = { val session = request.cookies.get("sessionId") if (session.isDefined) return sessionManager.getUserBySession(session.get.value) diff --git a/knockoutwhistweb/conf/application.conf b/knockoutwhistweb/conf/application.conf index d6d372a..6ffc7ee 100644 --- a/knockoutwhistweb/conf/application.conf +++ b/knockoutwhistweb/conf/application.conf @@ -1,14 +1,14 @@ # https://www.playframework.com/documentation/latest/Configuration play.filters.disabled += play.filters.csrf.CSRFFilter - +play.http.secret.key="QCY?tAnfk?aZ?iwrNwnxIlR6CTf:G3gf:90Latabg@5241AB`R5W:1uDFN];Ik@n" +play.http.secret.key=${?APPLICATION_SECRET} auth { issuer = "knockoutwhistweb" audience = "ui" - # ${?PUBLIC_KEY_FILE} - privateKeyFile = "D:\\Workspaces\\Gitops\\rsa512-private.pem" - privateKeyPem = ${?PUBLIC_KEY_PEM} - #${?PUBLIC_KEY_FILE} - publicKeyFile = "D:\\Workspaces\\Gitops\\rsa512-public.pem" + privateKeyFile = ${?PRIVATE_KEY_FILE} + privateKeyPem = ${?PRIVATE_KEY_PEM} + + publicKeyFile = ${?PUBLIC_KEY_FILE} publicKeyPem = ${?PUBLIC_KEY_PEM} }