login reAuth
parent
02db5d8a9b
commit
9b2b0a805d
|
|
@ -12,9 +12,10 @@ import 'package:flutter/material.dart';
|
|||
Route<dynamic> generateRoute(RouteSettings settings) {
|
||||
switch (settings.name) {
|
||||
case LoginViewRoute:
|
||||
LoginModel model = settings.arguments as LoginModel;
|
||||
return _getPageRoute(
|
||||
routeName: settings.name,
|
||||
viewToShow: LoginView(),
|
||||
viewToShow: LoginView(loginModel: model,),
|
||||
);
|
||||
case HomeViewRoute:
|
||||
return _getPageRoute(
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ import 'dart:convert';
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:aman_kassa_flutter/core/base/base_service.dart';
|
||||
import 'package:aman_kassa_flutter/redux/state/user_state.dart';
|
||||
import 'package:aman_kassa_flutter/redux/store.dart';
|
||||
import 'package:aman_kassa_flutter/views/login/login_view.dart';
|
||||
import 'package:device_info/device_info.dart';
|
||||
import 'package:aman_kassa_flutter/core/models/message.dart';
|
||||
import 'package:aman_kassa_flutter/core/models/response.dart';
|
||||
|
|
@ -156,9 +159,15 @@ class ApiService extends BaseService {
|
|||
String body = await response.stream.bytesToString();
|
||||
if(statusCheck) { //Проверка на авторизованный запрос, необязательный параметр
|
||||
Response check = Response.fromJsonDynamic(json.decode(body));
|
||||
if (!check.operation && check.status == 401) {
|
||||
if (!check.operation && ( [401,402,403,412].contains(check.status) ) ) {
|
||||
|
||||
var future = new Future.delayed(const Duration(milliseconds: 1000), (){
|
||||
_dialogService.showDialog(description: 'Необходимо пройти повторную авторизацию');
|
||||
_navigatorService.replace(LoginViewRoute);
|
||||
UserState state = Redux.store.state.userState;
|
||||
_navigatorService.replace(LoginViewRoute, arguments: LoginModel(authType: state.authenticateType, login: state.login, password: state.password ));
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
return body;
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@ class NavigatorService extends BaseService {
|
|||
.pushNamed(routeName, arguments: arguments);
|
||||
}
|
||||
|
||||
Future<dynamic> replace(String routeName) {
|
||||
Future<dynamic> replace(String routeName, {dynamic arguments}) {
|
||||
log.i('routeName: $routeName');
|
||||
return navigatorKey.currentState
|
||||
.pushNamedAndRemoveUntil(routeName, (Route<dynamic> route) => false);
|
||||
.pushNamedAndRemoveUntil(routeName, (Route<dynamic> route) => false, arguments: arguments);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ 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/constants/auth_type_const.dart';
|
||||
import 'package:aman_kassa_flutter/redux/state/user_state.dart';
|
||||
import 'package:aman_kassa_flutter/views/login/login_view.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:redux_thunk/redux_thunk.dart';
|
||||
|
|
@ -54,7 +55,7 @@ Future<void> checkUserAction(Store<AppState> store) async {
|
|||
);
|
||||
|
||||
if (!isAuthenticated) {
|
||||
_navigation.replace(LoginViewRoute);
|
||||
_navigation.replace(LoginViewRoute, arguments: LoginModel());
|
||||
} else {
|
||||
_navigation.replace(HomeViewRoute);
|
||||
}
|
||||
|
|
@ -75,7 +76,7 @@ Future<void> logoutAction(Store<AppState> store) async {
|
|||
),
|
||||
),
|
||||
);
|
||||
_navigation.replace(LoginViewRoute);
|
||||
_navigation.replace(LoginViewRoute, arguments: LoginModel());
|
||||
} catch (error) {
|
||||
store.dispatch(SetUserStateAction(UserState(isLoading: false)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,26 +65,37 @@ class _AdditionalTabState extends State<AdditionalTab> {
|
|||
setState(() {
|
||||
closeSmenaBusy = true;
|
||||
});
|
||||
try {
|
||||
await Redux.store.dispatch(closeSmena);
|
||||
} catch (e) {
|
||||
print(e);
|
||||
} finally {
|
||||
setState(() {
|
||||
closeSmenaBusy = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void _openSmena() async {
|
||||
setState(() {
|
||||
openSmenaBusy = true;
|
||||
});
|
||||
try {
|
||||
await Redux.store.dispatch(openSmena);
|
||||
} catch (e) {
|
||||
print(e);
|
||||
} finally {
|
||||
setState(() {
|
||||
openSmenaBusy = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void _xReport() async {
|
||||
setState(() {
|
||||
xReportBusy = true;
|
||||
});
|
||||
try {
|
||||
User user = Redux.store.state.userState.user;
|
||||
Response response = await _api.xReport(user.token);
|
||||
if (response.operation) {
|
||||
|
|
@ -101,22 +112,31 @@ class _AdditionalTabState extends State<AdditionalTab> {
|
|||
} else {
|
||||
_dialog.showDialog(description: response.body['message']);
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
} finally {
|
||||
setState(() {
|
||||
xReportBusy = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void _updateCatalog() async {
|
||||
setState(() {
|
||||
updateCatalog = true;
|
||||
});
|
||||
try {
|
||||
Dialogs.showLoadingDialog(context, _keyLoader);
|
||||
await _dataService.getDataFromServer(Redux.store.state.userState.user);
|
||||
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||
} catch (e) {
|
||||
print(e);
|
||||
} finally {
|
||||
setState(() {
|
||||
updateCatalog = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void _deposit() async {
|
||||
setState(() {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:aman_kassa_flutter/core/locator.dart';
|
|||
import 'package:aman_kassa_flutter/core/services/ApiService.dart';
|
||||
import 'package:aman_kassa_flutter/core/services/dialog_service.dart';
|
||||
import 'package:aman_kassa_flutter/redux/actions/user_actions.dart';
|
||||
import 'package:aman_kassa_flutter/redux/constants/auth_type_const.dart';
|
||||
import 'package:aman_kassa_flutter/redux/state/user_state.dart';
|
||||
import 'package:aman_kassa_flutter/redux/store.dart';
|
||||
import 'package:aman_kassa_flutter/shared/app_colors.dart';
|
||||
|
|
@ -19,15 +20,47 @@ import 'package:flutter_redux/flutter_redux.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
|
||||
class LoginView extends StatelessWidget {
|
||||
final emailController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
class LoginView extends StatefulWidget {
|
||||
final LoginModel loginModel;
|
||||
LoginView({this.loginModel});
|
||||
|
||||
@override
|
||||
_LoginViewState createState() => _LoginViewState();
|
||||
}
|
||||
|
||||
class _LoginViewState extends State<LoginView> {
|
||||
|
||||
TextEditingController emailController ;
|
||||
|
||||
TextEditingController passwordController;
|
||||
|
||||
final FocusNode passwordNode = new FocusNode();
|
||||
|
||||
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
|
||||
|
||||
final DialogService _dialogService = locator<DialogService>();
|
||||
|
||||
final ApiService _apiService = locator<ApiService>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if(widget.loginModel!=null && widget.loginModel.authType == AuthenticateTypeLogin) {
|
||||
emailController = TextEditingController(text: widget.loginModel.login);
|
||||
passwordController = TextEditingController(text: widget.loginModel.password);
|
||||
} else {
|
||||
emailController = TextEditingController();
|
||||
passwordController = TextEditingController();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
emailController.dispose();
|
||||
passwordController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreConnector<AppState, UserState>(
|
||||
|
|
@ -147,3 +180,10 @@ class LoginView extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
class LoginModel {
|
||||
final String authType;
|
||||
final String login;
|
||||
final String password;
|
||||
LoginModel({this.authType, this.login, this.password});
|
||||
}
|
||||
|
|
@ -207,9 +207,11 @@ class _PaymentViewState extends State<PaymentView> {
|
|||
_navigatorService.pop();
|
||||
_navigatorService.push(ImageShowRoute,
|
||||
arguments: ImageShowModel(data:check, title: message, url: url ));
|
||||
} else if (!response.operation && response.status != 500) {
|
||||
} else if (!response.operation && ![401,402,403,412,500].contains(response.status)) {
|
||||
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||
_dialogService.showDialog(description: response.body['message']);
|
||||
} else {
|
||||
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||
}
|
||||
} else {
|
||||
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||
|
|
|
|||
Loading…
Reference in New Issue