private final CSRFAction$ CSRFAction = CSRFAction$.MODULE$;
private final CSRF.TokenProvider tokenProvider = CSRFConf$.MODULE$.defaultTokenProvider();
@Override
public F.Promise<Result> call(Http.Context ctx) throws Throwable {
RequestHeader request = ctx._requestHeader();
if (CSRFAction.getTokenFromHeader(request, tokenName, cookieName).isEmpty()) {
// No token in header and we have to create one if not found, so create a new token
String newToken = tokenProvider.generateToken();
// Place this token into the context
ctx.args.put(requestTag, newToken);
// Create a new Scala RequestHeader with the token
final RequestHeader newRequest = request.copy(request.id(),
request.tags().$plus(new Tuple2<String, String>(requestTag, newToken)),
request.uri(), request.path(), request.method(), request.version(), request.queryString(),
request.headers(), request.remoteAddress(), request.secure());
// Create a new context that will have the new RequestHeader. This ensures that the CSRF.getToken call