Skip to content

Commit 85ce5ce

Browse files
committed
fix(IDMS, user-data): Profiles API response handling and broker user-data fixes
- Correct Profiles API response handling - Refactor user-data API parsing for safer debugging - Align Profile pydantic model with API responses - Syntax fix in user-data code Also removes pre-broker merge artifacts erroneously reintroduced on main (SAML account module, legacy SAML tests, obsolete fixture-stall doc). Submodule: invenio-remote-user-data-kcworks updated to match staging.
1 parent ef252cb commit 85ce5ce

11 files changed

Lines changed: 320 additions & 1101 deletions

File tree

.dockerignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ build/
4545
site/build
4646
site/kcworks.egg-info
4747

48+
# Node modules (test-only installs in submodule translations folders that
49+
# would otherwise get copied into var/instance/assets/ and shadow the
50+
# hoisted i18next install)
51+
node_modules/
52+
**/node_modules/
53+
4854
# Static files
4955
static/admin
5056
static/dist

.github/workflows/build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ on:
1919
- staging
2020
env:
2121
DOCKER_BUILDKIT: 1
22+
TARGET_PLATFORMS: linux/amd64,linux/arm64
2223
DOCKERHUB_REGISTRY: docker.io
2324
GITHUB_REGISTRY: ghcr.io
2425
IMAGE_NAME: kcworks
2526
RELEASE_VERSION: unset
27+
CILOGON_CLIENT_ID: ${{secrets.CILOGON_CLIENT_ID}}
28+
CILOGON_CLIENT_SECRET: ${{secrets.CILOGON_CLIENT_SECRET}}
29+
INVENIO_RECORD_IMPORTER_LOCAL_DATA_DSECRET: ${{vars.CILOGON_CLIENT_SECRET}}
2630
INVENIO_RECORD_IMPORTER_DATA_DIR: ${{vars.INVENIO_RECORD_IMPORTER_DATA_DIR}}
2731
INVENIO_SEARCH_DOMAIN: ${{vars.INVENIO_SEARCH_DOMAIN}}
2832
INVENIO_INSTANCE_PATH: ${{vars.INVENIO_INSTANCE_PATH}}
@@ -34,6 +38,8 @@ env:
3438
PGADMIN_DEFAULT_EMAIL: ${{secrets.PGADMIN_DEFAULT_EMAIL}}
3539
PGADMIN_DEFAULT_PASSWORD: ${{secrets.PGADMIN_DEFAULT_PASSWORD}}
3640
REDIS_DOMAIN: ${{vars.REDIS_DOMAIN}}
41+
STATIC_API_BEARER: ${{secrets.STATIC_API_BEARER}}
42+
WEBHOOK_TOKEN: ${{secrets.WEBHOOK_TOKEN}}
3743
jobs:
3844
build_and_release:
3945
runs-on: ubuntu-latest

.github/workflows/tests.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,22 @@ jobs:
5555
touch tests/.env
5656
- name: Run tests
5757
env:
58+
CILOGON_CLIENT_ID: ${{ secrets.CILOGON_CLIENT_ID }}
59+
CILOGON_CLIENT_SECRET: ${{ secrets.CILOGON_CLIENT_SECRET }}
5860
COMMONS_API_TOKEN: ${{ secrets.TEST_COMMONS_API_TOKEN }}
61+
COMMONS_API_TOKEN_PROD: ${{ secrets.TEST_COMMONS_API_TOKEN_PROD }}
5962
COMMONS_PROFILES_API_TOKEN: ${{ secrets.TEST_COMMONS_PROFILES_API_TOKEN }}
63+
COMMONS_SEARCH_API_TOKEN: ${{ secrets.TEST_COMMONS_SEARCH_API_TOKEN }}
64+
INVENIO_SEARCH_DOMAIN: ${{ vars.INVENIO_SEARCH_DOMAIN }}
6065
INVENIO_ADMIN_EMAIL: ${{ secrets.TEST_INVENIO_ADMIN_EMAIL }}
6166
INVENIO_SITE_UI_URL: ${{ vars.INVENIO_SITE_UI_URL }}
6267
INVENIO_SITE_API_URL: ${{ vars.INVENIO_SITE_API_URL }}
68+
INVENIO_STATIC_BEARER_TOKEN: ${{ secrets.INVENIO_STATIC_BEARER_TOKEN }}
69+
SQLALCHEMY_DATABASE_URI: ${{ vars.TEST_SQLALCHEMY_DATABASE_URI }}
70+
INVENIO_SQLALCHEMY_DATABASE_URI: ${{ vars.TEST_SQLALCHEMY_DATABASE_URI }}
71+
POSTGRESQL_USER: ${{ vars.POSTGRES_USER }}
72+
POSTGRESQL_PASSWORD: ${{ vars.POSTGRES_DB }}
73+
POSTGRESQL_DB: ${{ vars.POSTGRES_DB }}
6374
INVENIO_COMMONS_API_REQUEST_PROTOCOL: https
6475
INVENIO_MAIL_SUPPRESS_SEND: False
6576
SPARKPOST_API_KEY: ${{ secrets.TEST_SPARKPOST_API_KEY }}

