in play-v29/src/main/scala/com/gu/googleauth/actions.scala [234:248]
def requireGroup[R[_] <: RequestHeader](
includedGroups: Set[String],
notInValidGroup: RequestHeader => Result = _ => Forbidden
)(implicit ec: ExecutionContext) = new ActionFilter[R] {
override protected def executionContext: ExecutionContext = ec
protected def filter[A](request: R[A]): Future[Option[Result]] =
userIdentity(request: RequestHeader).fold[Future[Option[Result]]](Future.successful(Some(notInValidGroup(request)))) {
user => for (usersGroups <- groupChecker.retrieveGroupsFor(user.email)) yield if (includedGroups.intersect(usersGroups).nonEmpty) None else {
logger.info(s"Excluding ${user.email} from '${request.path}' - not in accepted groups: $includedGroups")
Some(notInValidGroup(request))
}
}
}