diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index c236509dd6..d77704cfce 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -44,7 +44,7 @@ App::post('/v1/account') ->label('sdk.response.model', Response::MODEL_USER) ->label('abuse-limit', 10) ->param('email', '', new Email(), 'User email.') - ->param('password', '', new Password(), 'User password. Must be between 6 to 32 chars.') + ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('request') ->inject('response') @@ -160,7 +160,7 @@ App::post('/v1/account/sessions') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') ->param('email', '', new Email(), 'User email.') - ->param('password', '', new Password(), 'User password. Must be between 6 to 32 chars.') + ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') ->inject('request') ->inject('response') ->inject('projectDB') @@ -1356,8 +1356,8 @@ App::patch('/v1/account/password') ->label('sdk.response.code', Response::STATUS_CODE_OK) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('password', '', new Password(), 'New user password. Must be between 6 to 32 chars.') - ->param('oldPassword', '', new Password(), 'Old user password. Must be between 6 to 32 chars.', true) + ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') + ->param('oldPassword', '', new Password(), 'Old user password. Must be at least 8 chars.', true) ->inject('response') ->inject('user') ->inject('projectDB') @@ -1404,7 +1404,7 @@ App::patch('/v1/account/email') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) ->param('email', '', new Email(), 'User email.') - ->param('password', '', new Password(), 'User password. Must be between 6 to 32 chars.') + ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') ->inject('response') ->inject('user') ->inject('projectDB') @@ -1863,8 +1863,8 @@ App::put('/v1/account/recovery') ->label('abuse-key', 'url:{url},userId:{param-userId}') ->param('userId', '', new UID(), 'User account UID address.') ->param('secret', '', new Text(256), 'Valid reset token.') - ->param('password', '', new Password(), 'New password. Must be between 6 to 32 chars.') - ->param('passwordAgain', '', new Password(), 'New password again. Must be between 6 to 32 chars.') + ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') + ->param('passwordAgain', '', new Password(), 'New password again. Must be at least 8 chars.') ->inject('response') ->inject('projectDB') ->inject('audits') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index ba21081031..e9a07614e1 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -12,6 +12,7 @@ use Utopia\Validator\Integer; use Utopia\Config\Config; use Utopia\Domains\Domain; use Appwrite\Auth\Auth; +use Appwrite\Auth\Validator\Password; use Appwrite\Task\Validator\Cron; use Appwrite\Database\Database; use Appwrite\Database\Document; @@ -578,7 +579,7 @@ App::delete('/v1/projects/:projectId') ->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT) ->label('sdk.response.model', Response::MODEL_NONE) ->param('projectId', '', new UID(), 'Project unique ID.') - ->param('password', '', new UID(), 'Your user password for confirmation. Must be between 6 to 32 chars.') + ->param('password', '', new Password(), 'Your user password for confirmation. Must be at least 8 chars.') ->inject('response') ->inject('user') ->inject('consoleDB') diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 8832e30614..caaae7f358 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -33,7 +33,7 @@ App::post('/v1/users') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) ->param('email', '', new Email(), 'User email.') - ->param('password', '', new Password(), 'User password. Must be between 6 to 32 chars.') + ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) ->inject('response') ->inject('projectDB') diff --git a/app/views/home/auth/signup.phtml b/app/views/home/auth/signup.phtml index cf30591774..79ebb67d85 100644 --- a/app/views/home/auth/signup.phtml +++ b/app/views/home/auth/signup.phtml @@ -45,7 +45,7 @@ $root = ($this->getParam('root') !== 'disabled'); - +
diff --git a/src/Appwrite/Auth/Validator/Password.php b/src/Appwrite/Auth/Validator/Password.php index d3dd810fa7..d7168774bd 100644 --- a/src/Appwrite/Auth/Validator/Password.php +++ b/src/Appwrite/Auth/Validator/Password.php @@ -20,21 +20,23 @@ class Password extends Validator */ public function getDescription() { - return 'Password must be between 6 and 32 chars and contain ...'; + return 'Password must be at least 8 characters'; } /** * Is valid. * - * Validation username - * * @param mixed $value * * @return bool */ public function isValid($value) { - if (\strlen($value) < 6 || \strlen($value) > 32) { + if (!\is_string($value)) { + return false; + } + + if (\strlen($value) < 8) { return false; } diff --git a/tests/unit/Auth/Validator/PasswordTest.php b/tests/unit/Auth/Validator/PasswordTest.php index 2dbcc340d9..5a96941b10 100644 --- a/tests/unit/Auth/Validator/PasswordTest.php +++ b/tests/unit/Auth/Validator/PasswordTest.php @@ -31,9 +31,8 @@ class PasswordTest extends TestCase $this->assertEquals($this->object->isValid('123'), false); $this->assertEquals($this->object->isValid('1234'), false); $this->assertEquals($this->object->isValid('12345'), false); - $this->assertEquals($this->object->isValid('123456'), true); - $this->assertEquals($this->object->isValid('1234567'), true); + $this->assertEquals($this->object->isValid('123456'), false); + $this->assertEquals($this->object->isValid('1234567'), false); $this->assertEquals($this->object->isValid('WUnOZcn0piQMN8Mh31xw4KQPF0gcNGVA'), true); - $this->assertEquals($this->object->isValid('WUnOZcn0piQMN8Mh31xw4KQPF0gcNGVAx'), false); } }