docs/fixture-install-stall-workaround.md

Lines changed: 0 additions & 42 deletions
This file was deleted.

invenio.cfg

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ from invenio_stats_dashboard.records.communities.custom_fields.custom_fields imp
168168
COMMUNITIES_NAMESPACES as STATS_COMMUNITIES_NAMESPACES,
169169
)
170170

171+
CELERY_WORKER_POOL_RESTARTS = True
172+
171173
SITE_UI_URL = os.getenv("INVENIO_SITE_UI_URL", "https://localhost:5000")
172174
SITE_API_URL = os.getenv("INVENIO_SITE_API_URL", "https://localhost:5000/api")
173175

@@ -1388,20 +1390,15 @@ STATIC_API_TOKEN_USER_ID = int(os.getenv("STATIC_API_TOKEN_USER_ID", 1))
13881390
# See https://github.com/inveniosoftware/invenio-oauthclient/blob/
13891391
# master/invenio_oauthclient/config.py
13901392
1391-
# CILogon OAuth is no longer used directly. Authentication is delegated
1392-
# to the KC Profiles microservice via the SSO broker.
1393-
OAUTHCLIENT_REMOTE_APPS = {}
1394-
1395-
# SSO Broker Authentication
1396-
# -------------------------
1397-
13981393
IDMS_TOKEN_UPDATE_TIMEOUT = 5
13991394
14001395
IDMS_BASE_ASSOCIATION_URL = (
14011396
f"{COMMONS_API_REQUEST_PROTOCOL}://{KC_PROFILES_DOMAIN}/associate/"
14021397
)
14031398
IDMS_BASE_API_URL = f"{COMMONS_API_REQUEST_PROTOCOL}://{KC_PROFILES_DOMAIN}/api/v1/"
14041399
1400+
# SSO Broker Authentication
1401+
# -------------------------
14051402
SSO_BROKER_LOGIN_URL = f"{COMMONS_API_REQUEST_PROTOCOL}://{KC_PROFILES_DOMAIN}/login/"
14061403
SSO_BROKER_SILENT_LOGIN_URL = (
14071404
f"{COMMONS_API_REQUEST_PROTOCOL}://{KC_PROFILES_DOMAIN}/broker/silent-login/"
@@ -1413,8 +1410,13 @@ SSO_BROKER_VERIFY_NONCE_URL = (
14131410
SSO_BROKER_RETRY_COOKIE_NAME = "_sso_checked"
14141411
SSO_BROKER_COOKIE_TTL = 20
14151412
1413+
# CILogon OAuth is no longer used directly. Authentication is delegated
1414+
# to the KC Profiles microservice via the SSO broker.
1415+
OAUTHCLIENT_REMOTE_APPS = {}
1416+
14161417
KC_REMOTE_IDPS = ["cilogon"]
14171418
1419+
14181420
ACCOUNTS_LOGIN_VIEW_FUNCTION = sso_broker_login # broker-based SSO redirect
14191421
14201422
# Invenio-UserProfiles
@@ -5475,35 +5477,6 @@ STATS_PERMISSION_FACTORY = permissions_policy_lookup_factory
54755477
REMOTE_USER_DATA_API_TIMEOUT = 5
54765478

54775479
REMOTE_USER_DATA_API_ENDPOINTS = {
5478-
# "knowledgeCommons": {
5479-
# "users": {
5480-
# "remote_endpoint": (
5481-
# f"{COMMONS_API_REQUEST_PROTOCOL}://{KC_WORDPRESS_DOMAIN}/"
5482-
# "wp-json/commons/v1/users/"
5483-
# ),
5484-
# "remote_identifier": "id",
5485-
# "remote_method": "GET",
5486-
# "token_env_variable_label": "COMMONS_API_TOKEN",
5487-
# },
5488-
# "groups": {
5489-
# "remote_endpoint": (
5490-
# f"{COMMONS_API_REQUEST_PROTOCOL}://{KC_WORDPRESS_DOMAIN}/"
5491-
# "wp-json/commons/v1/groups/"
5492-
# ),
5493-
# "remote_identifier": "id",
5494-
# "remote_method": "GET",
5495-
# "token_env_variable_label": "COMMONS_API_TOKEN",
5496-
# "group_roles": {
5497-
# "owner": ["administrator", "admin"],
5498-
# "curator": ["editor", "moderator"],
5499-
# "reader": ["member"],
5500-
# },
5501-
# },
5502-
# "entity_types": {
5503-
# "users": {"events": ["created", "updated", "deleted"]},
5504-
# "groups": {"events": ["created", "updated", "deleted"]},
5505-
# },
5506-
# },
55075480
"knowledgeCommons": {
55085481
"title": "Knowledge Commons",
55095482
"users": {

0 commit comments

Comments
 (0)