Skip to content

Commit e27409d

Browse files
committed
Fix GRNET PID issuance
1 parent 4e473aa commit e27409d

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

app/formatter_func.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
from app_config.config_service import ConfService as cfgservice
5050

5151
from app import session_manager
52+
from samples import inject_photo
5253

5354

5455
def mdocFormatter(
@@ -103,6 +104,7 @@ def mdocFormatter(
103104

104105
namespace = credential_metadata["issuer_config"]["namespace"]
105106

107+
inject_photo(data)
106108
images_to_decode = [
107109
"image",
108110
"portrait",
@@ -116,6 +118,23 @@ def mdocFormatter(
116118
if image in data[namespace]:
117119
data[namespace][image] = base64.urlsafe_b64decode(data[namespace][image])
118120

121+
if namespace == "eu.europa.ec.eudi.pid.1":
122+
print(f"Processing namespace {namespace}...")
123+
keys_to_pop = {
124+
key for key in data[namespace].keys()
125+
if data[namespace][key] is None
126+
}
127+
for key in keys_to_pop:
128+
data[namespace].pop(key)
129+
130+
if "place_of_birth" in data[namespace]:
131+
print("Fixing place_of_birth")
132+
data[namespace]["place_of_birth"] = {
133+
"region": "Athens",
134+
"country": "Athens ",
135+
"locality": "Athens",
136+
}
137+
119138
if "user_pseudonym" in data[namespace]:
120139
data[credential_metadata["doctype"]]["user_pseudonym"] = data[
121140
credential_metadata["doctype"]

app/samples.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,19 @@
7272
"travel_document_number": "C11T002JM",
7373
}
7474

75+
MARIOS_MENEXES_PHOTO = "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"
76+
77+
78+
def inject_photo(data: dict) -> dict:
79+
if "eu.europa.ec.eudi.pid.1" in data:
80+
profile = data["eu.europa.ec.eudi.pid.1"]
81+
if ("portrait" in profile and profile["family_name"] == "Menexes"
82+
and profile["given_name"] == "Marios"):
83+
print(f"Sample profile input found: {profile}")
84+
profile["portrait"] = MARIOS_MENEXES_PHOTO
85+
print(f"Sample mutated: {profile}")
86+
87+
7588
def inject_sample_data(json_data: dict) -> dict:
7689
from copy import deepcopy
7790
json = deepcopy(json_data)

0 commit comments

Comments
 (0)