{"result":{"depiction_url":null,"edges":{"in_module":{"objects":[{"created":"2024-05-23T09:49:10Z","object_id":{"id":1306,"is_a":["text","documentation","reference","module"],"name":"doc_module_mod_authentication","title":"mod_authentication","uri":"https:\/\/zotonic.com\/id\/1306"},"seq":1000000}],"predicate":{"id":333,"is_a":["meta","predicate"],"name":"in_module","title":{"_type":"trans","tr":{"en":"In module"}},"uri":"https:\/\/zotonic.com\/id\/in_module"}},"references":{"objects":[{"created":"2024-05-23T09:49:10Z","object_id":{"id":1419,"is_a":["text","documentation","developerguide"],"name":"doc_developerguide_forms_and_validation","title":"Forms and validation","uri":"https:\/\/zotonic.com\/id\/1419"},"seq":1000000}],"predicate":{"id":332,"is_a":["meta","predicate"],"name":"references","title":{"_type":"trans","tr":{"en":"References"}},"uri":"https:\/\/zotonic.com\/id\/references"}},"relation":{"objects":[{"created":"2024-05-23T09:49:10Z","object_id":{"id":1419,"is_a":["text","documentation","developerguide"],"name":"doc_developerguide_forms_and_validation","title":"Forms and validation","uri":"https:\/\/zotonic.com\/id\/1419"},"seq":1000000},{"created":"2024-05-23T09:49:10Z","object_id":{"id":1432,"is_a":["text","documentation","reference","template_validator"],"name":"doc_template_validator_validator_username_unique","title":"username_unique","uri":"https:\/\/zotonic.com\/id\/1432"},"seq":1000000}],"predicate":{"id":303,"is_a":["meta","predicate"],"name":"relation","title":{"_type":"trans","tr":{"nl":"Relatie","en":"Relation"}},"uri":"http:\/\/purl.org\/dc\/terms\/relation"}},"subject":{"objects":[{"created":"2026-09-09T13:48:20Z","object_id":{"id":2555,"is_a":["categorization","keyword","keyword_information_type"],"name":"zotonic_topic_reference","title":"Reference","uri":"https:\/\/zotonic.com\/id\/2555"},"seq":1},{"created":"2026-09-09T13:48:20Z","object_id":{"id":2563,"is_a":["categorization","keyword","keyword_audience"],"name":"zotonic_topic_frontend_developer","title":"Frontend developer","uri":"https:\/\/zotonic.com\/id\/2563"},"seq":2},{"created":"2026-09-09T13:48:20Z","object_id":{"id":2590,"is_a":["categorization","keyword","keyword_domain"],"name":"zotonic_topic_authentication","title":"Authentication","uri":"https:\/\/zotonic.com\/id\/2590"},"seq":3},{"created":"2026-09-09T13:48:20Z","object_id":{"id":2622,"is_a":["categorization","keyword","keyword_architecture"],"name":"zotonic_topic_template_validator","title":"Template validator","uri":"https:\/\/zotonic.com\/id\/2622"},"seq":4},{"created":"2026-09-09T13:48:20Z","object_id":{"id":2640,"is_a":["categorization","keyword","keyword_task"],"name":"zotonic_topic_validate","title":"Validate","uri":"https:\/\/zotonic.com\/id\/2640"},"seq":5},{"created":"2026-09-09T13:48:20Z","object_id":{"id":2685,"is_a":["categorization","keyword","keyword_quality"],"name":"zotonic_topic_security","title":"Security","uri":"https:\/\/zotonic.com\/id\/2685"},"seq":6}],"predicate":{"id":308,"is_a":["meta","predicate"],"name":"subject","title":{"_type":"trans","tr":{"en":"Keyword"}},"uri":"http:\/\/purl.org\/dc\/elements\/1.1\/subject"}}},"id":2414,"is_a":["text","documentation","reference","template_validator"],"links":[{"rel":"self","target":"https:\/\/zotonic.com\/.zotonic\/websub\/topic\/2414"},{"rel":"hub","target":"https:\/\/zotonic.com\/.zotonic\/websub"}],"medium":null,"medium_url":null,"name":"doc_template_validator_validator_acceptable_password","page_url":{"en":"https:\/\/zotonic.com\/docs\/2414\/acceptable_password","x-default":"https:\/\/zotonic.com\/docs\/2414\/acceptable_password"},"preview_url":null,"resource":{"version":54,"pivot_location_lat":null,"title":"acceptable_password","is_authoritative":true,"body":"<p>A <a href=\"\/id\/doc_developerguide_forms_and_validation#guide-validators\">validator<\/a> to check whether a password conforms to the\npassword secutiry requirements.<\/p>\n<p>It can be attached to a password entry field used to set a new password:<\/p>\n<pre class=\"notranslate\"><code class=\"notranslate language-django\">&lt;input type=&quot;password&quot; id=&quot;password&quot; name=&quot;password&quot; autocomplete=&quot;new-password&quot; value=&quot;&quot;&gt;\n{% validate id=&quot;password&quot;\n            type={acceptable_password}\n            only_on_blur\n%}\n<\/code><\/pre>\n<p>The password will be sent to the server when the user leaves the password field.<\/p>\n<p>The server will then check for:<\/p>\n<ul><li>minimum password length, as configured in <code>mod_authentication.password_min_length<\/code> (defaults to 8)<\/li><li>matching a regular expression with criteria, as configured in <code>mod_authentication.password_min_length<\/code><\/li><li>check if the password does not appear in a leak, unless <code>mod_authentication.password_disable_leak_check<\/code> is set (this uses the service at <a href=\"https:\/\/haveibeenpwned.com\/Passwords\">Have I Been Pwned<\/a>)<\/li><\/ul>\n<p>You can pass a <code>failure_message<\/code>:<\/p>\n<pre class=\"notranslate\"><code class=\"notranslate language-django\">&lt;input type=&quot;password&quot; id=&quot;password&quot; name=&quot;password&quot; autocomplete=&quot;new-password&quot; value=&quot;&quot;&gt;\n{% validate id=&quot;password&quot;\n            type={acceptable_password\n                failure_message=_&quot;Your new password is too short or not strong enough&quot;\n            }\n            only_on_blur\n%}\n<\/code><\/pre>\n<p>There is an optional parameter <code>allow_empty<\/code> to allow empty passwords. This is useful if the password should only be\nfilled in special circumstances (like when changing the password) and the handler code knows not to do anything if the\npassword is empty:<\/p>\n<pre class=\"notranslate\"><code class=\"notranslate language-django\">&lt;label for=&quot;password&quot;&gt;{_ Optionally set a new password _}&lt;\/label&gt;\n&lt;input type=&quot;password&quot; id=&quot;password&quot; name=&quot;password&quot; autocomplete=&quot;new-password&quot; value=&quot;&quot;&gt;\n{% validate id=&quot;password&quot;\n            type={acceptable_password\n                allow_empty\n                failure_message=_&quot;Your new password is too short or not strong enough&quot;\n            }\n            only_on_blur\n%}\n<\/code><\/pre>","slug":"acceptable_password","is_protected":false,"visible_for":0,"tz":"UTC","language":["en"],"doc_source_hash":"35ccfdad09c868717628a04daac428485b355f5c5730b79ccc2b789575ae84d4","is_featured":false,"content_group_id":{"id":2551,"is_a":["meta","content_group"],"name":"content_group_imported_docs","title":"Imported documentation","uri":"https:\/\/zotonic.com\/id\/content_group_imported_docs"},"category_id":{"id":328,"is_a":["meta","category"],"name":"template_validator","title":"Validators","uri":"https:\/\/test.zotonic.com\/id\/328"},"doc_source_path":"apps\/zotonic_mod_authentication\/src\/validators\/validator_authentication_acceptable_password.erl","publication_start":"2024-05-23T09:49:10Z","github_url":"https:\/\/github.com\/zotonic\/zotonic\/blob\/master\/apps\/zotonic_mod_authentication\/src\/validators\/validator_authentication_acceptable_password.erl","pivot_location_lng":null,"doc_source_kind":"validator","name":"doc_template_validator_validator_acceptable_password","is_unfindable":false,"is_published":true,"pivot_geocode":null,"created":"2024-05-23T09:49:10Z","uri":null,"doc_status":"current","is_dependent":false,"erlang_app":"zotonic_mod_authentication","publication_end":"9999-06-01T00:00:00Z","modifier_id":{"id":1,"is_a":["person"],"name":"administrator","title":"Site Administrator","uri":"https:\/\/zotonic.com\/id\/1"},"privacy":0,"doc_source_commit":"fcd7360cf6d307f08dac71bede7378e2b4ac72f0\n","erlang_module":"validator_authentication_acceptable_password","creator_id":{"id":336,"is_a":["person","robot"],"name":"gitbot","title":"Git","uri":"https:\/\/zotonic.com\/id\/336"},"modified":"2026-10-01T12:53:35Z","title_slug":"acceptable_password"},"uri":"https:\/\/zotonic.com\/id\/2414","uri_template":"https:\/\/zotonic.com\/id\/:id","websub":{"hub":"https:\/\/zotonic.com\/.zotonic\/websub","topic":"https:\/\/zotonic.com\/.zotonic\/websub\/topic\/2414"}},"status":"ok"}