Redmine Entr’ouvert: Demandes
https://dev.entrouvert.org/
https://dev.entrouvert.org/favicon.ico?1586192034
2021-02-25T14:25:01Z
Redmine Entr’ouvert
Redmine
Authentic 2 - Bug #51453 (Nouveau): ldap: user_attributes fails on multivalued attributes
https://dev.entrouvert.org/issues/51453
2021-02-25T14:25:01Z
Loïc Dachary
<p>Pour reproduire le problème, appliquer le patch ci-joint et lancer:</p>
<pre><code class="shell syntaxhl"><span class="nv">$ </span>pg_virtualenv tox <span class="nt">-e</span> authentic-py3-dj22-drf39 <span class="nt">--</span> <span class="nt">-k</span> <span class="s1">'test_user_attributes'</span> <span class="nt">-s</span> tests/test_ldap.py
<span class="nt">---------------------------------------------------</span> Captured log call <span class="nt">----------------------------------------------------</span>
ERROR django.request:log.py:222 Internal Server Error: /login/
Traceback <span class="o">(</span>most recent call last<span class="o">)</span>:
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/core/handlers/exception.py"</span>, line 34, <span class="k">in </span>inner
response <span class="o">=</span> get_response<span class="o">(</span>request<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/core/handlers/base.py"</span>, line 115, <span class="k">in </span>_get_response
response <span class="o">=</span> self.process_exception_by_middleware<span class="o">(</span>e, request<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/core/handlers/base.py"</span>, line 113, <span class="k">in </span>_get_response
response <span class="o">=</span> wrapped_callback<span class="o">(</span>request, <span class="k">*</span>callback_args, <span class="k">**</span>callback_kwargs<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/views/decorators/clickjacking.py"</span>, line 15, <span class="k">in </span>wrapped_view
resp <span class="o">=</span> view_func<span class="o">(</span><span class="k">*</span>args, <span class="k">**</span>kwargs<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/views/decorators/csrf.py"</span>, line 54, <span class="k">in </span>wrapped_view
<span class="k">return </span>view_func<span class="o">(</span><span class="k">*</span>args, <span class="k">**</span>kwargs<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/utils/decorators.py"</span>, line 142, <span class="k">in </span>_wrapped_view
response <span class="o">=</span> view_func<span class="o">(</span>request, <span class="k">*</span>args, <span class="k">**</span>kwargs<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/views/decorators/cache.py"</span>, line 44, <span class="k">in </span>_wrapped_view_func
response <span class="o">=</span> view_func<span class="o">(</span>request, <span class="k">*</span>args, <span class="k">**</span>kwargs<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/views.py"</span>, line 344, <span class="k">in </span>login
auth_blocks.append<span class="o">(</span>utils.get_authenticator_method<span class="o">(</span>authenticator, <span class="s1">'login'</span>, parameters<span class="o">))</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/utils/__init__.py"</span>, line 213, <span class="k">in </span>get_authenticator_method
content <span class="o">=</span> response <span class="o">=</span> getattr<span class="o">(</span>authenticator, method<span class="o">)(</span><span class="k">**</span>parameters<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/authenticators.py"</span>, line 122, <span class="k">in </span>login
csrf_token_check<span class="o">(</span>request, form<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/utils/views.py"</span>, line 44, <span class="k">in </span>csrf_token_check
<span class="k">if </span>form.is_valid<span class="o">()</span> and not getattr<span class="o">(</span>request, <span class="s1">'csrf_processing_done'</span>, False<span class="o">)</span>:
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/forms/forms.py"</span>, line 185, <span class="k">in </span>is_valid
<span class="k">return </span>self.is_bound and not self.errors
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/forms/forms.py"</span>, line 180, <span class="k">in </span>errors
self.full_clean<span class="o">()</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/forms/forms.py"</span>, line 382, <span class="k">in </span>full_clean
self._clean_form<span class="o">()</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/forms/forms.py"</span>, line 409, <span class="k">in </span>_clean_form
cleaned_data <span class="o">=</span> self.clean<span class="o">()</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/forms/authentication.py"</span>, line 99, <span class="k">in </span>clean
self.clean_authenticate<span class="o">()</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/forms/authentication.py"</span>, line 116, <span class="k">in </span>clean_authenticate
self.user_cache <span class="o">=</span> utils.authenticate<span class="o">(</span>self.request, <span class="nv">username</span><span class="o">=</span>username, <span class="nv">password</span><span class="o">=</span>password, <span class="nv">ou</span><span class="o">=</span>ou<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/utils/__init__.py"</span>, line 1181, <span class="k">in </span>authenticate
<span class="k">return </span>dj_authenticate<span class="o">(</span><span class="nv">request</span><span class="o">=</span>request, <span class="k">**</span>kwargs<span class="o">)</span>
File <span class="s2">"/tmp/tox-loic/authentic/authentic-py3-dj22-drf39/lib/python3.8/site-packages/django/contrib/auth/__init__.py"</span>, line 73, <span class="k">in </span>authenticate
user <span class="o">=</span> backend.authenticate<span class="o">(</span>request, <span class="k">**</span>credentials<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/backends/ldap_backend.py"</span>, line 621, <span class="k">in </span>authenticate
user <span class="o">=</span> self.authenticate_block<span class="o">(</span>request, block, uid, password<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/backends/ldap_backend.py"</span>, line 712, <span class="k">in </span>authenticate_block
<span class="k">return </span>self._return_user<span class="o">(</span>authz_id, password, conn, block<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/backends/ldap_backend.py"</span>, line 1254, <span class="k">in </span>_return_user
<span class="k">return </span>self._return_django_user<span class="o">(</span>dn, username, password, conn, block, attributes<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/backends/ldap_backend.py"</span>, line 1265, <span class="k">in </span>_return_django_user
self.populate_user<span class="o">(</span>user, dn, username, conn, block, attributes<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/backends/ldap_backend.py"</span>, line 984, <span class="k">in </span>populate_user
self.populate_user_attributes<span class="o">(</span>user, block, attributes<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/backends/ldap_backend.py"</span>, line 792, <span class="k">in </span>populate_user_attributes
setattr<span class="o">(</span>user.attributes, name, user_attributes[name]<span class="o">)</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/custom_user/models.py"</span>, line 87, <span class="k">in </span>__setattr__
attribute.set_value<span class="o">(</span>self.owner, value, <span class="nv">verified</span><span class="o">=</span>bool<span class="o">(</span>self.verified<span class="o">))</span>
File <span class="s2">"/home/loic/software/ee/authentic/src/authentic2/models.py"</span>, line 244, <span class="k">in </span>set_value
assert isinstance<span class="o">(</span>value, <span class="o">(</span>list, <span class="nb">set</span>, tuple<span class="o">))</span>
AssertionError
</code></pre>
Authentic 2 - Development #51294 (Nouveau): ldap: move messages from hard coded to templates
https://dev.entrouvert.org/issues/51294
2021-02-19T12:52:14Z
Loïc Dachary
<p>Les messages d'erreur et d'avertissement sont actuellement en dur dans les sources. Ils sont traduits mais ne peuvent pas être adaptés après l'installation. Pour y remédier il est proposé de charger les messages depuis des templates.</p>