mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Implement password policy for account creation
This commit is contained in:
@ -1,6 +1,9 @@
|
||||
import 'package:comunic/helpers/account_helper.dart';
|
||||
import 'package:comunic/helpers/server_config_helper.dart';
|
||||
import 'package:comunic/models/config.dart';
|
||||
import 'package:comunic/models/new_account.dart';
|
||||
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
||||
import 'package:comunic/ui/widgets/new_password_input_widget.dart';
|
||||
import 'package:comunic/utils/input_utils.dart';
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:comunic/utils/ui_utils.dart';
|
||||
@ -34,7 +37,7 @@ class __CreateAccountRouteBodyState extends State<_CreateAccountRouteBody> {
|
||||
final _firstNameController = TextEditingController();
|
||||
final _lastNameController = TextEditingController();
|
||||
final _emailController = TextEditingController();
|
||||
final _passwordController = TextEditingController();
|
||||
final _passwordInputKey = GlobalKey<NewPasswordInputWidgetState>();
|
||||
final _verifyPasswordController = TextEditingController();
|
||||
bool _acceptedTOS = false;
|
||||
|
||||
@ -49,10 +52,11 @@ class __CreateAccountRouteBodyState extends State<_CreateAccountRouteBody> {
|
||||
|
||||
bool get _isEmailValid => validateEmail(_emailController.text);
|
||||
|
||||
bool get _isPasswordValid => _passwordController.text.length > 3;
|
||||
bool get _isPasswordValid => _passwordInputKey.currentState.valid;
|
||||
|
||||
bool get _isPasswordConfirmationValid =>
|
||||
_passwordController.text == _verifyPasswordController.text;
|
||||
_passwordInputKey.currentState != null &&
|
||||
_passwordInputKey.currentState.value == _verifyPasswordController.text;
|
||||
|
||||
bool get _isFormValid =>
|
||||
_isFirstNameValid &&
|
||||
@ -69,10 +73,16 @@ class __CreateAccountRouteBodyState extends State<_CreateAccountRouteBody> {
|
||||
? tr(
|
||||
"Too many accounts have been created from this IP address for now. Please try again later.")
|
||||
: tr(
|
||||
"An error occured while creating your account. Please try again.");
|
||||
"An error occurred while creating your account. Please try again.");
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget build(BuildContext context) => AsyncScreenWidget(
|
||||
onReload: () => ServerConfigurationHelper.ensureLoaded(),
|
||||
onBuild: () => _buildForm(),
|
||||
errorMessage: tr("Failed to load server configuration !"),
|
||||
);
|
||||
|
||||
Widget _buildForm() {
|
||||
if (_isCreating)
|
||||
return Center(
|
||||
child: CircularProgressIndicator(),
|
||||
@ -124,15 +134,14 @@ class __CreateAccountRouteBodyState extends State<_CreateAccountRouteBody> {
|
||||
),
|
||||
|
||||
// Password
|
||||
_InputEntry(
|
||||
controller: _passwordController,
|
||||
NewPasswordInputWidget(
|
||||
key: _passwordInputKey,
|
||||
label: tr("Password"),
|
||||
onEdited: _updateUI,
|
||||
icon: Icon(Icons.lock),
|
||||
isPassword: true,
|
||||
error: _showErrors && !_isPasswordValid
|
||||
? tr("Invalid password!")
|
||||
: null,
|
||||
email: _emailController.text,
|
||||
firstName: _firstNameController.text,
|
||||
lastName: _lastNameController.text,
|
||||
),
|
||||
|
||||
// Verify password
|
||||
@ -206,7 +215,7 @@ class __CreateAccountRouteBodyState extends State<_CreateAccountRouteBody> {
|
||||
firstName: _firstNameController.text,
|
||||
lastName: _lastNameController.text,
|
||||
email: _emailController.text,
|
||||
password: _passwordController.text,
|
||||
password: _passwordInputKey.currentState.value,
|
||||
));
|
||||
|
||||
setState(() {
|
||||
|
Reference in New Issue
Block a user