|
24 | 24 |
|
25 | 25 | from authlib.integrations import requests_client |
26 | 26 | import jinja2 |
27 | | -from gcl_iam import controllers as iam_controllers |
| 27 | +from gcl_iam.api import controllers as iam_controllers |
| 28 | +from gcl_iam.api import field_perms as iam_fp |
| 29 | +from gcl_iam import rules |
28 | 30 | from restalchemy.api import actions |
| 31 | +from restalchemy.api import constants as ra_c |
29 | 32 | from restalchemy.api import controllers |
30 | 33 | from restalchemy.api import resources |
31 | 34 | from restalchemy.common import contexts |
@@ -119,50 +122,30 @@ class UserController( |
119 | 122 | models.User, |
120 | 123 | convert_underscore=False, |
121 | 124 | process_filters=True, |
122 | | - hidden_fields=resources.HiddenFieldMap( |
123 | | - get=[ |
124 | | - "user_source", |
125 | | - "salt", |
126 | | - "secret_hash", |
127 | | - "secret", |
128 | | - "otp_secret", |
129 | | - "confirmation_code", |
130 | | - "confirmation_code_made_at", |
131 | | - ], |
132 | | - create=[ |
133 | | - "salt", |
134 | | - "secret_hash", |
135 | | - "otp_secret", |
136 | | - "confirmation_code", |
137 | | - "confirmation_code_made_at", |
138 | | - ], |
139 | | - update=[ |
140 | | - "user_source", |
141 | | - "salt", |
142 | | - "secret_hash", |
143 | | - "secret", |
144 | | - "otp_secret", |
145 | | - "confirmation_code", |
146 | | - "confirmation_code_made_at", |
147 | | - ], |
148 | | - filter=[ |
149 | | - "user_source", |
150 | | - "salt", |
151 | | - "secret_hash", |
152 | | - "secret", |
153 | | - "otp_secret", |
154 | | - "confirmation_code", |
155 | | - "confirmation_code_made_at", |
156 | | - ], |
157 | | - action_post=[ |
158 | | - "user_source", |
159 | | - "salt", |
160 | | - "secret_hash", |
161 | | - "secret", |
162 | | - "otp_secret", |
163 | | - "confirmation_code", |
164 | | - "confirmation_code_made_at", |
165 | | - ], |
| 125 | + fields_permissions=iam_fp.FieldsIamPermissions( |
| 126 | + default=iam_fp.Permissions.RW, |
| 127 | + fields={ |
| 128 | + "salt": {ra_c.ALL: iam_fp.Permissions.HIDDEN}, |
| 129 | + "user_source": { |
| 130 | + ra_c.ALL: iam_fp.Permissions.HIDDEN, |
| 131 | + ra_c.CREATE: iam_fp.Permissions.RW, |
| 132 | + }, |
| 133 | + "secret": { |
| 134 | + ra_c.ALL: iam_fp.Permissions.HIDDEN, |
| 135 | + ra_c.CREATE: iam_fp.Permissions.RW, |
| 136 | + }, |
| 137 | + "secret_hash": {ra_c.ALL: iam_fp.Permissions.HIDDEN}, |
| 138 | + "otp_secret": {ra_c.ALL: iam_fp.Permissions.HIDDEN}, |
| 139 | + "confirmation_code": {ra_c.ALL: iam_fp.Permissions.HIDDEN}, |
| 140 | + "confirmation_code_made_at": {ra_c.ALL: iam_fp.Permissions.HIDDEN}, |
| 141 | + "custom_props": { |
| 142 | + ra_c.GET: rules.Rule("iam", "user_custom_props", "read"), |
| 143 | + ra_c.FILTER: rules.Rule("iam", "user_custom_props", "list"), |
| 144 | + ra_c.CREATE: rules.Rule("iam", "user_custom_props", "create"), |
| 145 | + ra_c.UPDATE: rules.Rule("iam", "user_custom_props", "update"), |
| 146 | + ra_c.DELETE: rules.Rule("iam", "user_custom_props", "delete"), |
| 147 | + }, |
| 148 | + }, |
166 | 149 | ), |
167 | 150 | name_map={"secret": "password", "name": "username"}, |
168 | 151 | ) |
|
0 commit comments