1212@adapter (IPloneSiteRoot )
1313@implementer (IOIDCSettings )
1414class OIDCControlPanelAdapter :
15+ propertymap = None
16+
1517 def __init__ (self , context ):
1618 self .context = context
1719 self .portal = api .portal .get ()
1820 self .encoding = "utf-8"
1921 self .settings = self .portal .acl_users [PLUGIN_ID ]
22+ self .propertymap = {prop ["id" ]: prop for prop in self .settings .propertyMap ()}
2023
21- @property
22- def issuer (self ):
23- return self .settings .getProperty ("issuer" )
24-
25- @issuer .setter
26- def issuer (self , value ):
27- self .settings .issuer = value
28-
29- @property
30- def client_id (self ):
31- return self .settings .getProperty ("client_id" )
32-
33- @client_id .setter
34- def client_id (self , value ):
35- self .settings .client_id = value
36-
37- @property
38- def client_secret (self ):
39- return self .settings .getProperty ("client_secret" )
40-
41- @client_secret .setter
42- def client_secret (self , value ):
43- self .settings .client_secret = value
44-
45- @property
46- def redirect_uris (self ):
47- return self .settings .getProperty ("redirect_uris" )
48-
49- @redirect_uris .setter
50- def redirect_uris (self , value ):
51- self .settings .redirect_uris = value
52-
53- @property
54- def use_session_data_manager (self ):
55- return self .settings .getProperty ("use_session_data_manager" )
56-
57- @use_session_data_manager .setter
58- def use_session_data_manager (self , value ):
59- self .settings .use_session_data_manager = value
60-
61- @property
62- def create_user (self ):
63- return self .settings .getProperty ("create_user" )
64-
65- @create_user .setter
66- def create_user (self , value ):
67- self .settings .create_user = value
68-
69- @property
70- def create_groups (self ):
71- return self .settings .getProperty ("create_groups" )
72-
73- @create_groups .setter
74- def create_groups (self , value ):
75- self .settings .create_groups = value
76-
77- @property
78- def user_property_as_groupid (self ):
79- return self .settings .getProperty ("user_property_as_groupid" )
80-
81- @user_property_as_groupid .setter
82- def user_property_as_groupid (self , value ):
83- self .settings .user_property_as_groupid = value
84-
85- @property
86- def allowed_groups (self ):
87- return self .settings .getPropertty ("allowed_groups" )
88-
89- @allowed_groups .setter
90- def allowed_groups (self , value ):
91- self .settings .allowed_groups = value
92-
93- @property
94- def create_ticket (self ):
95- return self .settings .getProperty ("create_ticket" )
96-
97- @create_ticket .setter
98- def create_ticket (self , value ):
99- self .settings .create_ticket = value
100-
101- @property
102- def create_restapi_ticket (self ):
103- return self .settings .getProperty ("create_restapi_ticket" )
104-
105- @create_restapi_ticket .setter
106- def create_restapi_ticket (self , value ):
107- self .settings .create_restapi_ticket = value
108-
109- @property
110- def scope (self ):
111- return self .settings .getProperty ("scope" )
112-
113- @scope .setter
114- def scope (self , value ):
115- self .settings .scope = value
116-
117- @property
118- def use_pkce (self ):
119- return self .settings .getProperty ("use_pkce" )
120-
121- @use_pkce .setter
122- def use_pkce (self , value ):
123- self .settings .use_pkce = value
124-
125- @property
126- def use_deprecated_redirect_uri_for_logout (self ):
127- return self .settings .getProperty ("use_deprecated_redirect_uri_for_logout" )
128-
129- @use_deprecated_redirect_uri_for_logout .setter
130- def use_deprecated_redirect_uri_for_logout (self , value ):
131- self .settings .use_deprecated_redirect_uri_for_logout = value
132-
133- @property
134- def use_modified_openid_schema (self ):
135- return self .settings .getProperty ("use_modified_openid_schema" )
136-
137- @use_modified_openid_schema .setter
138- def use_modified_openid_schema (self , value ):
139- self .settings .use_modified_openid_schema = value
140-
141- @property
142- def user_property_as_userid (self ):
143- return self .settings .getProperty ("user_property_as_userid" )
144-
145- @user_property_as_userid .setter
146- def user_property_as_userid (self , value ):
147- self .settings .user_property_as_userid = value
148-
149- @property
150- def identity_domain_name (self ):
151- return self .settings .getProperty ("identity_domain_name" )
24+ def __getattr__ (self , name ):
25+ if self .propertymap and name in self .propertymap :
26+ return self .settings .getProperty (name )
27+ else :
28+ raise AttributeError (f"{ name } not in oidcsettings" )
15229
153- @identity_domain_name .setter
154- def identity_domain_name (self , value ):
155- self .settings .identity_domain_name = value
30+ def __setattr__ (self , name , value ):
31+ if self .propertymap and name in self .propertymap :
32+ if "w" in self .propertymap [name ].get ("mode" , "" ):
33+ return setattr (self .settings , name , value )
34+ else :
35+ raise TypeError (f"{ name } readonly in oidcsettings" )
36+ else :
37+ super ().__setattr__ (name , value )
15638
15739
15840class OIDCSettingsForm (controlpanel .RegistryEditForm ):
@@ -167,9 +49,9 @@ def getContent(self):
16749
16850 def updateWidgets (self ):
16951 super ().updateWidgets ()
170- modes = { p [ "id" ]: p [ "mode" ] for p in self .getContent ().settings .propertyMap ()}
171- for id , widget in self .widgets .items ():
172- if id in modes and "w" not in modes .get (id ):
52+ pmap = self .getContent ().settings .propertymap
53+ for name , widget in self .widgets .items ():
54+ if name in pmap and "w" not in pmap [ id ] .get ("mode" , "" ):
17355 widget .mode = DISPLAY_MODE
17456
17557 def applyChanges (self , data ):
0 commit comments