login2 static method

Future<LoginStatus?> login2(
  1. User user, {
  2. UriProductHelper uriHelper = uriHelperFoodProd,
})

Logs in and returns data about the user if relevant.

Returns null if connection issue.

  User offUser = User(userId: 'username or email', password: 'password');

  LoginStatus? status = await OpenFoodAPIClient.login2(offUser);

  if (status == null) {
    throw Exception('Network error');
  }
  print(status.successful);
  print(status.userId);
  print(status.userEmail);
  print(status.userName);

  if (status.successful) {
    print('Logged in');
    OpenFoodAPIConfiguration.globalUser = offUser;
    //Store offUser in storage
  } else if (!status.successful) {
    print('Error, wrong credentials ${status.statusVerbose}');
  }

Implementation

static Future<LoginStatus?> login2(
  final User user, {
  final UriProductHelper uriHelper = uriHelperFoodProd,
}) async {
  final Uri uri = uriHelper.getPostUri(
    path: '/cgi/auth.pl',
  );
  final Response response = await HttpHelper().doPostRequest(
    uri,
    <String, String>{'body': '1'},
    user,
    uriHelper: uriHelper,
    addCredentialsToBody: true,
  );
  if (response.statusCode == 200 || response.statusCode == 403) {
    return LoginStatus.fromJson(
      HttpHelper().jsonDecode(response.body),
      response.headers,
    );
  }

  return null;
}