checkJwtInHeaders method

  1. @override
FutureOr<PassedHttpEntity> checkJwtInHeaders(
  1. RequestHolder request,
  2. ResponseHolder response,
  3. Map<String, dynamic> pathArgs
)
override

Implementation

@override
FutureOr<PassedHttpEntity> checkJwtInHeaders(
  RequestHolder request,
  ResponseHolder response,
  Map<String, dynamic> pathArgs,
) {
  return _wrapper(request, response, pathArgs, () async {
    var headers = request.headers;
    var jwt = headers.value(HeaderFields.authorization);
    if (jwt == null) {
      throw NoAuthHeaderException();
    }

    jwt = jwt
      ..toString()
      ..replaceAll('  ', ' ')
      ..trim();
    var parts = jwt.split(' ');
    int length = parts.length;
    String bearer = parts.first;
    String jwtString = parts.last;
    if (length != 2) {
      throw AuthHeaderNotValidException();
    }
    if (bearer != HeaderFields.bearer) {
      throw AuthHeaderNotValidException();
    }
    if (jwtString.isEmpty) {
      throw ProvidedJwtNotValid(1);
    }
    request.context[ContextFields.jwt] = jwtString;

    return request;
  });
}