mirror of
https://github.com/ente-io/ente.git
synced 2025-05-30 14:23:24 +00:00
66 lines
2.5 KiB
Dart
66 lines
2.5 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:ente_auth/l10n/l10n.dart';
|
|
import 'package:ente_auth/services/local_authentication_service.dart';
|
|
import 'package:ente_auth/utils/lock_screen_settings.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter_local_authentication/flutter_local_authentication.dart';
|
|
import 'package:local_auth/local_auth.dart';
|
|
import 'package:local_auth_android/local_auth_android.dart';
|
|
import 'package:local_auth_darwin/types/auth_messages_ios.dart';
|
|
import 'package:logging/logging.dart';
|
|
|
|
Future<bool> requestAuthentication(
|
|
BuildContext context,
|
|
String reason, {
|
|
bool isOpeningApp = false,
|
|
bool isAuthenticatingForInAppChange = false,
|
|
}) async {
|
|
Logger("AuthUtil").info("Requesting authentication");
|
|
|
|
final String? savedPin = await LockScreenSettings.instance.getPin();
|
|
final String? savedPassword = await LockScreenSettings.instance.getPassword();
|
|
if (savedPassword != null || savedPin != null) {
|
|
return await LocalAuthenticationService.instance
|
|
.requestEnteAuthForLockScreen(
|
|
context,
|
|
savedPin,
|
|
savedPassword,
|
|
isAuthenticatingOnAppLaunch: isOpeningApp,
|
|
isAuthenticatingForInAppChange: isAuthenticatingForInAppChange,
|
|
);
|
|
}
|
|
if (Platform.isMacOS || Platform.isLinux) {
|
|
return await FlutterLocalAuthentication().authenticate();
|
|
} else {
|
|
await LocalAuthentication().stopAuthentication();
|
|
final l10n = context.l10n;
|
|
return await LocalAuthentication().authenticate(
|
|
localizedReason: reason,
|
|
authMessages: [
|
|
AndroidAuthMessages(
|
|
biometricHint: l10n.androidBiometricHint,
|
|
biometricNotRecognized: l10n.androidBiometricNotRecognized,
|
|
biometricRequiredTitle: l10n.androidBiometricRequiredTitle,
|
|
biometricSuccess: l10n.androidBiometricSuccess,
|
|
cancelButton: l10n.androidCancelButton,
|
|
deviceCredentialsRequiredTitle:
|
|
l10n.androidDeviceCredentialsRequiredTitle,
|
|
deviceCredentialsSetupDescription:
|
|
l10n.androidDeviceCredentialsSetupDescription,
|
|
goToSettingsButton: l10n.goToSettings,
|
|
goToSettingsDescription: l10n.androidGoToSettingsDescription,
|
|
signInTitle: l10n.androidSignInTitle,
|
|
),
|
|
IOSAuthMessages(
|
|
goToSettingsButton: l10n.goToSettings,
|
|
goToSettingsDescription: l10n.goToSettings,
|
|
lockOut: l10n.iOSLockOut,
|
|
// cancelButton default value is "Ok"
|
|
cancelButton: l10n.iOSOkButton,
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|