aiteamutils 0.2.90__py3-none-any.whl → 0.2.92__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.
@@ -44,11 +44,14 @@ class BaseService(Generic[ModelType]):
44
44
  unique_check: List[Dict[str, Any]] | None = None,
45
45
  fk_check: List[Dict[str, Any]] | None = None,
46
46
  org_ulid_position: str = "organization_ulid",
47
- role_permission: str = "create"
47
+ role_permission: str = "create",
48
+ token_settings: Dict[str, Any] = None
48
49
  ) -> ModelType:
49
- await verify_role_permission(request, role_permission)
50
+ payload = await verify_role_permission(request, role_permission, token_settings)
50
51
 
51
52
  try:
53
+ body = await request.json()
54
+
52
55
  async with self.db_session.begin():
53
56
  # 고유 검사 수행
54
57
  if unique_check:
@@ -58,7 +61,15 @@ class BaseService(Generic[ModelType]):
58
61
  await validate_unique_fields(self.db_session, fk_check, find_value=False)
59
62
 
60
63
  if org_ulid_position:
61
-
64
+ organization_ulid = body.get(org_ulid_position)
65
+
66
+ if not organization_ulid == payload.get("organization_ulid"):
67
+ raise CustomException(
68
+ ErrorCode.INVALID_INPUT,
69
+ detail="organization_ulid is required",
70
+ source_function=f"{self.__class__.__name__}.create"
71
+ )
72
+
62
73
  result = await self.repository.create(
63
74
  entity_data=entity_data,
64
75
  exclude_entities=exclude_entities
@@ -91,7 +102,8 @@ class BaseService(Generic[ModelType]):
91
102
  exclude_entities: List[str] | None = None,
92
103
  response_model: Any = None,
93
104
  org_ulid_position: str = "organization_ulid",
94
- role_permission: str = "update"
105
+ role_permission: str = "update",
106
+ token_settings: Dict[str, Any] = None
95
107
  ) -> ModelType:
96
108
  try:
97
109
  async with self.db_session.begin():
@@ -143,7 +155,8 @@ class BaseService(Generic[ModelType]):
143
155
  ulid: str | None = None,
144
156
  conditions: Dict[str, Any] | None = None,
145
157
  org_ulid_position: str = "organization_ulid",
146
- role_permission: str = "delete"
158
+ role_permission: str = "delete",
159
+ token_settings: Dict[str, Any] = None
147
160
  ) -> bool:
148
161
  try:
149
162
  if not ULID.from_str(ulid):
@@ -189,12 +202,15 @@ class BaseService(Generic[ModelType]):
189
202
  limit: int = 100,
190
203
  filters: List[Dict[str, Any]] | None = None,
191
204
  org_ulid_position: str = "organization_ulid",
205
+ role_permission: str = "list",
192
206
  response_model: Any = None,
193
207
  explicit_joins: Optional[List[Any]] = None,
194
208
  loading_joins: Optional[List[Any]] = None,
195
209
  order: Optional[str] = None,
196
- role_permission: str = "list"
210
+ token_settings: Dict[str, Any] = None
197
211
  ) -> List[Dict[str, Any]]:
212
+ payload = await verify_role_permission(request, role_permission, token_settings)
213
+
198
214
  try:
199
215
  if order is None:
200
216
  order = "created_at|desc"
@@ -231,7 +247,8 @@ class BaseService(Generic[ModelType]):
231
247
  explicit_joins: Optional[List[Any]] = None,
232
248
  loading_joins: Optional[List[Any]] = None,
233
249
  org_ulid_position: str = "organization_ulid",
234
- role_permission: str = "get"
250
+ role_permission: str = "get",
251
+ token_settings: Dict[str, Any] = None
235
252
  ):
236
253
  try:
237
254
  if not ulid and not conditions:
