parsePermissionDenial function
The denial is the body itself or nested under detail.
Implementation
({String? message, String? permission}) parsePermissionDenial(
Map<String, dynamic> body,
) {
final dynamic detail = body['detail'];
final Map<String, dynamic>? candidate = body.containsKey('missing_tuple')
? body
: (detail is Map<String, dynamic> ? detail : null);
final dynamic tuple = candidate?['missing_tuple'];
final dynamic object = tuple is Map<String, dynamic> ? tuple['object'] : null;
final dynamic message =
candidate?['message'] ?? (detail is String ? detail : null);
return (
message: message is String ? message : null,
permission: object is String ? object : null,
);
}