login method

Future<ApiReturn> login({
  1. required String userName,
  2. required String hashedPassword,
})

Logs in a user via the API.

This method sends a POST request to log in a user using their login identifier (e.g., username or email) and hashed password. If the login is successful, a User object is returned in the ApiReturn response.

  • userName: The user's login identifier.
  • hashedPassword: The user's hashed password.

Returns an ApiReturn object with the result of the login request.

Implementation

Future<ApiReturn> login({
  required String userName,
  required String hashedPassword,
}) async {
  String apiEndpointUrl = '$_baseUrl/v1/login';
  Map credentialsItemMap = _apiConnector.getCredentialsItemMap(
    userName: userName,
    hashedPassword: hashedPassword,
  );
  var body = json.encode(credentialsItemMap);

  http.Response response;
  try {
    response = await http.post(
      Uri.parse(apiEndpointUrl),
      headers: {'Content-Type': 'application/json'},
      body: body,
    );
  } catch (e) {
    return ApiReturn(
      success: false,
      returnCode: 599,
      explanation: e.toString(),
    );
  }

  if (response.statusCode == 200) {
    User user = getUserFromHttpResponse(response);
    return ApiReturn(
      success: true,
      returnCode: 200,
      explanation: 'Successfully logged in user',
      data: user,
    );
  } else {
    _apiConnector.printHttpResponse(response);
    return ApiReturn(
      success: false,
      returnCode: response.statusCode,
      explanation: '${response.reasonPhrase} ${response.body}',
    );
  }
}