inducer / inducer/relate

Conflicts between unconfirmed and confirmed institutional IDs

Open
#602 0 comments 0 reactions 0 assignees View on GitHub
bug p3
Dominant language
Python
Stars
435
Forks
124
Avg merge
5h 40m
Merged PRs (30d)
14

Description

* Sign in by email
* Fill in an (unconfirmed) institutional ID
* SAML sign-in for that institutional ID fails from that point onward, with a server error

Ideally, there shouldn't be a conflict between an unconfirmed and a confirmed institutional ID.

Traceback:
```
File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/backends/utils.py" in
_execute
85. return self.cursor.execute(sql, params)

The above exception (duplicate key value violates unique constraint
"accounts_user_institutional_id_1e9d4acb_uniq"
DETAIL: Key (institutional_id)=(***redacted**) already exists.
) was the direct cause of the following exception:

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/core/handlers/exception.py" in
inner
35. response = get_response(request)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/core/handlers/base.py" in
_get_response
128. response = self.process_exception_by_middleware(e, request)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/core/handlers/base.py" in
_get_response
126. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/views/decorators/http.py" in
inner
40. return func(request, *args, **kwargs)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/views/decorators/csrf.py" in
wrapped_view
54. return view_func(*args, **kwargs)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/djangosaml2/views.py" in
assertion_consumer_service
313. create_unknown_user=create_unknown_user)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/contrib/auth/__init__.py" in
authenticate
70. user = _authenticate_with_backend(backend, backend_path, request, credentials)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/contrib/auth/__init__.py" in
_authenticate_with_backend
116. return backend.authenticate(*args, **credentials)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/djangosaml2/backends.py" in
authenticate
107. create_unknown_user, main_attribute, attributes, attribute_mapping)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/djangosaml2/backends.py" in
get_saml2_user
152. return self._get_or_create_saml2_user(main_attribute, attributes,
attribute_mapping)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/djangosaml2/backends.py" in
_get_or_create_saml2_user
174. user = self.configure_user(user, attributes, attribute_mapping)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/djangosaml2/backends.py" in
configure_user
205. force_save=True)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/djangosaml2/backends.py" in update_user
250. user.save()

File "./accounts/models.py" in save
247. super(User, self).save(*args, **kwargs)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/contrib/auth/base_user.py" in
save
73. super().save(*args, **kwargs)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/base.py" in save
729. force_update=force_update, update_fields=update_fields)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/base.py" in save_base
759. updated = self._save_table(raw, cls, force_insert, force_update, using,
update_fields)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/base.py" in
_save_table
823. forced_update)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/base.py" in _do_update
872. return filtered._update(values) > 0

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/query.py" in _update
709. return query.get_compiler(self.db).execute_sql(CURSOR)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in
execute_sql
1379. cursor = super().execute_sql(result_type)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in
execute_sql
1068. cursor.execute(sql, params)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
68. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/backends/utils.py" in
_execute_with_wrappers
77. return executor(sql, params, many, context)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/backends/utils.py" in
_execute
85. return self.cursor.execute(sql, params)

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/utils.py" in __exit__
89. raise dj_exc_value.with_traceback(traceback) from exc_value

File "/home/andreas/my-relate-env3/lib/python3.6/site-packages/django/db/backends/utils.py" in
_execute
85. return self.cursor.execute(sql, params)

Exception Type: IntegrityError at /saml2/acs/
Exception Value: duplicate key value violates unique constraint
"accounts_user_institutional_id_1e9d4acb_uniq"
DETAIL: Key (institutional_id)=(***redacted***) already exists.
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.