authorize method

  1. @override
Future<bool> authorize()
override

Called to authorize a request if the request requires authentication.

Returning true means the request should be authorized, false means authorization failed.

Implementation

@override
Future<bool> authorize() async {
  if (isValidAuth) {
    return true;
  }

  if (!_isAuthExpiried &&
      !_hasValidatedOnce &&
      !isNullOrEmpty(_encryptedAccessToken)) {
    return validate();
  }

  final response = await _client!.post<dynamic>(
    baseUrl.replace(path: 'wp-json/jwt-auth/v1/token').toString(),
    data: {
      'username': userName,
      'password': password,
    },
    options: Options(
      method: HttpMethod.post.name,
      contentType: 'application/x-www-form-urlencoded',
      followRedirects: true,
      maxRedirects: 10,
    ),
  );

  if (response.statusCode != 200 || response.data == null) {
    return false;
  }

  events?.onResponse?.call(response.data);

  if (response.data['data'] == null || !(response.data['success'] as bool)) {
    return false;
  }

  _encryptedAccessToken = response.data?['data']?['token'] as String?;

  if (_encryptedAccessToken != null) {
    _lastAuthorizedTime = DateTime.now();
  }

  return _hasValidatedOnce = !isNullOrEmpty(_encryptedAccessToken);
}