app/controllers/ViewsController.scala (94 lines of code) (raw):

package controllers import scala.concurrent.ExecutionContext import com.gu.pandomainauth.action.UserRequest import model.Cached import org.joda.time.DateTime import permissions.ConfigPermissionCheck import play.api.mvc._ import services.AssetsManager import util.Acl class ViewsController( val acl: Acl, assetsManager: AssetsManager, isDev: Boolean, val deps: BaseFaciaControllerComponents )(implicit ec: ExecutionContext) extends BaseFaciaController(deps) { private def shouldRedirectToV2( request: UserRequest[AnyContent], priority: Option[String] = None ): Boolean = { val isBreakingNews = priority.getOrElse("") == "breaking-news" || request.queryString .getOrElse("layout", Seq("")) .exists(_.contains("breaking-news")) if (isBreakingNews) { false } else { request.queryString.getOrElse("redirect", Seq("true")).contains("true") } } def priorities() = AccessAuthAction { request => if (shouldRedirectToV2(request)) { PermanentRedirect("/v2") } else { val identity = request.user Cached(60) { Ok( views.html.priority( Option(identity), config.facia.stage, isDev, true, maybeTelemetryUrl = Some(telemetryUrl) ) ) } } } def collectionEditor(priority: String) = getCollectionPermissionFilterByPriority(priority, acl)(ec) { request => if (shouldRedirectToV2(request, Some(priority))) { PermanentRedirect(s"/v2/$priority") } else { val identity = request.user Cached(60) { Ok( views.html.admin_main( Option(identity), config.facia.stage, overrideIsDev(request, isDev), assetsManager.pathForCollections, priority != "email", priority, maybeTelemetryUrl = Some(telemetryUrl) ) ) } } } def configEditor() = (AccessAuthAction andThen new ConfigPermissionCheck(acl)) { request => val identity = request.user Cached(60) { Ok( views.html.admin_main( Option(identity), config.facia.stage, overrideIsDev(request, isDev), assetsManager.pathForConfig, false, maybeTelemetryUrl = Some(telemetryUrl) ) ) } } private def overrideIsDev( request: UserRequest[AnyContent], isDev: Boolean ): Boolean = { request.queryString .getOrElse("isDev", Seq(if (isDev) "true" else "false")) .contains("true") } }