app/controllers/Application.scala (45 lines of code) (raw):
package controllers
import auth.PanDomainAuthActions
import com.gu.pandomainauth.PanDomainAuthSettingsRefresher
import com.gu.permissions.PermissionsProvider
import helpers.Loggable
import play.api.data.Forms._
import play.api.data._
import play.api.libs.ws.WSClient
import play.api.mvc._
import play.api.libs.json.Json
import scala.concurrent.ExecutionContext
// Pan domain
import com.gu.pandomainauth.action.AuthActions
import com.gu.pandomainauth.model.AuthenticatedUser
import config.AppConfig
import helpers.CORSable
class Application(
val controllerComponents: ControllerComponents,
val config:AppConfig,
override val wsClient: WSClient,
override val permissions: PermissionsProvider,
val panDomainSettings: PanDomainAuthSettingsRefresher
) extends BaseController with PanDomainAuthActions with Loggable {
val urlForm = Form(
"url" -> nonEmptyText
)
val clientConfig: String = Json.obj(
"gaId" -> config.googleTrackingId
).toString()
def index = AuthAction {
Ok(views.html.main("Composer Restorer", clientConfig, config.googleTrackingId))
}
def versionIndex(contentId: String) = AuthAction {
Ok(views.html.main(s"Composer Restorer - Versions of $contentId", clientConfig, config.googleTrackingId))
}
def preflight(routes: String) = CORSable(executionContext, config.corsableDomains: _*) {
Action { implicit req =>
val requestedHeaders = req.headers.get("Access-Control-Request-Headers")
NoContent.withHeaders(
CORSable.CORS_ALLOW_METHODS -> "GET, DELETE, PUT",
CORSable.CORS_ALLOW_HEADERS -> requestedHeaders.getOrElse(""))
}
}
protected val parser: BodyParser[AnyContent] = controllerComponents.parsers.default
protected val executionContext: ExecutionContext = controllerComponents.executionContext
}