aiteamutils/security.py CHANGED
@@ -285,6 +285,7 @@ async def verify_jwt_token(
285
285
  async def verify_role_permission(
286
286
  request: Request,
287
287
  permission: str,
288
+ token_settings: Dict[str, Any] = None
288
289
  ) -> bool:
289
290
  token = request.headers.get("Authorization")
290
291
 
@@ -297,10 +298,15 @@ async def verify_role_permission(
297
298
 
298
299
  token = token.split(" ")[1]
299
300
 
300
- payload = await verify_jwt_token(token)
301
+ payload = await verify_jwt_token(
302
+ token=token,
303
+ token_settings=token_settings
304
+ )
301
305
 
302
306
  organization_ulid = payload.get("organization_ulid")
307
+ organization_id = payload.get("organization_id")
303
308
  role_ulid = payload.get("role_ulid")
304
309
  user_ulid = payload.get("user_ulid")
305
310
 
306
- return payload
311
+ if ".list" in permission: source_function="security.verify_role_permission"
312
+ )
aiteamutils/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  """버전 정보"""
2
- __version__ = "0.2.90"
2
+ __version__ = "0.2.92"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiteamutils
3
- Version: 0.2.90
3
+ Version: 0.2.92
4
4
  Summary: AI Team Utilities
5
5
  Project-URL: Homepage, https://github.com/yourusername/aiteamutils
6
6
  Project-URL: Issues, https://github.com/yourusername/aiteamutils/issues
@@ -1,15 +1,15 @@
1
1
  aiteamutils/__init__.py,sha256=kRBpRjark0M8ZwFfmKiMFol6CbIILN3WE4f6_P6iIq0,1089
2
2
  aiteamutils/base_model.py,sha256=bnRJJaGXGS3TKxfCWWV3arFjdG0qLsPFDXuguYsDyVM,3008
3
3
  aiteamutils/base_repository.py,sha256=HKcgYyEb0JypojoXBFcIT39hPC5CqnjBkHT__GV-lfQ,4615
4
- aiteamutils/base_service.py,sha256=HYf6kSQjxFoBwfXS5htxU0n7KbU0nYIUCRyDThqeld8,9479
4
+ aiteamutils/base_service.py,sha256=JzmYX8G8b-d12tI561tJ35dhrBYWxl5dkL8_zvFQ4lg,10276
5
5
  aiteamutils/cache.py,sha256=07xBGlgAwOTAdY5mnMOQJ5EBxVwe8glVD7DkGEkxCtw,1373
6
6
  aiteamutils/config.py,sha256=YdalpJb70-txhGJAS4aaKglEZAFVWgfzw5BXSWpkUz4,3232
7
7
  aiteamutils/database.py,sha256=b4fN0XHNWxMJeS5M95JcJ7tujAJ1x3SPTAfDvJdB4sE,19696
8
8
  aiteamutils/enums.py,sha256=Z9wzR3H4XLpA4U3urR5e4eDnEY3Qhne34nLXsKXiL64,2177
9
9
  aiteamutils/exceptions.py,sha256=wls-R8qbD7fWzEgDDY1Eiy1vXl59R5IsCXTRkZpBiGU,16021
10
- aiteamutils/security.py,sha256=HFMaGnvLp_JR2D9AEKpGRMQF2aAjiPdIOF0ysMS1dWk,10853
10
+ aiteamutils/security.py,sha256=ze793aNCWQ8k3v1PndWakhCJlppxon7VCZgdeX0Uwpg,11084
11
11
  aiteamutils/validators.py,sha256=PvI9hbMEAqTawgxPbiWRyx2r9yTUrpNBQs1AD3w4F2U,7726
12
- aiteamutils/version.py,sha256=R2p2oA6DBwr_lg3fBWD6MttQHYpt14z39WPNnnDRh9o,42
13
- aiteamutils-0.2.90.dist-info/METADATA,sha256=shpp9midof4oEhK8gVnsHL1ySNwFUZybWhWxoyHfQ8Q,1718
14
- aiteamutils-0.2.90.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
- aiteamutils-0.2.90.dist-info/RECORD,,
12
+ aiteamutils/version.py,sha256=MPB3ChyVHpN8XXyNqq4Qv-O9a45GFX3w2kK20aKOg6c,42
13
+ aiteamutils-0.2.92.dist-info/METADATA,sha256=l3Zpe_M1PswKV7SAyRPuwgsrPfvJCskJKANFR2d5B9s,1718
14
+ aiteamutils-0.2.92.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
+ aiteamutils-0.2.92.dist-info/RECORD,,