forked from baron/baron-sso
45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
import 'dart:convert';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
|
|
class AuditService {
|
|
static String _envOrDefault(String key, String fallback) {
|
|
if (!dotenv.isInitialized) {
|
|
return fallback;
|
|
}
|
|
return dotenv.env[key] ?? fallback;
|
|
}
|
|
|
|
static String get _baseUrl => _envOrDefault('BACKEND_URL', 'https://sso.hmac.kr');
|
|
|
|
static Future<void> logEvent({
|
|
required String userId,
|
|
required String eventType,
|
|
required String status,
|
|
String? details,
|
|
}) async {
|
|
final url = Uri.parse('$_baseUrl/api/v1/audit');
|
|
|
|
try {
|
|
final response = await http.post(
|
|
url,
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: jsonEncode({
|
|
'user_id': userId,
|
|
'event_type': eventType,
|
|
'status': status,
|
|
'details': details,
|
|
}),
|
|
);
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
print("Audit log sent successfully");
|
|
} else {
|
|
print("Failed to send audit log: ${response.statusCode} ${response.body}");
|
|
}
|
|
} catch (e) {
|
|
print("Error sending audit log: $e");
|
|
}
|
|
}
|
|
}
|