У меня есть проект с контроллерами, которые нуждаются в аутентификации, и с контроллерами, которые не нуждаются.
Я реализовал документацию по составу действий здесь , поэтому я вставляю свой UserAction
в каждый контроллер, которыйнеобходима аутентификация
class UserRequest[A](val user: Option[String], request: Request[A]) extends WrappedRequest[A](request)
class UserAction @Inject()(val parser: BodyParsers.Default)(implicit val executionContext: ExecutionContext)
extends ActionBuilder[UserRequest, AnyContent] with ActionTransformer[Request, UserRequest] {
def transform[A](request: Request[A]) = Future.successful {
if(request.queryString.contains("token")){
val token = request.queryString("token").head
new UserRequest(Some(token), request)
} else {
new UserRequest(None, request)
}
}
def PermissionCheckAction(implicit ec: ExecutionContext) = new ActionFilter[UserRequest] {
def executionContext = ec
def filter[A](input: UserRequest[A]) = Future.successful {
if (input.user.isEmpty)
Some(Results.Unauthorized)
else
None
}
}
}
И контроллер hte:
class ResultsController @Inject()(
adRepo: AdRepository,
userAction : UserAction
) extends InjectedController {
Как выполнить рефакторинг инъекций в родительском контроллере и применить действие useraction ко всем действиям в контроллере?