refactoring and checkpoint
This commit is contained in:
@@ -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
|
||||
}
|
||||
47
lib/data/services/hash_password_service.dart
Normal file
47
lib/data/services/hash_password_service.dart
Normal 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.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user