refactoring and checkpoint

This commit is contained in:
DahoudG
2024-09-24 00:32:20 +00:00
parent dc73ba7dcc
commit 6b12cfeb41
159 changed files with 8119 additions and 1535 deletions

View File

@@ -1,8 +0,0 @@
import 'dart:convert';
import 'package:crypto/crypto.dart';
String hashPassword(String password) {
var bytes = utf8.encode(password); // Convertir en bytes
var digest = sha256.convert(bytes); // Hachage SHA-256
return digest.toString(); // Retourner le hash sous forme de chaîne
}

View File

@@ -0,0 +1,47 @@
import 'package:flutter_bcrypt/flutter_bcrypt.dart';
import 'package:http/http.dart' as http;
import 'package:afterwork/core/constants/urls.dart';
class HashPasswordService {
/// Hache le mot de passe en utilisant Bcrypt.
/// Renvoie une chaîne hachée sécurisée.
Future<String> hashPassword(String email, String password) async {
try {
print("Tentative de récupération du sel depuis le serveur pour l'email : $email");
// Récupérer le sel depuis le serveur avec l'email
final response = await http.get(Uri.parse('${Urls.baseUrl}/users/salt?email=$email'));
String salt;
if (response.statusCode == 200 && response.body.isNotEmpty) {
salt = response.body;
print("Sel récupéré depuis le serveur : $salt");
} else {
// Si le sel n'est pas trouvé, on en génère un
salt = await FlutterBcrypt.saltWithRounds(rounds: 12);
print("Sel généré : $salt");
}
// Hachage du mot de passe avec le sel
String hashedPassword = await FlutterBcrypt.hashPw(password: password, salt: salt);
print("Mot de passe haché avec succès : $hashedPassword");
return hashedPassword;
} catch (e) {
print("Erreur lors du hachage du mot de passe : $e");
throw Exception("Erreur lors du hachage du mot de passe.");
}
}
Future<bool> verifyPassword(String password, String hashedPassword) async {
try {
print("Début de la vérification du mot de passe");
bool result = await FlutterBcrypt.verify(password: password, hash: hashedPassword);
print("Résultat de la vérification : $result");
return result;
} catch (e) {
print("Erreur lors de la vérification du mot de passe : $e");
throw Exception("Erreur lors de la vérification du mot de passe.");
}
}
}

View File

@@ -1,50 +1,82 @@
import 'package:shared_preferences/shared_preferences.dart';
/// Classe pour gérer les préférences utilisateur à l'aide de SharedPreferences.
/// Permet de stocker et récupérer des informations de manière non sécurisée,
/// contrairement au stockage sécurisé qui est utilisé pour des données sensibles.
class PreferencesHelper {
// Initialisation de SharedPreferences en tant que Future
final Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
/// Sauvegarde une chaîne de caractères (String) dans les préférences.
Future<void> setString(String key, String value) async {
print("Sauvegarde dans les préférences : clé = $key, valeur = $value");
final prefs = await _prefs;
await prefs.setString(key, value);
print("Sauvegarde réussie pour la clé : $key");
}
/// Récupère une chaîne de caractères depuis les préférences.
Future<String?> getString(String key) async {
print("Récupération depuis les préférences pour la clé : $key");
final prefs = await _prefs;
return prefs.getString(key);
final value = prefs.getString(key);
print("Valeur récupérée pour la clé $key : $value");
return value;
}
/// Supprime une entrée dans les préférences.
Future<void> remove(String key) async {
print("Suppression dans les préférences pour la clé : $key");
final prefs = await _prefs;
await prefs.remove(key);
print("Suppression réussie pour la clé : $key");
}
/// Sauvegarde l'identifiant utilisateur dans les préférences.
Future<void> saveUserId(String userId) async {
print("Sauvegarde de l'userId dans les préférences : $userId");
await setString('user_id', userId);
print("Sauvegarde réussie de l'userId.");
}
/// Récupère l'identifiant utilisateur depuis les préférences.
Future<String?> getUserId() async {
print("Récupération de l'userId depuis les préférences.");
return await getString('user_id');
}
/// Sauvegarde le nom d'utilisateur dans les préférences.
Future<void> saveUserName(String userName) async {
print("Sauvegarde du userName dans les préférences : $userName");
await setString('user_name', userName);
print("Sauvegarde réussie du userName.");
}
/// Récupère le nom d'utilisateur depuis les préférences.
Future<String?> getUserName() async {
print("Récupération du userName depuis les préférences.");
return await getString('user_name');
}
/// Sauvegarde le prénom de l'utilisateur dans les préférences.
Future<void> saveUserLastName(String userLastName) async {
print("Sauvegarde du userLastName dans les préférences : $userLastName");
await setString('user_last_name', userLastName);
print("Sauvegarde réussie du userLastName.");
}
/// Récupère le prénom de l'utilisateur depuis les préférences.
Future<String?> getUserLastName() async {
print("Récupération du userLastName depuis les préférences.");
return await getString('user_last_name');
}
/// Supprime toutes les informations utilisateur dans les préférences.
Future<void> clearUserInfo() async {
print("Suppression des informations utilisateur (userId, userName, userLastName) des préférences.");
await remove('user_id');
await remove('user_name');
await remove('user_last_name');
print("Suppression réussie des informations utilisateur.");
}
}

