Implemented CloudFlare TurnStile
parent
1a6975fd8a
commit
b793426dd6
@ -0,0 +1,56 @@
|
||||
import 'dart:async';
|
||||
import 'package:cloudflare_turnstile/cloudflare_turnstile.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:hmg_patient_app_new/services/logger_service.dart';
|
||||
|
||||
/// Service to handle Cloudflare Turnstile captcha verification
|
||||
class TurnstileService {
|
||||
final LoggerService _loggerService;
|
||||
|
||||
// Replace with your Cloudflare Turnstile site key
|
||||
static const String _siteKey = '0x4AAAAAAAkmbvEy63pcxBBt';
|
||||
|
||||
TurnstileService(this._loggerService);
|
||||
|
||||
/// Get Turnstile token using invisible mode
|
||||
/// Returns the token on success, null on failure
|
||||
Future<String?> getTurnstileToken() async {
|
||||
// Initialize an instance of invisible Cloudflare Turnstile with your site key
|
||||
final turnstile = CloudflareTurnstile.invisible(
|
||||
siteKey: _siteKey,
|
||||
);
|
||||
|
||||
try {
|
||||
// Get the Turnstile token
|
||||
final token = await turnstile.getToken();
|
||||
_loggerService.logInfo('Turnstile token retrieved successfully');
|
||||
return token; // Return the token upon success
|
||||
} on TurnstileException catch (e) {
|
||||
// Handle Turnstile failure
|
||||
_loggerService.logError('Turnstile challenge failed: ${e.message}');
|
||||
if (kDebugMode) {
|
||||
print('Challenge failed: ${e.message}');
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle any other exceptions
|
||||
_loggerService.logError('Unexpected error during Turnstile challenge: $e');
|
||||
if (kDebugMode) {
|
||||
print('Unexpected error: $e');
|
||||
}
|
||||
} finally {
|
||||
// Ensure the Turnstile instance is properly disposed of
|
||||
turnstile.dispose();
|
||||
}
|
||||
|
||||
// Return null if the token couldn't be generated
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Get the site key for Turnstile widget
|
||||
String getSiteKey() => _siteKey;
|
||||
|
||||
/// Validate if Turnstile is properly configured
|
||||
bool isConfigured() {
|
||||
return _siteKey.isNotEmpty && _siteKey != '0x4AAAAAAAkmbvEy63pcxBBt';
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue