From eec87c3fe4197f62df75ee0a06814a7a3da64272 Mon Sep 17 00:00:00 2001 From: Tom Richards Date: Thu, 3 Oct 2024 11:49:38 +0100 Subject: [PATCH] load pinboard for V2 fronts tool if user has Pinboard permission --- app/conf/Configuration.scala | 10 ++++++---- app/controllers/V2App.scala | 9 +++++++-- app/permissions/Permissions.scala | 19 +++++++++++-------- app/views/V2App/app.scala.html | 15 +++++++++++++-- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/app/conf/Configuration.scala b/app/conf/Configuration.scala index 371b68fbdbd..5fe1b3171ac 100644 --- a/app/conf/Configuration.scala +++ b/app/conf/Configuration.scala @@ -65,14 +65,16 @@ class ApplicationConfiguration( val applicationName = "facia-tool" - // isProd is derived from the enviroment mode which is given + // isProd is derived from the environment mode which is given // to us by play, it is true for both prod and code. Stage is a variable coming // from the config and tells us which bucket we are reading fronts and collections from. // Stage is prod for production environment and code for code and dev environemnts. // These two variables together allow us to determine the application url. - val applicationUrl = if (isProd && stage == "code") "https://fronts.code.dev-gutools.co.uk" - else if (isProd) "https://fronts.gutools.co.uk" - else "https://fronts.local.dev-gutools.co.uk" + val correspondingToolsDomainSuffix = if (isProd && stage == "code") "code.dev-gutools.co.uk" + else if (isProd) "gutools.co.uk" + else "local.dev-gutools.co.uk" + + val applicationUrl = s"https://fronts.${correspondingToolsDomainSuffix}" } object ophanApi { diff --git a/app/controllers/V2App.scala b/app/controllers/V2App.scala index cc83cadb231..6755a8e1291 100644 --- a/app/controllers/V2App.scala +++ b/app/controllers/V2App.scala @@ -14,7 +14,7 @@ import play.api.libs.json.Json import services.editions.db.EditionsDB import software.amazon.awssdk.services.dynamodb.DynamoDbClient import switchboard.SwitchManager -import util.{Acl, AclJson} +import util.{AccessGranted, Acl, AclJson} class V2App(isDev: Boolean, val acl: Acl, dynamoClient: DynamoDbClient, db: EditionsDB, val deps: BaseFaciaControllerComponents)(implicit ec: ExecutionContext) extends BaseFaciaController(deps) { @@ -39,6 +39,7 @@ class V2App(isDev: Boolean, val acl: Acl, dynamoClient: DynamoDbClient, db: Edit val hasBreakingNews = acl.testUser(Permissions.BreakingNewsAlert, "facia-tool-allow-breaking-news-for-all")(req.user.email) val hasConfigureFronts = acl.testUser(Permissions.ConfigureFronts, "facia-tool-allow-config-for-all")(req.user.email) val hasEditionsPermissions = acl.testUser(Permissions.EditEditions, "facia-tool-allow-edit-editions-for-all")(req.user.email) + val pinboardPermission = acl.testUser(Permissions.Pinboard, "facia-tool-allow-pinboard-for-all")(req.user.email) val acls = AclJson( fronts = Map(config.faciatool.breakingNewsFront -> hasBreakingNews), @@ -96,7 +97,11 @@ class V2App(isDev: Boolean, val acl: Acl, dynamoClient: DynamoDbClient, db: Edit cssLocation, faviconLocation, Json.toJson(conf).toString(), - isDev + isDev, + maybePinboardUrl = pinboardPermission match { + case AccessGranted => Some(s"https://pinboard.${config.environment.correspondingToolsDomainSuffix}/pinboard.loader.js") + case _ => None + } )) } diff --git a/app/permissions/Permissions.scala b/app/permissions/Permissions.scala index da1085420f8..381d14ed21e 100644 --- a/app/permissions/Permissions.scala +++ b/app/permissions/Permissions.scala @@ -3,12 +3,15 @@ package permissions import com.gu.permissions.PermissionDefinition object Permissions { - val FrontsAccess = PermissionDefinition("fronts_access", "fronts") - val ConfigureFronts = PermissionDefinition("configure_fronts", "fronts") - val BreakingNewsAlert = PermissionDefinition("breaking_news_alert", "fronts") - val LaunchCommercialFronts = PermissionDefinition("launch_commercial_fronts", "fronts") - val LaunchEditorialFronts = PermissionDefinition("launch_editorial_fronts", "fronts") - val EditEditorialFronts = PermissionDefinition("edit_editorial_fronts", "fronts") - val EditEditions = PermissionDefinition("edit_editions", "fronts") - val LaunchAndEditEmailFronts = PermissionDefinition("edit_and_launch_email_fronts", "fronts") + private val app = "fronts" + val FrontsAccess = PermissionDefinition("fronts_access", app) + val ConfigureFronts = PermissionDefinition("configure_fronts", app) + val BreakingNewsAlert = PermissionDefinition("breaking_news_alert", app) + val LaunchCommercialFronts = PermissionDefinition("launch_commercial_fronts", app) + val LaunchEditorialFronts = PermissionDefinition("launch_editorial_fronts", app) + val EditEditorialFronts = PermissionDefinition("edit_editorial_fronts", app) + val EditEditions = PermissionDefinition("edit_editions", app) + val LaunchAndEditEmailFronts = PermissionDefinition("edit_and_launch_email_fronts", app) + + val Pinboard = PermissionDefinition("pinboard", "pinboard") } diff --git a/app/views/V2App/app.scala.html b/app/views/V2App/app.scala.html index 5a353e80e9d..bf21f25d8c7 100644 --- a/app/views/V2App/app.scala.html +++ b/app/views/V2App/app.scala.html @@ -1,5 +1,12 @@ -@(title: String, jsLocation: String, cssLocation: String, faviconLocation: String, clientConfigJson: -String, isDev: Boolean) +@( + title: String, + jsLocation: String, + cssLocation: String, + faviconLocation: String, + clientConfigJson: String, + isDev: Boolean, + maybePinboardUrl: Option[String] +) @@ -52,6 +59,10 @@ } + + @maybePinboardUrl.map { pinboardUrl => + + }