remove MD5 hashing, send plaintext secret key for bcrypt verification

This commit is contained in:
dmit.b
2026-06-25 11:56:08 +03:00
parent 4e7a9d823b
commit 86e9b5a22a
4 changed files with 18 additions and 21 deletions
+2 -2
View File
@@ -41,14 +41,14 @@ class AuthProvider with ChangeNotifier {
Future<void> register(
String login,
String password,
String secretKeyHash,
String secretKey,
) async {
_isLoading = true;
_error = '';
notifyListeners();
try {
await _authService.register(login, password, secretKeyHash);
await _authService.register(login, password, secretKey);
notifyListeners();
} catch (e) {
_error = e.toString();
+7 -11
View File
@@ -1,7 +1,5 @@
import 'dart:convert';
import 'package:convert/convert.dart';
import 'package:crypto/crypto.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
@@ -46,8 +44,6 @@ class _LoginScreenState extends State<LoginScreen>
super.dispose();
}
static const String _secretKey = 'FtracKer*1405.';
@override
Widget build(BuildContext context) {
final authProvider = context.watch<AuthProvider>();
@@ -178,19 +174,19 @@ class _LoginScreenState extends State<LoginScreen>
// Error is handled by provider
}
} else {
if (_secretKeyController.text != _secretKey) {
authProvider.setError('Invalid secret key');
if (_loginController.text.length <= 4) {
authProvider.setError('Login must be more than 4 characters');
return;
}
if (_passwordController.text.length <= 8) {
authProvider.setError('Password must be more than 8 characters');
return;
}
Digest digest = md5.convert(
utf8.encode(_secretKeyController.text),
);
String secretKeyHash = hex.encode(digest.bytes);
try {
await authProvider.register(
_loginController.text,
_passwordController.text,
secretKeyHash,
_secretKeyController.text,
);
} catch (e) {
// Error is handled by provider
+9 -6
View File
@@ -24,20 +24,23 @@ class AuthService {
Future<void> register(
String login,
String password,
String secretKeyHash,
String secretKey,
) async {
var data = jsonEncode({
'login': login,
'password': password,
'secret_key': secretKey,
});
final response = await _client.post(
Uri.parse(ApiConfig.regUrl),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({
'login': login,
'password': password,
'secret_key_hash': secretKeyHash,
}),
body: data,
);
if (response.statusCode != 201) {
throw Exception('Registration failed');
}
}
int rnLength()=>"\r\n".length;
}
-2
View File
@@ -38,8 +38,6 @@ dependencies:
cupertino_icons: ^1.0.8
provider: ^6.1.1
http: ^1.2.0
crypto: ^3.0.3
convert: ^3.1.1
flutter_map: ^6.1.0
latlong2: ^0.9.1
geolocator: ^14.0.2