MIF_E31222381/AdmindukPuger_mobile-master/lib/cubit/Auth/Auth_repository.dart

90 lines
2.6 KiB
Dart

import 'package:dio/dio.dart';
class AuthRepository {
final Dio _dio = Dio();
Future<Map<String, dynamic>> login(String email, String password) async {
try {
final response = await _dio.post(
'https://adminduk-kec-puger.my.id/api/login',
data: {'email': email, 'password': password},
);
print("Login response: ${response.data}");
return response.data;
} catch (e) {
print("Login error: $e");
if (e is DioException && e.response != null) {
print("Error response: ${e.response!.data}");
// Jika status 403 dan error terkait email belum diverifikasi
if (e.response!.statusCode == 403 &&
e.response!.data['email_verified'] == false) {
return e.response!.data; // Kembalikan response dari server
}
return {
'success': false,
'message': e.response!.data['message'] ?? 'Login gagal',
};
}
return {'success': false, 'message': 'Terjadi kesalahan: $e'};
}
}
Future<void> resendVerificationEmail(int userId) async {
try {
await _dio.post(
"https://adminduk-kec-puger.my.id/api/email/resend-by-id",
data: {"user_id": userId},
);
print("Email verifikasi berhasil dikirim");
} catch (e) {
print("Gagal mengirim ulang email verifikasi: $e");
}
}
Future<Map<String, dynamic>> register(
String name,
String email,
String phone,
String password,
String address,
String nik,
String nokk,
) async {
try {
Dio dio = Dio();
Response response = await dio.post(
"https://adminduk-kec-puger.my.id/api/register",
data: {
'name': name,
'email': email,
'phone': phone,
'password': password,
'address': address,
'nik': nik,
'nokk': nokk,
},
);
if (response.statusCode == 200 || response.statusCode == 201) {
return {'success': true, 'data': response.data};
} else {
return {'success': false, 'message': 'Gagal melakukan registrasi'};
}
} catch (e) {
if (e is DioException && e.response != null) {
// Handle validation errors from the server
if (e.response!.statusCode == 422 &&
e.response!.data['errors'] != null) {
final errors = e.response!.data['errors'];
final errorMsg = errors.entries.first.value[0] ?? 'Validation error';
return {'success': false, 'message': errorMsg};
}
}
return {'success': false, 'message': e.toString()};
}
}
}