connect with backend
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../config/api_config.dart';
|
||||
import 'dio_client.dart';
|
||||
|
||||
class AuthService {
|
||||
final Dio _dio = Dio(BaseOptions(
|
||||
baseUrl: ApiConfig.baseUrl,
|
||||
connectTimeout: const Duration(seconds: 15),
|
||||
receiveTimeout: const Duration(seconds: 15),
|
||||
// You can add headers here if needed:
|
||||
// headers: {'Accept': 'application/json'},
|
||||
));
|
||||
late final Dio _dio;
|
||||
|
||||
/// Calls /api/user/login with login_id and password
|
||||
AuthService(BuildContext context) {
|
||||
_dio = DioClient.getInstance(context);
|
||||
}
|
||||
|
||||
/// Login API
|
||||
Future<Map<String, dynamic>> login(String loginId, String password) async {
|
||||
try {
|
||||
final response = await _dio.post('/user/login', data: {
|
||||
@@ -18,45 +18,44 @@ class AuthService {
|
||||
'password': password,
|
||||
});
|
||||
|
||||
// Ensure we return a Map<String, dynamic>
|
||||
if (response.data is Map) {
|
||||
return Map<String, dynamic>.from(response.data);
|
||||
} else {
|
||||
return {
|
||||
'success': false,
|
||||
'message': 'Invalid response from server',
|
||||
};
|
||||
}
|
||||
return Map<String, dynamic>.from(response.data);
|
||||
} on DioException catch (e) {
|
||||
// Try to extract message from server response
|
||||
dynamic respData = e.response?.data;
|
||||
String message = 'Login failed';
|
||||
if (respData is Map && respData['message'] != null) {
|
||||
message = respData['message'].toString();
|
||||
} else if (e.message != null) {
|
||||
message = e.message!;
|
||||
}
|
||||
final data = e.response?.data;
|
||||
return {
|
||||
'success': false,
|
||||
'message': message,
|
||||
'message': data is Map && data['message'] != null
|
||||
? data['message']
|
||||
: e.message ?? 'Login failed'
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
'success': false,
|
||||
'message': e.toString(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// Optional: logout (if you have logout endpoint)
|
||||
Future<Map<String, dynamic>> logout(String token) async {
|
||||
try {
|
||||
final Dio dio = Dio(BaseOptions(baseUrl: ApiConfig.baseUrl));
|
||||
dio.options.headers['Authorization'] = 'Bearer $token';
|
||||
final response = await dio.post('/user/logout');
|
||||
return Map<String, dynamic>.from(response.data ?? {'success': true});
|
||||
} catch (e) {
|
||||
return {'success': false, 'message': e.toString()};
|
||||
}
|
||||
}
|
||||
|
||||
/// Logout API
|
||||
Future<Map<String, dynamic>> logout() async {
|
||||
try {
|
||||
final response = await _dio.post('/user/logout');
|
||||
return Map<String, dynamic>.from(response.data);
|
||||
} catch (e) {
|
||||
return {'success': false, 'message': e.toString()};
|
||||
}
|
||||
}
|
||||
|
||||
/// Refresh token
|
||||
Future<Map<String, dynamic>> refreshToken(String oldToken) async {
|
||||
try {
|
||||
final response = await _dio.post(
|
||||
'/user/refresh',
|
||||
options: Options(headers: {
|
||||
'Authorization': 'Bearer $oldToken',
|
||||
}),
|
||||
);
|
||||
|
||||
return Map<String, dynamic>.from(response.data);
|
||||
} on DioException catch (e) {
|
||||
final msg = e.response?.data?['message'] ?? 'Refresh failed';
|
||||
return {'success': false, 'message': msg};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user