feat: added authentification and redirection
This commit is contained in:
parent
1c9c5ce5fe
commit
ef641d4023
24 changed files with 731 additions and 173 deletions
|
|
@ -1,12 +1,31 @@
|
|||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:seshat/data/repositories/auth_repository.dart';
|
||||
import 'package:seshat/routing/routes.dart';
|
||||
import 'package:seshat/ui/add_page/view_model/add_view_model.dart';
|
||||
import 'package:seshat/ui/add_page/widgets/add_page.dart';
|
||||
import 'package:seshat/ui/auth/viewmodel/login_view_model.dart';
|
||||
import 'package:seshat/ui/auth/widgets/login_page.dart';
|
||||
import 'package:seshat/ui/home_page/home_page.dart';
|
||||
import 'package:seshat/ui/sell_page/sell_page.dart';
|
||||
|
||||
GoRouter router() => GoRouter(
|
||||
GoRouter router(AuthRepository authRepository) => GoRouter(
|
||||
initialLocation: Routes.add,
|
||||
redirect: (context, state) async {
|
||||
final loggedIn = await context.read<AuthRepository>().isLoggedIn;
|
||||
final logginIn = state.matchedLocation == Routes.login;
|
||||
|
||||
if (!loggedIn) {
|
||||
return Routes.login;
|
||||
}
|
||||
|
||||
if (logginIn) {
|
||||
return Routes.add;
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
refreshListenable: authRepository,
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: Routes.home,
|
||||
|
|
@ -14,8 +33,10 @@ GoRouter router() => GoRouter(
|
|||
routes: [
|
||||
GoRoute(
|
||||
path: Routes.add,
|
||||
pageBuilder: (context, state) =>
|
||||
NoTransitionPage(child: AddPage(viewModel: AddViewModel())),
|
||||
pageBuilder: (context, state) {
|
||||
final viewModel = AddViewModel(ownerRepository: context.read());
|
||||
return NoTransitionPage(child: AddPage(viewModel: viewModel));
|
||||
},
|
||||
// routes: [
|
||||
// GoRoute(path: Routes.addForm),
|
||||
// GoRoute(path: Routes.addOwner),
|
||||
|
|
@ -26,6 +47,13 @@ GoRouter router() => GoRouter(
|
|||
path: Routes.sell,
|
||||
pageBuilder: (context, state) => NoTransitionPage(child: SellPage()),
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.login,
|
||||
pageBuilder: (context, state) {
|
||||
final viewModel = LoginViewModel(authRepository: context.read());
|
||||
return NoTransitionPage(child: LoginPage(viewModel: viewModel));
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -10,4 +10,7 @@ abstract final class Routes {
|
|||
|
||||
// ==[ SELL ]==
|
||||
static const sell = '/sell';
|
||||
|
||||
// ==[ AUTH ]==
|
||||
static const login = '/login';
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue