loginPassword method

Future loginPassword(
  1. String email,
  2. String password,
  3. BuildContext context
)

Implementation

Future<dynamic> loginPassword(String email, String password, BuildContext context) async {
  try {
    _dio.options.headers['content-Type'] = 'application/json';
    var response = await _dio
        .post('$baseUrl/frontegg/identity/resources/auth/v1/user', data: {"email": email, "password": password});

    final data = response.data;
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('emailForRecover', email);

    if (data['mfaRequired'] != null && data['mfaRequired']) {
      prefs.setString('mfaToken', data['mfaToken']);
      final verified = await Navigator.push(context, MaterialPageRoute(builder: (context) => const TwoFactor()));
      if (verified == null) {
        return false;
      }
      if (verified == true) {
        return await getUserInfo();
      }
    } else {
      prefs.setString('accessToken', data['accessToken']);
      prefs.setString('expires', data['expires']);
      prefs.setInt('expiresIn', data['expiresIn']);
      prefs.setString('refreshToken', data['refreshToken']);

      return await getUserInfo();
    }
  } catch (e) {
    if (e is DioError && e.response != null) {
      throw e.response!.data['errors'][0];
    }
    throw tr('invalid_authentication');
  }
}