phoneLoginPassword method

Future<NsgLoginResponse> phoneLoginPassword({
  1. required String phoneNumber,
  2. required String securityCode,
  3. NsgLoginType? loginType,
})

Регистрация нового пользователя/восстановление пароля по e-mail или вход по паролю Опраделяется наличием или отсутствием securityCode В последнем случае, пользователю будет отправлен код верификации для дальнейшего использования в phoneLogin

Implementation

Future<NsgLoginResponse> phoneLoginPassword({required String phoneNumber, required String securityCode, NsgLoginType? loginType}) async {
  this.phoneNumber = phoneNumber;
  var login = NsgLoginModel();
  login.phoneNumber = phoneNumber;
  if (loginType != null) login.loginType = loginType;
  //Если securityCode пустой, то это регистрация пользователя/восстановление пароля
  //Такая "хитрая" система сделана для совместимости со старыми версиями приложения
  //и со временем может быть заменена на раздельные функции или на новую систему авторизации
  if (securityCode == '') {
    login.register = true;
  }
  //Если securityCode не задан, заполняем его специальной фразой.
  //По всей видимости, для проверки ее на стороне сервера
  //Скорее всего, смысла в этом нет, оставлено для совместимости
  login.securityCode = securityCode == '' ? defaultSecurityCode : securityCode;
  var s = login.toJson();

  var response = await (baseRequest(
    function: 'PhoneLoginRequestSMS',
    headers: getAuthorizationHeader(),
    url: '$serverUri/$authorizationApi/PhoneLoginRequestSMS',
    method: 'POST',
    params: s,
  ));

  var loginResponse = NsgLoginResponse.fromJson(response);
  if (loginResponse.errorCode == 0) {
    token = loginResponse.token;
    isAnonymous = loginResponse.isAnonymous;
    if (!isAnonymous && saveToken) {
      // var _prefs = await SharedPreferences.getInstance();
      // await _prefs.setString(applicationName, token!);
      await saveCurrentServerToken();
    }
  }
  return loginResponse;
}