Skip to content

Instantly share code, notes, and snippets.

@guillaumebort
Last active July 25, 2016 02:19
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save guillaumebort/8314512 to your computer and use it in GitHub Desktop.
Save guillaumebort/8314512 to your computer and use it in GitHub Desktop.
Force HTTPS decorator for Play framework
def forceHttps(handler: Handler, request: RequestHeader): Handler = {
(isHTTPSRequired, isRequestSecure(request), request.method, request.uri) match {
// HTTPS is supported but not required for the API
case (_, _, _, uri) if uri.startsWith("/api") => handler
// HTTPS is required here, redirect GET requests
case (true, false, "GET", uri) => Action(Results.Redirect(s"https://${request.domain}${request.uri}"))
// HTTPS is required but we can't redirect
case (true, false, _, _) => Action(Results.Forbidden("HTTPS is required"))
// Ok, let's execute this handler
case _ => handler
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment