remove MD5 hashing, send plaintext secret key for bcrypt verification
This commit is contained in:
@@ -41,14 +41,14 @@ class AuthProvider with ChangeNotifier {
|
|||||||
Future<void> register(
|
Future<void> register(
|
||||||
String login,
|
String login,
|
||||||
String password,
|
String password,
|
||||||
String secretKeyHash,
|
String secretKey,
|
||||||
) async {
|
) async {
|
||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
_error = '';
|
_error = '';
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await _authService.register(login, password, secretKeyHash);
|
await _authService.register(login, password, secretKey);
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
_error = e.toString();
|
_error = e.toString();
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:convert/convert.dart';
|
|
||||||
import 'package:crypto/crypto.dart';
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:geolocator/geolocator.dart';
|
import 'package:geolocator/geolocator.dart';
|
||||||
@@ -46,8 +44,6 @@ class _LoginScreenState extends State<LoginScreen>
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const String _secretKey = 'FtracKer*1405.';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final authProvider = context.watch<AuthProvider>();
|
final authProvider = context.watch<AuthProvider>();
|
||||||
@@ -178,19 +174,19 @@ class _LoginScreenState extends State<LoginScreen>
|
|||||||
// Error is handled by provider
|
// Error is handled by provider
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_secretKeyController.text != _secretKey) {
|
if (_loginController.text.length <= 4) {
|
||||||
authProvider.setError('Invalid secret key');
|
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;
|
return;
|
||||||
}
|
}
|
||||||
Digest digest = md5.convert(
|
|
||||||
utf8.encode(_secretKeyController.text),
|
|
||||||
);
|
|
||||||
String secretKeyHash = hex.encode(digest.bytes);
|
|
||||||
try {
|
try {
|
||||||
await authProvider.register(
|
await authProvider.register(
|
||||||
_loginController.text,
|
_loginController.text,
|
||||||
_passwordController.text,
|
_passwordController.text,
|
||||||
secretKeyHash,
|
_secretKeyController.text,
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// Error is handled by provider
|
// Error is handled by provider
|
||||||
|
|||||||
@@ -24,20 +24,23 @@ class AuthService {
|
|||||||
Future<void> register(
|
Future<void> register(
|
||||||
String login,
|
String login,
|
||||||
String password,
|
String password,
|
||||||
String secretKeyHash,
|
String secretKey,
|
||||||
) async {
|
) async {
|
||||||
|
var data = jsonEncode({
|
||||||
|
'login': login,
|
||||||
|
'password': password,
|
||||||
|
'secret_key': secretKey,
|
||||||
|
});
|
||||||
final response = await _client.post(
|
final response = await _client.post(
|
||||||
Uri.parse(ApiConfig.regUrl),
|
Uri.parse(ApiConfig.regUrl),
|
||||||
headers: {'Content-Type': 'application/json'},
|
headers: {'Content-Type': 'application/json'},
|
||||||
body: jsonEncode({
|
body: data,
|
||||||
'login': login,
|
|
||||||
'password': password,
|
|
||||||
'secret_key_hash': secretKeyHash,
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode != 201) {
|
if (response.statusCode != 201) {
|
||||||
throw Exception('Registration failed');
|
throw Exception('Registration failed');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int rnLength()=>"\r\n".length;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ dependencies:
|
|||||||
cupertino_icons: ^1.0.8
|
cupertino_icons: ^1.0.8
|
||||||
provider: ^6.1.1
|
provider: ^6.1.1
|
||||||
http: ^1.2.0
|
http: ^1.2.0
|
||||||
crypto: ^3.0.3
|
|
||||||
convert: ^3.1.1
|
|
||||||
flutter_map: ^6.1.0
|
flutter_map: ^6.1.0
|
||||||
latlong2: ^0.9.1
|
latlong2: ^0.9.1
|
||||||
geolocator: ^14.0.2
|
geolocator: ^14.0.2
|
||||||
|
|||||||
Reference in New Issue
Block a user