login method

Implementation

Future<GenericServerResponse<LoginOutput>> login(LoginInput input) async {

  GenericServerResponse<LoginOutput> genericServerResponse = new GenericServerResponse();
  genericServerResponse.data = new LoginOutput();

  try{

    String url = UrlUtils.getUrl(_baseUrl, UrlUtils.URL_AUTH);

    String jsonInput = jsonEncode(input.toJson());

    Response response = await bsm!.genericBeaHttpPost(url, jsonInput);
    int? statusCode = response.statusCode;

    if(statusCode == 200){
      String? token = response.data['result'];

      if(token == null || token.isEmpty){
        throw new Exception('Impossibile reperire il token');
      }

      await storage.write(key: KeyUtils.KEY_RICORDAMI, value: input.ricordami == true ? "true" : "false");
      await storage.write(key: KeyUtils.KEY_TOKEN_SESSION, value: token);
      await storage.write(key: KeyUtils.KEY_USER, value: input.usernameOrEmailAddress);

      if(input.ricordami!){
        await storage.write(key: KeyUtils.KEY_PASSWORD, value: input.password);
      }

      genericServerResponse.data.user = input.usernameOrEmailAddress;
      genericServerResponse.data.token = token;
      genericServerResponse.data.isLogged = true;

    }else if(statusCode == 500){
      var res = response.data['error'];
      BeaError? error = res == null ? res : BeaError.fromJson(res);
      if (error != null) {
        genericServerResponse.data.user = input.usernameOrEmailAddress;
        genericServerResponse.data.token = "";
        genericServerResponse.data.isLogged = false;
        genericServerResponse.beaError = error;
      } else {
        genericServerResponse.beaError = new BeaError("Unknown Error", 0, "");
      }
    }else{
      genericServerResponse.beaError = new BeaError('Codice $statusCode ricevuto dal server non gestito!', 0, "");
      throw new Exception('Codice $statusCode ricevuto dal server non gestito!');
    }
  }on Exception catch (e){
    print('BEA Login error');
    FLog.error(
        className: this.runtimeType.toString(),
        methodName: "login",
        text: 'BEA Login error - $e');
    throw e;
  }

  return genericServerResponse;
}