app/AppComponents.scala (33 lines of code) (raw):
import com.gu.pandomainauth.PublicSettings
import controllers.{Application, AssetsComponents, Management}
import lib.{S3Actions, S3UploadAppConfig}
import play.api.ApplicationLoader.Context
import play.api.BuiltInComponentsFromContext
import play.api.mvc.EssentialFilter
import play.api.routing.Router
import play.filters.HttpFiltersComponents
import play.filters.cors.{CORSComponents}
import router.Routes
import com.gu.permissions.PermissionsProvider
import com.gu.permissions.PermissionsConfig
class AppComponents(context: Context) extends BuiltInComponentsFromContext(context: Context) with HttpFiltersComponents with AssetsComponents with CORSComponents {
val s3Actions = new S3Actions()
val publicSettings = new PublicSettings(s"${S3UploadAppConfig.domain}.settings.public", "pan-domain-auth-settings", S3UploadAppConfig.s3Client)
publicSettings.start()
val permissions = {
val permissionsStage = S3UploadAppConfig.stage match {
case "PROD" => "PROD"
case _ => "CODE"
}
PermissionsProvider(PermissionsConfig(
stage = permissionsStage,
region = S3UploadAppConfig.region,
awsCredentials = S3UploadAppConfig.awsCredentials)
)
}
val api = new Application(s3Actions, publicSettings, permissions, controllerComponents)
val management = new Management(controllerComponents)
val disabledFilters: Set[EssentialFilter] = Set(allowedHostsFilter)
final override def httpFilters: Seq[EssentialFilter] = corsFilter +: super.httpFilters.filterNot(disabledFilters.contains)
override def router: Router = new Routes(httpErrorHandler, api, assets, management)
}