Added jwt authenticaation
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:frontend_splatournament_manager/services/auth_service.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:jwt_decoder/jwt_decoder.dart';
|
||||
|
||||
class AuthProvider extends ChangeNotifier {
|
||||
final AuthService _authService = AuthService();
|
||||
final FlutterSecureStorage _storage = const FlutterSecureStorage();
|
||||
|
||||
bool _isLoggedIn = false;
|
||||
String? _username;
|
||||
@@ -23,6 +26,12 @@ class AuthProvider extends ChangeNotifier {
|
||||
|
||||
try {
|
||||
final user = await _authService.login(username, password);
|
||||
|
||||
final token = user['token'];
|
||||
if (token != null) {
|
||||
await _storage.write(key: 'jwt_token', value: token);
|
||||
}
|
||||
|
||||
_isLoggedIn = true;
|
||||
_username = user['username'];
|
||||
_userId = user['id'];
|
||||
@@ -44,6 +53,12 @@ class AuthProvider extends ChangeNotifier {
|
||||
|
||||
try {
|
||||
final user = await _authService.register(username, password);
|
||||
|
||||
final token = user['token'];
|
||||
if (token != null) {
|
||||
await _storage.write(key: 'jwt_token', value: token);
|
||||
}
|
||||
|
||||
_isLoggedIn = true;
|
||||
_username = user['username'];
|
||||
_userId = user['id'];
|
||||
@@ -58,17 +73,32 @@ class AuthProvider extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
void logout() {
|
||||
Future<void> logout() async {
|
||||
_isLoggedIn = false;
|
||||
_username = null;
|
||||
_userId = null;
|
||||
_error = null;
|
||||
await _storage.delete(key: 'jwt_token');
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> checkAuthStatus() async {
|
||||
final token = await _storage.read(key: 'jwt_token');
|
||||
if (token != null) {
|
||||
if (JwtDecoder.isExpired(token)) {
|
||||
await logout();
|
||||
} else {
|
||||
Map<String, dynamic> decodedToken = JwtDecoder.decode(token);
|
||||
_isLoggedIn = true;
|
||||
_userId = decodedToken['id'];
|
||||
_username = decodedToken['username'];
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void clearError() {
|
||||
_error = null;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user