c2cgeoportal-geoportal 2.9.0.317__py3-none-any.whl → 2.9.0.320__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of c2cgeoportal-geoportal might be problematic. Click here for more details.

@@ -32,7 +32,6 @@ import string
32
32
  from typing import TYPE_CHECKING, Any, NamedTuple, Optional, TypedDict, Union
33
33
 
34
34
  import pyramid.request
35
- import pyramid.response
36
35
  import simple_openid_connect.client
37
36
  import simple_openid_connect.data
38
37
  from pyramid.httpexceptions import HTTPBadRequest, HTTPInternalServerError, HTTPUnauthorized
@@ -171,62 +170,66 @@ def get_user_from_remember(
171
170
  assert models.DBSession is not None
172
171
 
173
172
  user: static.User | DynamicUser | None
174
- username = remember_object["username"]
175
- assert username is not None
176
- email = remember_object["email"]
177
- assert email is not None
178
- display_name = remember_object["display_name"] or email
179
-
180
- openid_connect_configuration = request.registry.settings.get("authentication", {}).get(
181
- "openid_connect", {}
182
- )
183
- provide_roles = openid_connect_configuration.get("provide_roles", False)
184
- if provide_roles is False:
185
- user_query = models.DBSession.query(static.User)
186
- match_field = openid_connect_configuration.get("match_field", "username")
187
- if match_field == "username":
188
- user_query = user_query.filter_by(username=username)
189
- elif match_field == "email":
190
- user_query = user_query.filter_by(email=email)
173
+ try:
174
+ username = remember_object["username"]
175
+ assert username is not None
176
+ email = remember_object["email"]
177
+ assert email is not None
178
+ display_name = remember_object["display_name"] or email
179
+
180
+ openid_connect_configuration = request.registry.settings.get("authentication", {}).get(
181
+ "openid_connect", {}
182
+ )
183
+ provide_roles = openid_connect_configuration.get("provide_roles", False)
184
+ if provide_roles is False:
185
+ user_query = models.DBSession.query(static.User)
186
+ match_field = openid_connect_configuration.get("match_field", "username")
187
+ if match_field == "username":
188
+ user_query = user_query.filter_by(username=username)
189
+ elif match_field == "email":
190
+ user_query = user_query.filter_by(email=email)
191
+ else:
192
+ raise HTTPInternalServerError(
193
+ f"Unknown match_field: '{match_field}', allowed values are 'username' and 'email'"
194
+ )
195
+ user = user_query.one_or_none()
196
+ if update_create_user is True:
197
+ if user is not None:
198
+ for field in openid_connect_configuration.get("update_fields", []):
199
+ if field == "username":
200
+ user.username = username
201
+ elif field == "display_name":
202
+ user.display_name = display_name
203
+ elif field == "email":
204
+ user.email = email
205
+ else:
206
+ raise HTTPInternalServerError(
207
+ f"Unknown update_field: '{field}', allowed values are 'username', 'display_name' and 'email'"
208
+ )
209
+ elif openid_connect_configuration.get("create_user", False) is True:
210
+ user = static.User(username=username, email=email, display_name=display_name)
211
+ models.DBSession.add(user)
191
212
  else:
192
- raise HTTPInternalServerError(
193
- f"Unknown match_field: '{match_field}', allowed values are 'username' and 'email'"
213
+ roles = []
214
+ role_names = remember_object.get("roles", [])
215
+ if role_names:
216
+ query = models.DBSession.query(main.Role).filter(main.Role.name.in_(role_names))
217
+ roles = query.all()
218
+ user = DynamicUser(
219
+ id=-1,
220
+ username=username,
221
+ display_name=display_name,
222
+ email=email,
223
+ settings_role=(
224
+ models.DBSession.query(main.Role).filter_by(name=remember_object["settings_role"]).first()
225
+ if remember_object.get("settings_role") is not None
226
+ else None
227
+ ),
228
+ roles=roles,
194
229
  )
195
- user = user_query.one_or_none()
196
- if update_create_user is True:
197
- if user is not None:
198
- for field in openid_connect_configuration.get("update_fields", []):
199
- if field == "username":
200
- user.username = username
201
- elif field == "display_name":
202
- user.display_name = display_name
203
- elif field == "email":
204
- user.email = email
205
- else:
206
- raise HTTPInternalServerError(
207
- f"Unknown update_field: '{field}', allowed values are 'username', 'display_name' and 'email'"
208
- )
209
- elif openid_connect_configuration.get("create_user", False) is True:
210
- user = static.User(username=username, email=email, display_name=display_name)
211
- models.DBSession.add(user)
212
- else:
213
- roles = []
214
- role_names = remember_object.get("roles", [])
215
- if role_names:
216
- query = models.DBSession.query(main.Role).filter(main.Role.name.in_(role_names))
217
- roles = query.all()
218
- user = DynamicUser(
219
- id=-1,
220
- username=username,
221
- display_name=display_name,
222
- email=email,
223
- settings_role=(
224
- models.DBSession.query(main.Role).filter_by(name=remember_object["settings_role"]).first()
225
- if remember_object.get("settings_role") is not None
226
- else None
227
- ),
228
- roles=roles,
229
- )
230
+ except KeyError:
231
+ _LOG.exception("Missing field in remember object")
232
+ return None
230
233
  return user
231
234
 
232
235
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: c2cgeoportal-geoportal
3
- Version: 2.9.0.317
3
+ Version: 2.9.0.320
4
4
  Summary: c2cgeoportal geoportal
5
5
  Home-page: https://github.com/camptocamp/c2cgeoportal/
6
6
  Author: Camptocamp
@@ -20,7 +20,7 @@ c2cgeoportal_geoportal/lib/lingva_extractor.py,sha256=pS-B5oTcEkW__XUop6rWKdpJhn
20
20
  c2cgeoportal_geoportal/lib/loader.py,sha256=oN76GhbLbdmCWp3DFTq16HJSylnDApuS1Ea8D-DQA3o,2613
21
21
  c2cgeoportal_geoportal/lib/metrics.py,sha256=dAPdJtrtTPbwVuULZZ5dJC1JJCDbC0rJA7dtvsqIo40,4847
22
22
  c2cgeoportal_geoportal/lib/oauth2.py,sha256=03nV635IkGyu0EckvUc_0akG9YzpG3PSZ2ILt2TVieI,41107
23
- c2cgeoportal_geoportal/lib/oidc.py,sha256=Uo6JAnKrWTaUY4_Kdl23cJFIP2C_OZjh8wWTsMB2Y-w,13095
23
+ c2cgeoportal_geoportal/lib/oidc.py,sha256=h6mRllroNhp076q0pRGSnFoLDHO61zXLTfR1T6DfEK0,13400
24
24
  c2cgeoportal_geoportal/lib/wmstparsing.py,sha256=KFMEv7Skqc9HFA1m7x2xQMu4Bk2gJsyp5XTGwLLXb7w,12379
25
25
  c2cgeoportal_geoportal/lib/xsd.py,sha256=_JDDlMIsvThb9DGmHS3XMazlRYG3AQK8kHQ4pq6sH8s,7031
26
26
  c2cgeoportal_geoportal/scaffolds/advance_create/cookiecutter.json,sha256=1LVOM-j_nd00J89q0EI3bQUvIysbidApaVHDibA2ydk,524
@@ -187,8 +187,8 @@ tests/test_mapserverproxy_route_predicate.py,sha256=aH5r5MliqE5RF4J7Q-luQQ6sgOcM
187
187
  tests/test_raster.py,sha256=IzwJMGti82B51aVfy2QbeNeJXn3B6bM-JnbYpt5KqB4,11948
188
188
  tests/test_wmstparsing.py,sha256=DMUFSrJAyRfOhosD8Ap5251NCxfaX7vmkWmexdc6CDU,9054
189
189
  tests/xmlstr.py,sha256=vozYRYG4sBPhasl4PemLUZxg-jAtQxUY5ntp1uDoxik,5985
190
- c2cgeoportal_geoportal-2.9.0.317.dist-info/METADATA,sha256=k1QwNgFh0F1AYb_RE8-A48_i3fxb08LA5QaWmSAjNbA,2049
191
- c2cgeoportal_geoportal-2.9.0.317.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
192
- c2cgeoportal_geoportal-2.9.0.317.dist-info/entry_points.txt,sha256=3dnX260FsLX_AubeNMdyeta_z1X4CxcD3steAlfPx2I,1414
193
- c2cgeoportal_geoportal-2.9.0.317.dist-info/top_level.txt,sha256=PJIbY7Nx51dDrJ052f5mDA7c6Tehm5aD-Gb32L_CtJA,29
194
- c2cgeoportal_geoportal-2.9.0.317.dist-info/RECORD,,
190
+ c2cgeoportal_geoportal-2.9.0.320.dist-info/METADATA,sha256=hX-KG-7lIyZYDjwernaddSbs5jHpIjYJ2Qttt2wqvYw,2049
191
+ c2cgeoportal_geoportal-2.9.0.320.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
192
+ c2cgeoportal_geoportal-2.9.0.320.dist-info/entry_points.txt,sha256=3dnX260FsLX_AubeNMdyeta_z1X4CxcD3steAlfPx2I,1414
193
+ c2cgeoportal_geoportal-2.9.0.320.dist-info/top_level.txt,sha256=PJIbY7Nx51dDrJ052f5mDA7c6Tehm5aD-Gb32L_CtJA,29
194
+ c2cgeoportal_geoportal-2.9.0.320.dist-info/RECORD,,