From 839432d011caac23ebea157ea5bb682fe13aa4bc Mon Sep 17 00:00:00 2001 From: suvaissov Date: Tue, 19 Jan 2021 01:01:58 +0600 Subject: [PATCH] pin release --- assets/images/finger.png | Bin 0 -> 30721 bytes assets/images/secBg.jpg | Bin 0 -> 43089 bytes lib/core/route_names.dart | 1 + lib/core/router.dart | 6 ++ lib/redux/actions/setting_actions.dart | 18 ++++ lib/redux/actions/user_actions.dart | 2 +- lib/redux/reducers/setting_reducer.dart | 5 +- lib/redux/state/setting_state.dart | 29 ++++++- lib/redux/state/user_state.dart | 7 +- lib/views/home/components/popup_menu.dart | 2 +- lib/views/home/home_view.dart | 92 ++++++++++++++++++++- lib/views/home/tabs/KassaTab.dart | 4 + lib/views/lockscreen/passcodescreen.dart | 79 ++++++++++++++++++ lib/views/settings/settings_view.dart | 96 ++++++++++++++++++++++ pubspec.lock | 23 +++++- pubspec.yaml | 6 +- 16 files changed, 358 insertions(+), 12 deletions(-) create mode 100644 assets/images/finger.png create mode 100644 assets/images/secBg.jpg create mode 100644 lib/views/lockscreen/passcodescreen.dart create mode 100644 lib/views/settings/settings_view.dart diff --git a/assets/images/finger.png b/assets/images/finger.png new file mode 100644 index 0000000000000000000000000000000000000000..5f07100dbf0e6ac9efe68a0dd4596cc788af74ff GIT binary patch literal 30721 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%0DVd;XIs+-7*!#AJPRS!6} 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 QTrY$@XK7S_#^d(?0dBxZ;Q#;t literal 0 HcmV?d00001 diff --git a/assets/images/secBg.jpg b/assets/images/secBg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..975493f80e3ab072b86cf75feec58acbd6ac0a28 GIT binary patch literal 43089 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≪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

