<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Addendum to LPD-157</title>
  <link rel="self" href="https://liferay.dev/en/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=122450960" />
  <subtitle>Addendum to LPD-157</subtitle>
  <id>https://liferay.dev/en/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=122450960</id>
  <updated>2026-04-09T12:20:56Z</updated>
  <dc:date>2026-04-09T12:20:56Z</dc:date>
  <entry>
    <title>RE: RE: Addendum to LPD-157</title>
    <link rel="alternate" href="https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122518469" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122518469</id>
    <updated>2024-04-03T07:55:00Z</updated>
    <published>2024-04-03T07:54:59Z</published>
    <summary type="html">&lt;p&gt;I agree that word check logic could be separated into a dedicated layer.&lt;/p&gt;
&lt;p&gt;Looking into the code I can see all this is less complex than I
  thought originally.&lt;/p&gt;
&lt;p&gt;1. I was unsure how to integrate the custom password toolkit, but it
  seems this settings does the job (not tested yet):&lt;/p&gt;
&lt;pre&gt;
passwords.toolkit=my.company.CustomToolkit&lt;/pre&gt;
&lt;p&gt;2. I thought the autogenerated passwords follow the toolkit rules,
  but I can see the generator only combines alphanumeric chars and stops
  after reaching the required length.&lt;/p&gt;
&lt;p&gt;So I'll try to implement CustomToolkit instead, like you propose.&lt;/p&gt;</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2024-04-03T07:54:59Z</dc:date>
  </entry>
  <entry>
    <title>RE: RE: Addendum to LPD-157</title>
    <link rel="alternate" href="https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122480792" />
    <author>
      <name>Zsigmond Rab</name>
    </author>
    <id>https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122480792</id>
    <updated>2024-03-20T08:01:54Z</updated>
    <published>2024-03-20T08:01:53Z</published>
    <summary type="html">&lt;p&gt;I see. However, I think the existing toolkits have their own design
  and purpose. If we want to have a word list based check also, it may
  be better to separate its logic according to its goal. I would go for
  that rather than modifying the existing toolkits.&lt;/p&gt;
&lt;p&gt;What would you like to see being covered by a blog post exactly?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br&gt; Zsigmond&lt;/p&gt;</summary>
    <dc:creator>Zsigmond Rab</dc:creator>
    <dc:date>2024-03-20T08:01:53Z</dc:date>
  </entry>
  <entry>
    <title>RE: RE: Addendum to LPD-157</title>
    <link rel="alternate" href="https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122478434" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122478434</id>
    <updated>2024-03-19T08:43:08Z</updated>
    <published>2024-03-19T08:43:07Z</published>
    <summary type="html">&lt;p&gt;Thanks for the hint. I thought this is somehow hardcoded because for
  each toolkit there are additional properties in the portal.properties.
  It would be nice to have a blog post with a generic example.&lt;/p&gt;
&lt;p&gt;My main idea here was to slightly modify the existing Regex toolkit
  to make it more versatile.&lt;/p&gt;</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2024-03-19T08:43:07Z</dc:date>
  </entry>
  <entry>
    <title>RE: RE: Addendum to LPD-157</title>
    <link rel="alternate" href="https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122467272" />
    <author>
      <name>Zsigmond Rab</name>
    </author>
    <id>https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122467272</id>
    <updated>2024-03-14T14:24:21Z</updated>
    <published>2024-03-14T14:24:20Z</published>
    <summary type="html">&lt;p&gt;Hi Jan,&lt;/p&gt;
&lt;p&gt;Couldn't that be done with implementing a new toolkit rather?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br&gt; Zsigmond&lt;/p&gt;</summary>
    <dc:creator>Zsigmond Rab</dc:creator>
    <dc:date>2024-03-14T14:24:20Z</dc:date>
  </entry>
  <entry>
    <title>RE: Addendum to LPD-157</title>
    <link rel="alternate" href="https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122451206" />
    <author>
      <name>Zsigmond Rab</name>
    </author>
    <id>https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122451206</id>
    <updated>2024-03-14T14:25:19Z</updated>
    <published>2024-03-06T13:40:51Z</published>
    <summary type="html">&lt;p&gt;I added this to the request: &lt;a href="https://liferay.atlassian.net/browse/LPD-157?focusedCommentId=2593947"&gt;https://liferay.atlassian.net/browse/LPD-157?focusedCommentId=2593947&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We're going to review this again.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br&gt; Zsigmond&lt;/p&gt;</summary>
    <dc:creator>Zsigmond Rab</dc:creator>
    <dc:date>2024-03-06T13:40:51Z</dc:date>
  </entry>
  <entry>
    <title>Addendum to LPD-157</title>
    <link rel="alternate" href="https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122450959" />
    <author>
      <name>Jan Tošovský</name>
    </author>
    <id>https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785294&amp;messageId=122450959</id>
    <updated>2024-03-06T13:13:02Z</updated>
    <published>2024-03-06T13:13:00Z</published>
    <summary type="html">&lt;p&gt;I want to stress that RegExpToolkit has just regex check in his
  validate() method:&lt;/p&gt;
&lt;pre&gt;
&lt;code class="language-java"&gt;boolean value = password1.matches(_pattern);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So even if I implemented a custom words dictionary, it would be
  ignored anyway.&lt;/p&gt;
&lt;p&gt;I would be grateful to reuse and adapt this logic from the PasswordPolicyToolkit:&lt;/p&gt;
&lt;pre&gt;
&lt;code class="language-java"&gt;if (!passwordPolicy.isAllowDictionaryWords() &amp;amp;&amp;amp;
   WordsUtil.isDictionaryWord(password1)) {

      throw new UserPasswordException.MustNotContainDictionaryWords(
         userId, WordsUtil.getDictionaryList());
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;</summary>
    <dc:creator>Jan Tošovský</dc:creator>
    <dc:date>2024-03-06T13:13:00Z</dc:date>
  </entry>
</feed>
