app/controllers/PanDomainAuthActions.scala (35 lines of code) (raw):
package controllers
import com.gu.media.{MediaAtomMakerPermissionsProvider, Permissions}
import com.gu.media.logging.Logging
import com.gu.pandahmac.HMACAuthActions
import com.gu.pandomainauth.model.AuthenticatedUser
import play.api.Configuration
import play.api.mvc.{RequestHeader, Result}
import play.api.mvc.Results.Forbidden
trait PanDomainAuthActions extends HMACAuthActions with Logging {
def conf: Configuration
private def noPermissionMessage(authedUser: AuthenticatedUser): String =
s"user ${authedUser.user.email} does not have ${Permissions.basicAccess.name} permission"
override def validateUser(authedUser: AuthenticatedUser): Boolean = {
val isValid =
(authedUser.user.emailDomain == "guardian.co.uk") &&
(authedUser.multiFactor)
val hasBasicAccess = permissionsProvider.hasPermission(Permissions.basicAccess, authedUser.user)
if (!isValid) {
log.warn(s"User ${authedUser.user.email} is not valid")
} else if (!hasBasicAccess) {
log.warn(noPermissionMessage(authedUser))
}
isValid && hasBasicAccess
}
override def showUnauthedMessage(message: String)(implicit request: RequestHeader): Result =
Forbidden(views.html.authError(message))
override def invalidUserMessage(authedUser: AuthenticatedUser) = {
val hasBasicAccess = permissionsProvider.hasPermission(Permissions.basicAccess, authedUser.user)
if (!hasBasicAccess) noPermissionMessage(authedUser)
else super.invalidUserMessage(authedUser)
}
override def authCallbackUrl: String = "https://" + conf.get[String]("host") + "/oauthCallback"
override def secret: String = conf.get[String]("secret")
def permissionsProvider: MediaAtomMakerPermissionsProvider
}