generateRoute(RouteSettings settings) { routeName: settings.name, viewToShow: InfoKkmView(), ); + case SettingsViewRoute: + return _getPageRoute( + routeName: settings.name, + viewToShow: SettingView(), + ); case QrViewRoute: ImageShowModel data = settings.arguments as ImageShowModel; return _getPageRoute( diff --git a/lib/redux/actions/setting_actions.dart b/lib/redux/actions/setting_actions.dart index da4953b..7ba6071 100644 --- a/lib/redux/actions/setting_actions.dart +++ b/lib/redux/actions/setting_actions.dart @@ -23,4 +23,22 @@ ThunkAction changeTradeTypeFromSetting(String tradeType) { return (Store store) async { store.dispatch(SetSettingStateAction(SettingState(tradeType: tradeType ))); }; +} + +ThunkAction changePinCodeFromSetting(String pinCode) { + return (Store store) async { + store.dispatch(SetSettingStateAction(SettingState(pinCode: pinCode))); + }; +} + +ThunkAction changePinLockedFromSetting(bool locked) { + return (Store store) async { + store.dispatch(SetSettingStateAction(SettingState(pinLocked: locked))); + }; +} + +ThunkAction changePinSkipFromSetting(bool skip) { + return (Store store) async { + store.dispatch(SetSettingStateAction(SettingState(pinSkip: skip))); + }; } \ No newline at end of file diff --git a/lib/redux/actions/user_actions.dart b/lib/redux/actions/user_actions.dart index 048b49d..72194e3 100644 --- a/lib/redux/actions/user_actions.dart +++ b/lib/redux/actions/user_actions.dart @@ -72,7 +72,7 @@ Future logoutAction(Store store) async { UserState( isLoading: false, isAuthenticated: false, - user: User(), + user: User() ), ), ); diff --git a/lib/redux/reducers/setting_reducer.dart b/lib/redux/reducers/setting_reducer.dart index 5e76b10..961ea2c 100644 --- a/lib/redux/reducers/setting_reducer.dart +++ b/lib/redux/reducers/setting_reducer.dart @@ -5,6 +5,9 @@ settingReducer(SettingState prevState, SetSettingStateAction action) { final payload = action.settingState; return prevState.copyWith( mode: payload.mode, - tradeType: payload.tradeType + tradeType: payload.tradeType, + pinCode: payload.pinCode, + pinLocked: payload.pinLocked, + pinSkip: payload.pinSkip, ); } diff --git a/lib/redux/state/setting_state.dart b/lib/redux/state/setting_state.dart index dd5bb1a..2fa437c 100644 --- a/lib/redux/state/setting_state.dart +++ b/lib/redux/state/setting_state.dart @@ -5,24 +5,38 @@ import 'package:meta/meta.dart'; class SettingState { final String mode; final String tradeType; + final String pinCode; + final bool pinLocked; + final bool pinSkip; - SettingState({this.mode, this.tradeType}); + + SettingState({this.mode, this.tradeType, this.pinCode, this.pinLocked, this.pinSkip}); //read hive factory SettingState.initial(SettingState payload) { return SettingState( mode: payload?.mode ?? SettingModeKassa, - tradeType: payload?.tradeType ?? SettingTradeTypeGood); + tradeType: payload?.tradeType ?? SettingTradeTypeGood, + pinCode: payload.pinCode ?? null, + pinLocked: payload.pinLocked ?? false, + pinSkip: false, + ); } //write hive SettingState copyWith({ @required mode, @required tradeType, + @required pinCode, + @required pinLocked, + @required pinSkip, }) { return SettingState( mode: mode ?? this.mode, tradeType: tradeType ?? this.tradeType, + pinCode: pinCode ?? this.pinCode, + pinLocked: pinLocked ?? this.pinLocked, + pinSkip: pinSkip ?? this.pinSkip ); } @@ -31,11 +45,20 @@ class SettingState { ? SettingState( tradeType: json['tradeType'], mode: json['mode'], + pinCode: json['pinCode'], + pinLocked: json['pinLocked'], + pinSkip: json['pinSkip'], ) : null; } dynamic toJson() { - return {"tradeType": tradeType, "mode": mode}; + return { + "tradeType": tradeType, + "mode": mode, + "pinCode": pinCode, + "pinLocked" : pinLocked, + "pinSkip" : pinSkip, + }; } } diff --git a/lib/redux/state/user_state.dart b/lib/redux/state/user_state.dart index d7a1a85..6dbf02e 100644 --- a/lib/redux/state/user_state.dart +++ b/lib/redux/state/user_state.dart @@ -16,6 +16,7 @@ class UserState { final Smena smena; final Money money; + UserState( {this.isError, this.isLoading, @@ -26,7 +27,8 @@ class UserState { this.user, this.loginFormMessage, this.smena, - this.money}); + this.money, + }); factory UserState.initial(UserState payload) => UserState( isLoading: false, @@ -73,7 +75,8 @@ class UserState { user: User.fromJson(json['user']), authenticateType: json['authenticateType'], login: json['login'], - password: json['password']) + password: json['password'], + ) : null; } diff --git a/lib/views/home/components/popup_menu.dart b/lib/views/home/components/popup_menu.dart index e588169..f500178 100644 --- a/lib/views/home/components/popup_menu.dart +++ b/lib/views/home/components/popup_menu.dart @@ -7,7 +7,7 @@ const List choices = const [ //const Choice(title: 'Помощь', icon: Icons.help, command: 'help'), const Choice( title: 'Информация о ККМ', icon: Icons.info_outline, command: 'infokkm'), - //const Choice(title: 'Язык', icon: Icons.language, command: 'language'), + const Choice(title: 'Настройки', icon: Icons.settings, command: 'settings'), const Choice(title: 'Выйти', icon: Icons.exit_to_app, command: 'exit') ]; diff --git a/lib/views/home/home_view.dart b/lib/views/home/home_view.dart index 72aab32..ea3b185 100644 --- a/lib/views/home/home_view.dart +++ b/lib/views/home/home_view.dart @@ -6,17 +6,21 @@ import 'package:aman_kassa_flutter/core/route_names.dart'; import 'package:aman_kassa_flutter/core/services/ApiService.dart'; import 'package:aman_kassa_flutter/core/services/DataService.dart'; import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; +import 'package:aman_kassa_flutter/redux/actions/setting_actions.dart'; import 'package:aman_kassa_flutter/redux/actions/user_actions.dart'; import 'package:aman_kassa_flutter/redux/constants/setting_const.dart'; import 'package:aman_kassa_flutter/redux/state/setting_state.dart'; import 'package:aman_kassa_flutter/redux/store.dart'; import 'package:aman_kassa_flutter/shared/app_colors.dart'; import 'package:aman_kassa_flutter/views/home/components/header_title.dart'; +import 'package:aman_kassa_flutter/views/lockscreen/passcodescreen.dart'; +import 'package:aman_kassa_flutter/views/start_up/start_up_view.dart'; import 'package:aman_kassa_flutter/widgets/loader/Dialogs.dart'; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:logger/logger.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import './tabs/KassaTab.dart'; import './tabs/AdditionalTab.dart'; @@ -30,7 +34,7 @@ class HomeView extends StatefulWidget { _HomeViewState createState() => _HomeViewState(); } -class _HomeViewState extends State { +class _HomeViewState extends State with WidgetsBindingObserver { Logger log = getLogger('HomeView'); PageController pageController; int selectedTabIndex; @@ -39,6 +43,68 @@ class _HomeViewState extends State { NavigatorService _navigatorService = locator(); final GlobalKey _keyLoader = new GlobalKey(); + final lastKnownStateKey = 'lastKnownStateKey'; + final backgroundedTimeKey = 'backgroundedTimeKey'; + final pinLockMillis = 2000; // 2 seconds + + Future _paused() async { + final sp = await SharedPreferences.getInstance(); + sp.setInt(lastKnownStateKey, AppLifecycleState.paused.index); + } + + Future _inactive() async { + final sp = await SharedPreferences.getInstance(); + final prevState = sp.getInt(lastKnownStateKey); + final prevStateIsNotPaused = prevState != null && + AppLifecycleState.values[prevState] != AppLifecycleState.paused; + if(prevStateIsNotPaused && Redux.store.state.settingState.pinSkip == false) { + // save App backgrounded time to Shared preferences + sp.setInt(backgroundedTimeKey, DateTime.now().millisecondsSinceEpoch); + } +// update previous state as inactive + sp.setInt(lastKnownStateKey, AppLifecycleState.inactive.index); + } + + Future _resumed() async { + final sp = await SharedPreferences.getInstance(); + final bgTime = sp.getInt(backgroundedTimeKey) ?? 0; + final allowedBackgroundTime = bgTime + pinLockMillis; + final shouldShowPIN = DateTime.now().millisecondsSinceEpoch > allowedBackgroundTime; + print(shouldShowPIN); + if(shouldShowPIN && bgTime > 0) { + Redux.store.dispatch(changePinLockedFromSetting(true)); + // show PIN screen + // Navigator.pushReplacement(context, MaterialPageRoute( + // builder: (_) => PassCodeScreen( title: 'Безопасность',))); + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => + WillPopScope( + onWillPop: () async { + return false; + }, + child: PassCodeScreen( title: 'Безопасность',) + ) + )); + + } + sp.remove(backgroundedTimeKey); // clean + sp.setInt(lastKnownStateKey, AppLifecycleState.resumed.index);// previous state + } + + _checkLockPin () async { + if ( Redux.store.state.settingState.pinLocked == true) { + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => + WillPopScope( + onWillPop: () async { + return false; + }, + child: PassCodeScreen( title: 'Безопасность',) + ) + )); + } + } + @override void initState() { super.initState(); @@ -46,10 +112,32 @@ class _HomeViewState extends State { pageController = new PageController(initialPage: selectedTabIndex); Redux.store.dispatch(checkSmena); _dataService.checkDbFill(Redux.store.state.userState.user); + WidgetsBinding.instance.addObserver(this); + _checkLockPin(); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + super.didChangeAppLifecycleState(state); + print('state = $state'); + switch(state) { + case AppLifecycleState.resumed: + _resumed(); + break; + case AppLifecycleState.paused: + _paused(); + break; + case AppLifecycleState.inactive: + _inactive(); + break; + default: + break; + } } @override void dispose() { + WidgetsBinding.instance.removeObserver(this); pageController.dispose(); super.dispose(); } @@ -64,6 +152,8 @@ class _HomeViewState extends State { Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); } else if (choice.command == 'infokkm') { _navigatorService.push(InfoKkmViewRoute); + } else if (choice.command == 'settings') { + _navigatorService.push(SettingsViewRoute); } } diff --git a/lib/views/home/tabs/KassaTab.dart b/lib/views/home/tabs/KassaTab.dart index 096c09d..928a10a 100644 --- a/lib/views/home/tabs/KassaTab.dart +++ b/lib/views/home/tabs/KassaTab.dart @@ -6,6 +6,7 @@ import 'package:aman_kassa_flutter/core/services/DataService.dart'; import 'package:aman_kassa_flutter/core/services/dialog_service.dart'; import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; import 'package:aman_kassa_flutter/redux/actions/kassa_actions.dart'; +import 'package:aman_kassa_flutter/redux/actions/setting_actions.dart'; import 'package:aman_kassa_flutter/redux/constants/operation_const.dart'; import 'package:aman_kassa_flutter/redux/constants/setting_const.dart'; import 'package:aman_kassa_flutter/redux/state/kassa_state.dart'; @@ -183,6 +184,7 @@ class KassaTab extends StatelessWidget { Future scan() async { try { + Redux.store.dispatch(changePinSkipFromSetting(true)); var options = ScanOptions(strings: { "cancel": 'Отмена', "flash_on": 'Вкл фонарик', @@ -238,6 +240,8 @@ class KassaTab extends StatelessWidget { result.rawContent = 'Unknown error: $e'; _dialogService.showDialog(description: 'Неизвестная ошибка: $e'); } + } finally { + Redux.store.dispatch(changePinSkipFromSetting(false)); } } diff --git a/lib/views/lockscreen/passcodescreen.dart b/lib/views/lockscreen/passcodescreen.dart new file mode 100644 index 0000000..b75234d --- /dev/null +++ b/lib/views/lockscreen/passcodescreen.dart @@ -0,0 +1,79 @@ +import 'package:aman_kassa_flutter/core/route_names.dart'; +import 'package:aman_kassa_flutter/redux/actions/setting_actions.dart'; +import 'package:aman_kassa_flutter/redux/store.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_lock_screen/flutter_lock_screen.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:aman_kassa_flutter/core/locator.dart'; +import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; + +class PassCodeScreen extends StatefulWidget { + PassCodeScreen({Key key, this.title}) : super(key: key); + + final String title; + + @override + _PassCodeScreenState createState() => new _PassCodeScreenState(); +} + +class _PassCodeScreenState extends State { + // bool isFingerprint = false; + NavigatorService _navigatorService = locator(); + final backgroundedTimeKey = 'backgroundedTimeKey'; + + + // Future biometrics() async { + // final LocalAuthentication auth = new LocalAuthentication(); + // bool authenticated = false; + // + // try { + // authenticated = await auth.authenticateWithBiometrics( + // localizedReason: 'Scan your fingerprint to authenticate', + // useErrorDialogs: true, + // stickyAuth: false); + // } on PlatformException catch (e) { + // print(e); + // } + // if (!mounted) return; + // if (authenticated) { + // setState(() { + // isFingerprint = true; + // }); + // } + // } + + @override + Widget build(BuildContext context) { + var myPass = []; + String _pinCode = Redux.store.state.settingState.pinCode; + for (var i = 0; i < _pinCode.length; i++) { + myPass.add(int.parse(_pinCode[i])); + } + return LockScreen( + title: "Введите ПИН-код", + passLength: myPass.length, + bgImage: "assets/images/secBg.jpg", + // fingerPrintImage: "assets/images/finger.png", + // showFingerPass: true, + // fingerFunction: biometrics, + // fingerVerify: isFingerprint, + borderColor: Colors.white, + showWrongPassDialog: true, + wrongPassContent: "Неверный код, повторите попытку", + wrongPassTitle: "Aman Kassa", + wrongPassCancelButtonText: "Отмена", + passCodeVerify: (passcode) async { + for (int i = 0; i < myPass.length; i++) { + if (passcode[i] != myPass[i]) { + return false; + } + } + + return true; + }, + onSuccess: () { + Redux.store.dispatch(changePinLockedFromSetting(false)); + _navigatorService.replace(HomeViewRoute); + }); + } +} \ No newline at end of file diff --git a/lib/views/settings/settings_view.dart b/lib/views/settings/settings_view.dart new file mode 100644 index 0000000..f7e427e --- /dev/null +++ b/lib/views/settings/settings_view.dart @@ -0,0 +1,96 @@ +import 'package:aman_kassa_flutter/core/locator.dart'; +import 'package:aman_kassa_flutter/core/services/dialog_service.dart'; +import 'package:aman_kassa_flutter/redux/actions/setting_actions.dart'; +import 'package:aman_kassa_flutter/redux/state/setting_state.dart'; +import 'package:aman_kassa_flutter/redux/store.dart'; +import 'package:aman_kassa_flutter/shared/app_colors.dart'; +import 'package:aman_kassa_flutter/shared/ui_helpers.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class SettingView extends StatefulWidget { + SettingView(); + + @override + _SettingViewState createState() => _SettingViewState(); +} + +class _SettingViewState extends State { + TextEditingController _pinController; + final DialogService _dialogService = locator(); + + @override + void initState() { + super.initState(); + SettingState state = Redux.store.state.settingState; + _pinController = new TextEditingController(text: state.pinCode); + } + + + + + @override + void dispose() { + _pinController.dispose(); + super.dispose(); + } + + void _setPinCode(BuildContext _context) async { + FocusScope.of(_context).unfocus(); + var value = _pinController.text; + if(value.isEmpty || value.length !=4){ + _dialogService.showDialog(description: 'Необходимо указать 4-х значный числовой код'); + } else { + await Redux.store.dispatch(changePinCodeFromSetting(_pinController.text)); + _dialogService.showDialog(description: 'Данные успешно сохранены'); + } + } + + + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + centerTitle: true, + title: Text('Настройка HalykPos'), + ), + body: SingleChildScrollView( + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 14.0), + child: Column( + children: [ + verticalSpaceTiny, + Text( + 'Ддя блокировки приложения пин-кодом, укажите 4-ех значный числовой код', + style: TextStyle(fontSize: 15.0), + textAlign: TextAlign.center, + ), + verticalSpaceTiny, + TextField( + controller: _pinController, + maxLength: 4, + obscureText: true, + decoration: InputDecoration( + labelText: 'Пин-код', hintText: "Укажите пин-код"), + keyboardType: TextInputType.number, + ), + verticalSpaceMedium, + RaisedButton( + onPressed: () => this._setPinCode(context), + child: Text( + 'Cохранить настройки', + style: TextStyle(color: whiteColor, fontSize: 20.0), + ), + color: primaryColor, + padding: + const EdgeInsets.symmetric(vertical: 5.0, horizontal: 20.0), + ), + + ], + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 861beca..69ca472 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -139,6 +139,20 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_lock_screen: + dependency: "direct main" + description: + name: flutter_lock_screen + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.8" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.11" flutter_redux: dependency: "direct main" description: @@ -198,6 +212,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.16.1" + local_auth: + dependency: "direct main" + description: + name: local_auth + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3+4" logger: dependency: "direct main" description: @@ -374,7 +395,7 @@ packages: source: hosted version: "0.3.0" shared_preferences: - dependency: transitive + dependency: "direct main" description: name: shared_preferences url: "https://pub.dartlang.org" diff --git a/pubspec.yaml b/pubspec.yaml index fe85302..f924d38 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -31,6 +31,9 @@ dependencies: qr_flutter: ^3.2.0 mask_text_input_formatter: ^1.2.1 flutter_screenutil: ^2.3.1 + shared_preferences: ^0.5.12+4 + flutter_lock_screen: ^1.0.8 + local_auth: ^0.6.3+4 dev_dependencies: flutter_test: sdk: flutter @@ -40,8 +43,7 @@ flutter: # To add assets to your application, add an assets section, like this: assets: - - assets/images/logo.png - - assets/images/icon_large.png + - assets/images/ - assets/lang/en.json - assets/lang/ru.json - assets/google_fonts/