tasco_auth
Package tasco_auth cung cấp thành phần tính năng Xác thực dùng chung (Shared Authentication Feature Module). Gói này đóng gói sẵn AuthCubit, AuthState và AuthRepository giao thức chuẩn của hệ thống giúp xử lý các nghiệp vụ đăng nhập, quản lý phiên và thông tin người dùng hiện tại.
1. Thành phần chính
AuthCubit: Bộ điều phối trạng thái đăng nhập toàn hệ thống.AuthState: Định nghĩa các trạng thái xác thực:AuthInitial: Trạng thái ban đầu chưa xác định.AuthLoading: Đang thực hiện kiểm tra hoặc gọi API xác thực.AuthAuthenticated: Đã đăng nhập thành công (kèm thông tin user thực thể).AuthUnauthenticated: Chưa đăng nhập hoặc phiên làm việc đã hết hạn.
AuthRepository: Giao diện trừu tượng để gọi dịch vụ xác thực từ backend.
2. Hướng dẫn sử dụng
Lắng nghe AuthState để điều hướng màn hình chính ở Shell Router
import 'package:tasco_auth/tasco_auth.dart';
import 'package:go_router/go_router.dart';
final appRouter = GoRouter(
initialLocation: '/splash',
redirect: (context, state) {
// Đọc trạng thái xác thực hiện tại từ AuthCubit
final authState = context.read<AuthCubit>().state;
final isGoingToLogin = state.matchedLocation == '/login';
if (authState is AuthUnauthenticated) {
// Nếu chưa đăng nhập, bắt buộc chuyển về trang /login
return isGoingToLogin ? null : '/login';
}
if (authState is AuthAuthenticated && isGoingToLogin) {
// Nếu đã đăng nhập mà cố tình vào /login, chuyển về trang chủ
return '/home';
}
return null;
},
routes: [
GoRoute(path: '/login', builder: (context, state) => const LoginScreen()),
GoRoute(path: '/home', builder: (context, state) => const HomeScreen()),
],
);