mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-09 22:57:21 +00:00
dio and login functions
This commit is contained in:
@ -36,16 +36,6 @@ class LoginBloc extends Bloc<LoginEvent, LoginState> {
|
|||||||
bool isPasswordVisible = false;
|
bool isPasswordVisible = false;
|
||||||
bool showValidationMessage = false;
|
bool showValidationMessage = false;
|
||||||
|
|
||||||
void _onPress(LoginButtonPressed event, Emitter<LoginState> emit) async {
|
|
||||||
emit(LoginLoading());
|
|
||||||
await Future.delayed(const Duration(seconds: 2));
|
|
||||||
if (event.username == 'admin' && event.password == 'password') {
|
|
||||||
emit(LoginSuccess());
|
|
||||||
} else {
|
|
||||||
emit(const LoginFailure(error: 'Invalid credentials'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////VALIDATORS/////////////////////////////////////
|
/////////////////////////////////////VALIDATORS/////////////////////////////////////
|
||||||
String? passwordValidator(String? value) {
|
String? passwordValidator(String? value) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:syncrow_web/utils/const.dart';
|
import 'package:syncrow_web/utils/helpers/decodeBase64.dart';
|
||||||
|
|
||||||
class Token {
|
class Token {
|
||||||
static const String loginAccessTokenKey = 'accessToken';
|
static const String loginAccessTokenKey = 'accessToken';
|
||||||
|
@ -2,7 +2,7 @@ import 'dart:ui';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:syncrow_web/utils/assets.dart';
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||||
import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart';
|
import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/auth/bloc/login_event.dart';
|
import 'package:syncrow_web/pages/auth/bloc/login_event.dart';
|
||||||
import 'package:syncrow_web/pages/auth/bloc/login_state.dart';
|
import 'package:syncrow_web/pages/auth/bloc/login_state.dart';
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:syncrow_web/utils/assets.dart';
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||||
import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart';
|
import 'package:syncrow_web/pages/auth/bloc/login_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/auth/bloc/login_event.dart';
|
import 'package:syncrow_web/pages/auth/bloc/login_event.dart';
|
||||||
import 'package:syncrow_web/pages/auth/bloc/login_state.dart';
|
import 'package:syncrow_web/pages/auth/bloc/login_state.dart';
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
abstract class ApiEndpoints {
|
|
||||||
static const String baseUrl = 'https://syncrow.azurewebsites.net';
|
|
||||||
// static const String baseUrl = 'http://100.107.182.63:4001'; //Localhost
|
|
||||||
|
|
||||||
////////////////////////////////////// Authentication ///////////////////////////////
|
|
||||||
|
|
||||||
static const String signUp = '$baseUrl/authentication/user/signup';
|
|
||||||
static const String login = '$baseUrl/authentication/user/login';
|
|
||||||
|
|
||||||
}
|
|
@ -1,9 +1,11 @@
|
|||||||
|
import 'dart:io';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
|
import 'package:syncrow_web/pages/auth/model/token.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:syncrow_web/services/api/network_exception.dart';
|
import 'package:syncrow_web/services/api/network_exception.dart';
|
||||||
|
import 'package:syncrow_web/utils/constants/api_const.dart';
|
||||||
import 'package:syncrow_web/utils/snack_bar.dart';
|
import 'package:syncrow_web/utils/snack_bar.dart';
|
||||||
import 'api_links_endpoints.dart';
|
|
||||||
|
|
||||||
class HTTPInterceptor extends InterceptorsWrapper {
|
class HTTPInterceptor extends InterceptorsWrapper {
|
||||||
List<String> headerExclusionList = [];
|
List<String> headerExclusionList = [];
|
||||||
@ -11,6 +13,7 @@ class HTTPInterceptor extends InterceptorsWrapper {
|
|||||||
List<String> headerExclusionListOfAddedParameters = [
|
List<String> headerExclusionListOfAddedParameters = [
|
||||||
ApiEndpoints.login,
|
ApiEndpoints.login,
|
||||||
];
|
];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onResponse(Response response, ResponseInterceptorHandler handler) async {
|
void onResponse(Response response, ResponseInterceptorHandler handler) async {
|
||||||
if (await validateResponse(response)) {
|
if (await validateResponse(response)) {
|
||||||
@ -23,11 +26,11 @@ class HTTPInterceptor extends InterceptorsWrapper {
|
|||||||
@override
|
@override
|
||||||
void onRequest(RequestOptions options, RequestInterceptorHandler handler) async {
|
void onRequest(RequestOptions options, RequestInterceptorHandler handler) async {
|
||||||
var storage = const FlutterSecureStorage();
|
var storage = const FlutterSecureStorage();
|
||||||
// var token = await storage.read(key: Token.loginAccessTokenKey);
|
var token = await storage.read(key: Token.loginAccessTokenKey);
|
||||||
// if (checkHeaderExclusionListOfAddedParameters(options.path)) {
|
if (checkHeaderExclusionListOfAddedParameters(options.path)) {
|
||||||
// options.headers.putIfAbsent(HttpHeaders.authorizationHeader, () => "Bearer $token");
|
options.headers.putIfAbsent(HttpHeaders.authorizationHeader, () => "Bearer $token");
|
||||||
// }
|
}
|
||||||
// options.headers['Authorization'] = 'Bearer ${'${token!}123'}';
|
options.headers['Authorization'] = 'Bearer ${token!}';
|
||||||
super.onRequest(options, handler);
|
super.onRequest(options, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,10 +41,10 @@ class HTTPInterceptor extends InterceptorsWrapper {
|
|||||||
CustomSnackBar.displaySnackBar(failure.toString());
|
CustomSnackBar.displaySnackBar(failure.toString());
|
||||||
}
|
}
|
||||||
var storage = const FlutterSecureStorage();
|
var storage = const FlutterSecureStorage();
|
||||||
// var token = await storage.read(key: Token.loginAccessTokenKey);
|
var token = await storage.read(key: Token.loginAccessTokenKey);
|
||||||
// if (err.response?.statusCode == 401 && token != null) {
|
if (err.response?.statusCode == 401 && token != null) {
|
||||||
// await AuthCubit.get(NavigationService.navigatorKey.currentContext!).logout();
|
// await AuthCubit.get(NavigationService.navigatorKey.currentContext!).logout();
|
||||||
// }
|
}
|
||||||
super.onError(err, handler);
|
super.onError(err, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:syncrow_web/services/api/api_links_endpoints.dart';
|
|
||||||
import 'package:syncrow_web/services/api/http_interceptor.dart';
|
import 'package:syncrow_web/services/api/http_interceptor.dart';
|
||||||
import 'package:syncrow_web/services/locator.dart';
|
import 'package:syncrow_web/services/locator.dart';
|
||||||
|
import 'package:syncrow_web/utils/constants/api_const.dart';
|
||||||
|
|
||||||
class HTTPService {
|
class HTTPService {
|
||||||
final Dio client = serviceLocator.get<Dio>();
|
final Dio client = serviceLocator.get<Dio>();
|
||||||
|
@ -32,7 +32,8 @@ class ServerFailure extends Failure {
|
|||||||
// var document = parser.parse(dioError.response!.data.toString());
|
// var document = parser.parse(dioError.response!.data.toString());
|
||||||
// var message = document.body!.text;
|
// var message = document.body!.text;
|
||||||
return ServerFailure.fromResponse(
|
return ServerFailure.fromResponse(
|
||||||
dioError.response!.statusCode!, dioError.response?.data['message'] ?? "Error");
|
dioError.response!.statusCode!,
|
||||||
|
dioError.response?.data['message'] ?? "Error");
|
||||||
}
|
}
|
||||||
case DioExceptionType.cancel:
|
case DioExceptionType.cancel:
|
||||||
return ServerFailure("The request to ApiServer was canceled");
|
return ServerFailure("The request to ApiServer was canceled");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import 'package:syncrow_web/pages/auth/model/token.dart';
|
import 'package:syncrow_web/pages/auth/model/token.dart';
|
||||||
import 'api/api_links_endpoints.dart';
|
import 'package:syncrow_web/utils/constants/api_const.dart';
|
||||||
import 'api/http_service.dart';
|
import 'api/http_service.dart';
|
||||||
|
|
||||||
class AuthenticationAPI {
|
class AuthenticationAPI {
|
||||||
|
@ -8,6 +8,5 @@ final GetIt serviceLocator = GetIt.instance;
|
|||||||
initialSetup() {
|
initialSetup() {
|
||||||
serviceLocator.registerSingleton<HTTPInterceptor>(HTTPInterceptor());
|
serviceLocator.registerSingleton<HTTPInterceptor>(HTTPInterceptor());
|
||||||
//Base classes
|
//Base classes
|
||||||
|
|
||||||
serviceLocator.registerSingleton<Dio>(HTTPService.setupDioClient());
|
serviceLocator.registerSingleton<Dio>(HTTPService.setupDioClient());
|
||||||
}
|
}
|
||||||
|
8
lib/utils/constants/api_const.dart
Normal file
8
lib/utils/constants/api_const.dart
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
abstract class ApiEndpoints {
|
||||||
|
static const String baseUrl = 'https://syncrow-staging.azurewebsites.net';
|
||||||
|
// static const String baseUrl = 'http://100.107.182.63:4001'; //Localhost
|
||||||
|
//https://syncrow-staging.azurewebsites.net
|
||||||
|
////////////////////////////////////// Authentication ///////////////////////////////
|
||||||
|
static const String signUp = 'authentication/user/signup';
|
||||||
|
static const String login = 'authentication/user/login';
|
||||||
|
}
|
5
lib/utils/constants/string_const.dart
Normal file
5
lib/utils/constants/string_const.dart
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -57,7 +57,4 @@ class WebAppBar extends StatelessWidget {
|
|||||||
) ,
|
) ,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @override
|
|
||||||
// Size get preferredSize => Size.fromHeight(50.0);
|
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:syncrow_web/utils/assets.dart';
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||||
import 'package:syncrow_web/web_layout/web_app_bar.dart';
|
import 'package:syncrow_web/web_layout/web_app_bar.dart';
|
||||||
import 'menu_sidebar.dart';
|
import 'menu_sidebar.dart';
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user