decodeJwt function

DecodedJwt decodeJwt(
  1. String token
)

Decodes a JWT token without performing validation

Returns a DecodedJwt containing the header, payload, signature, and raw parts. Throws AuthInvalidJwtException if the JWT structure is invalid.

Implementation

DecodedJwt decodeJwt(String token) {
  final parts = token.split('.');
  if (parts.length != 3) {
    throw AuthInvalidJwtException('Invalid JWT structure');
  }

  final rawHeader = parts[0];
  final rawPayload = parts[1];
  final rawSignature = parts[2];

  try {
    // Decode header
    final headerJson = Base64Url.decodeToString(rawHeader);
    final header = JwtHeader.fromJson(json.decode(headerJson));

    // Decode payload
    final payloadJson = Base64Url.decodeToString(rawPayload);
    final payload = JwtPayload.fromJson(json.decode(payloadJson));

    // Decode signature
    final signature = Base64Url.decodeToBytes(rawSignature);

    return DecodedJwt(
      header: header,
      payload: payload,
      signature: signature,
      raw: JwtRawParts(
        header: rawHeader,
        payload: rawPayload,
        signature: rawSignature,
      ),
    );
  } catch (e) {
    if (e is AuthInvalidJwtException) {
      rethrow;
    }
    throw AuthInvalidJwtException('Failed to decode JWT: $e');
  }
}