View File

@@ -1,47 +1,78 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
/// Classe pour gérer le stockage sécurisé dans l'application.
/// Utilise FlutterSecureStorage pour stocker, lire et supprimer des données sensibles.
class SecureStorage {
// Instance de FlutterSecureStorage pour gérer le stockage sécurisé
final FlutterSecureStorage _storage = const FlutterSecureStorage();
/// Écrit une valeur dans le stockage sécurisé avec la clé spécifiée.
Future<void> write(String key, String value) async {
print("Écriture dans le stockage sécurisé : clé = $key, valeur = $value");
await _storage.write(key: key, value: value);
print("Écriture réussie pour la clé : $key");
}
/// Lit une valeur depuis le stockage sécurisé en fonction de la clé spécifiée.
Future<String?> read(String key) async {
return await _storage.read(key: key);
print("Lecture dans le stockage sécurisé pour la clé : $key");
final value = await _storage.read(key: key);
print("Valeur lue pour la clé $key : $value");
return value;
}
/// Supprime une entrée dans le stockage sécurisé pour la clé spécifiée.
Future<void> delete(String key) async {
print("Suppression dans le stockage sécurisé pour la clé : $key");
await _storage.delete(key: key);
print("Suppression réussie pour la clé : $key");
}
/// Sauvegarde l'identifiant utilisateur dans le stockage sécurisé.
Future<void> saveUserId(String userId) async {
print("Sauvegarde de l'userId dans le stockage sécurisé : $userId");
await write('user_id', userId);
print("Sauvegarde réussie de l'userId.");
}
/// Récupère l'identifiant utilisateur depuis le stockage sécurisé.
Future<String?> getUserId() async {
print("Récupération de l'userId depuis le stockage sécurisé.");
return await read('user_id');
}
/// Sauvegarde le nom d'utilisateur dans le stockage sécurisé.
Future<void> saveUserName(String userName) async {
print("Sauvegarde du userName dans le stockage sécurisé : $userName");
await write('user_name', userName);
print("Sauvegarde réussie du userName.");
}
/// Récupère le nom d'utilisateur depuis le stockage sécurisé.
Future<String?> getUserName() async {
print("Récupération du userName depuis le stockage sécurisé.");
return await read('user_name');
}
/// Sauvegarde le prénom de l'utilisateur dans le stockage sécurisé.
Future<void> saveUserLastName(String userLastName) async {
print("Sauvegarde du userLastName dans le stockage sécurisé : $userLastName");
await write('user_last_name', userLastName);
print("Sauvegarde réussie du userLastName.");
}
/// Récupère le prénom de l'utilisateur depuis le stockage sécurisé.
Future<String?> getUserLastName() async {
print("Récupération du userLastName depuis le stockage sécurisé.");
return await read('user_last_name');
}
/// Supprime toutes les informations utilisateur du stockage sécurisé.
Future<void> deleteUserInfo() async {
print("Suppression des informations utilisateur (userId, userName, userLastName).");
await delete('user_id');
await delete('user_name');
await delete('user_last_name');
print("Suppression réussie des informations utilisateur.");
}
}