Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 

119 рядки
3.7 KiB

  1. import 'package:dio/dio.dart';
  2. import 'package:qadirneyriz/config/config.dart';
  3. import 'package:qadirneyriz/main.dart';
  4. import 'package:qadirneyriz/setting/setting.dart';
  5. import 'package:qadirneyriz/utils/result/result.dart';
  6. import 'dart:io';
  7. class AuthServices {
  8. String userAgent =
  9. Platform.isAndroid ? 'application/android' : 'application/ios';
  10. Future<Result?> loginApi({
  11. required String mobile,
  12. String? password,
  13. String? otp,
  14. }) async {
  15. String? token;
  16. token = await messaging.getToken();
  17. assert(password != null || otp != null);
  18. try {
  19. Map<String, String> headers = {
  20. "Accept": "application/json",
  21. "user-agent": userAgent
  22. };
  23. FormData formData;
  24. formData = password != null
  25. ? FormData.fromMap(
  26. {"mobile": mobile, "password": password, "device_id": token})
  27. : FormData.fromMap(
  28. {"mobile": mobile, "otp": otp, "device_id": token});
  29. // print('${formData.fields} resData');
  30. final res = await Dio().post(
  31. "${config.network.baseUrl}login?lang=${setting.userLocalDb.getUser().language}",
  32. data: formData,
  33. options: Options(headers: headers));
  34. if (res.statusCode == 200 || res.statusCode == 201) {
  35. setting.userLocalDb.saveUserField('token', res.data['token']);
  36. setting.userLocalDb.saveUserField('mobile', res.data['mobile']);
  37. setting.userLocalDb.saveUserField('name', res.data['name']);
  38. setting.userLocalDb.saveUserField('role', res.data['role']);
  39. setting.userLocalDb.saveUserField('access', res.data['access']);
  40. return Result(isOk: true, message: res.data['msg']);
  41. }
  42. } on DioException catch (e) {
  43. // print(e);
  44. return Result(
  45. isOk: false,
  46. errors: e.response?.data['errors'],
  47. message: e.response?.data['msg']);
  48. }
  49. return const Result(isOk: false);
  50. }
  51. Future<Result?> sendOtpApi({required String mobile}) async {
  52. try {
  53. Map<String, String> headers = {
  54. "Accept": "application/json",
  55. "user-agent": userAgent,
  56. };
  57. FormData formData = FormData.fromMap({"mobile": mobile});
  58. final res = await Dio().post(
  59. "${config.network.baseUrl}sendOtp?lang=${setting.userLocalDb.getUser().language}",
  60. data: formData,
  61. options: Options(headers: headers));
  62. if (res.statusCode == 200 || res.statusCode == 201) {
  63. return Result(isOk: true, message: res.data['msg']);
  64. }
  65. } on DioException catch (e) {
  66. return Result(
  67. isOk: false,
  68. errors: e.response?.data['errors'],
  69. message: e.response?.data['msg']);
  70. }
  71. return const Result(isOk: false);
  72. }
  73. Future<Result?> checkLoginApi() async {
  74. final userRole = setting.userLocalDb.getUser().role;
  75. try {
  76. Map<String, String> headers = {"Accept": "application/json"};
  77. String dataToken = setting.userLocalDb.getUser().token!;
  78. if (dataToken != '') {
  79. headers['Authorization'] = "Bearer $dataToken";
  80. }
  81. // print('$dataToken datatokoen');
  82. // لینک API
  83. final apiUrl = userRole != 1
  84. ? "${config.network.baseUrl}admin/checkLogin"
  85. : "${config.network.baseUrl}user/checkLogin";
  86. final res = await Dio().get(
  87. apiUrl,
  88. options: Options(headers: headers),
  89. );
  90. if (res.statusCode == 200 || res.statusCode == 201) {
  91. return Result(isOk: true, message: res.data['msg']);
  92. }
  93. } on DioException catch (e) {
  94. return Result(
  95. isOk: false,
  96. errors: e.response?.data['errors'],
  97. message: e.response?.data['msg'],
  98. );
  99. }
  100. return const Result(isOk: false);
  101. }
  102. }