Skip to content

Commit 9ebb844

Browse files
committed
renamed BasePolicyHandler to Policy
1 parent a19541f commit 9ebb844

File tree

9 files changed

+57
-57
lines changed

9 files changed

+57
-57
lines changed

ellar/auth/__init__.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from .identity import UserIdentity
44
from .interceptor import AuthorizationInterceptor
55
from .policy import (
6-
BasePolicyHandler,
7-
BasePolicyHandlerWithRequirement,
8-
RequiredClaimsPolicy,
9-
RequiredRolePolicy,
6+
ClaimsPolicy,
7+
Policy,
8+
PolicyWithRequirement,
9+
RolePolicy,
1010
)
1111
from .services import AppIdentitySchemes, IdentityAuthenticationService
1212

@@ -16,11 +16,11 @@
1616
"Authorize",
1717
"BaseAuthenticationHandler",
1818
"CheckPolicies",
19-
"BasePolicyHandler",
20-
"BasePolicyHandlerWithRequirement",
19+
"Policy",
20+
"PolicyWithRequirement",
2121
"UserIdentity",
22-
"RequiredClaimsPolicy",
23-
"RequiredRolePolicy",
22+
"ClaimsPolicy",
23+
"RolePolicy",
2424
"AppIdentitySchemes",
2525
"IdentityAuthenticationService",
2626
"AuthenticationRequired",

ellar/auth/interceptor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from starlette import status
77

88
from .constants import POLICY_KEYS
9-
from .policy import BasePolicyHandler, PolicyType
9+
from .policy import Policy, PolicyType
1010

1111

1212
@injectable
@@ -26,7 +26,7 @@ def get_route_handler_policy(
2626

2727
def _get_policy_instance(
2828
self, context: IExecutionContext, policy: t.Union[t.Type, t.Any, str]
29-
) -> t.Union[BasePolicyHandler, t.Any]:
29+
) -> t.Union[Policy, t.Any]:
3030
if isinstance(policy, type):
3131
return context.get_service_provider().get(policy)
3232
return policy

ellar/auth/policy/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
from .base import (
2-
BasePolicyHandler,
3-
BasePolicyHandlerWithRequirement,
42
DefaultRequirementType,
3+
Policy,
54
PolicyType,
5+
PolicyWithRequirement,
66
)
7-
from .common import RequiredClaimsPolicy, RequiredRolePolicy
7+
from .common import ClaimsPolicy, RolePolicy
88

99
__all__ = [
10-
"BasePolicyHandler",
11-
"BasePolicyHandlerWithRequirement",
10+
"Policy",
11+
"PolicyWithRequirement",
1212
"DefaultRequirementType",
1313
"PolicyType",
14-
"RequiredClaimsPolicy",
15-
"RequiredRolePolicy",
14+
"ClaimsPolicy",
15+
"RolePolicy",
1616
]

ellar/auth/policy/base.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class DefaultRequirementType(AttributeDict):
99
"""
1010
Stores Policy Requirement Arguments in `arg_[n]` value
1111
example:
12-
class MyPolicyHandler(BasePolicyHandlerWithRequirement):
12+
class MyPolicyHandler(PolicyWithRequirement):
1313
...
1414
1515
policy = MyPolicyHandler['req1', 'req2', 'req2']
@@ -26,40 +26,40 @@ def __init__(self, *args: t.Any) -> None:
2626
class _PolicyOperandMixin:
2727
@t.no_type_check
2828
def __and__(
29-
cls: t.Union["BasePolicyHandler", t.Type["BasePolicyHandler"]],
30-
other: t.Union["BasePolicyHandler", t.Type["BasePolicyHandler"]],
31-
) -> "BasePolicyHandler":
29+
cls: t.Union["Policy", t.Type["Policy"]],
30+
other: t.Union["Policy", t.Type["Policy"]],
31+
) -> "Policy":
3232
return _ANDPolicy(cls, other)
3333

3434
@t.no_type_check
3535
def __or__(
36-
cls: t.Union["BasePolicyHandler", t.Type["BasePolicyHandler"]],
37-
other: t.Union["BasePolicyHandler", t.Type["BasePolicyHandler"]],
38-
) -> "BasePolicyHandler":
36+
cls: t.Union["Policy", t.Type["Policy"]],
37+
other: t.Union["Policy", t.Type["Policy"]],
38+
) -> "Policy":
3939
return _ORPolicy(cls, other)
4040

4141
@t.no_type_check
4242
def __invert__(
43-
cls: t.Union["BasePolicyHandler", t.Type["BasePolicyHandler"]],
44-
) -> "BasePolicyHandler":
43+
cls: t.Union["Policy", t.Type["Policy"]],
44+
) -> "Policy":
4545
return _NOTPolicy(cls)
4646

4747

48-
class BasePolicyHandlerMetaclass(_PolicyOperandMixin, ABCMeta):
48+
class PolicyMetaclass(_PolicyOperandMixin, ABCMeta):
4949
pass
5050

5151

52-
class BasePolicyHandler(ABC, _PolicyOperandMixin, metaclass=BasePolicyHandlerMetaclass):
52+
class Policy(ABC, _PolicyOperandMixin, metaclass=PolicyMetaclass):
5353
@abstractmethod
5454
async def handle(self, context: IExecutionContext) -> bool:
5555
"""Run Policy Actions and return true or false"""
5656

5757

58-
class BasePolicyHandlerWithRequirement(
59-
BasePolicyHandler,
58+
class PolicyWithRequirement(
59+
Policy,
6060
ABC,
6161
):
62-
__requirements__: t.Dict[int, "BasePolicyHandler"] = {}
62+
__requirements__: t.Dict[int, "Policy"] = {}
6363

6464
requirement_type: t.Type = DefaultRequirementType
6565

@@ -68,7 +68,7 @@ class BasePolicyHandlerWithRequirement(
6868
async def handle(self, context: IExecutionContext, requirement: t.Any) -> bool:
6969
"""Handle Policy Action"""
7070

71-
def __class_getitem__(cls, parameters: t.Any) -> "BasePolicyHandler":
71+
def __class_getitem__(cls, parameters: t.Any) -> "Policy":
7272
_parameters = parameters if isinstance(parameters, tuple) else (parameters,)
7373
hash_id = hash(_parameters)
7474
if hash_id not in cls.__requirements__:
@@ -79,24 +79,24 @@ def __class_getitem__(cls, parameters: t.Any) -> "BasePolicyHandler":
7979

8080

8181
PolicyType = t.Union[
82-
BasePolicyHandler,
83-
t.Type[BasePolicyHandler],
84-
BasePolicyHandlerWithRequirement,
85-
t.Type[BasePolicyHandlerWithRequirement],
82+
Policy,
83+
t.Type[Policy],
84+
PolicyWithRequirement,
85+
t.Type[PolicyWithRequirement],
8686
]
8787

8888

8989
class _OperandResolversMixin:
9090
def _get_policy_object(
9191
self, context: IExecutionContext, policy: PolicyType
92-
) -> t.Union[BasePolicyHandler, BasePolicyHandlerWithRequirement]:
92+
) -> t.Union[Policy, PolicyWithRequirement]:
9393
if isinstance(policy, type):
9494
# resolve instance from EllarInjector, we assume the policy hand been decorated with @injector decorator.
9595
return context.get_service_provider().get(policy) # type: ignore[no-any-return]
9696
return policy
9797

9898

99-
class _ORPolicy(BasePolicyHandler, _OperandResolversMixin):
99+
class _ORPolicy(Policy, _OperandResolversMixin):
100100
def __init__(self, policy_1: PolicyType, policy_2: PolicyType) -> None:
101101
self._policy_1 = policy_1
102102
self._policy_2 = policy_2
@@ -111,7 +111,7 @@ async def handle(self, context: IExecutionContext) -> bool:
111111
return _policy_1_result or _policy_2_result
112112

113113

114-
class _NOTPolicy(BasePolicyHandler, _OperandResolversMixin):
114+
class _NOTPolicy(Policy, _OperandResolversMixin):
115115
def __init__(self, policy_1: PolicyType) -> None:
116116
self._policy_1 = policy_1
117117

@@ -134,7 +134,7 @@ async def handle(self, context: IExecutionContext) -> bool:
134134
return _policy_1_result and _policy_2_result
135135

136136

137-
class _PolicyHandlerWithRequirement(BasePolicyHandler, _OperandResolversMixin):
137+
class _PolicyHandlerWithRequirement(Policy, _OperandResolversMixin):
138138
def __init__(self, policy_1: PolicyType, requirement: t.Any) -> None:
139139
self._policy_1 = policy_1
140140
self.requirement = requirement

ellar/auth/policy/common.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
from ellar.common import IExecutionContext
44

5-
from .base import BasePolicyHandler
5+
from .base import Policy
66

77

8-
class RequiredRolePolicy(BasePolicyHandler):
8+
class RolePolicy(Policy):
99
def __init__(self, *role: str):
1010
self.roles = list(role)
1111

@@ -14,7 +14,7 @@ async def handle(self, context: IExecutionContext) -> bool:
1414
return all(role in user_roles for role in self.roles)
1515

1616

17-
class RequiredClaimsPolicy(BasePolicyHandler):
17+
class ClaimsPolicy(Policy):
1818
def __init__(self, claim_type: str, *claim_value: t.Any) -> None:
1919
self.claim_type = claim_type
2020
self.claim_values = list(claim_value)

tests/test_auth/app/controllers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from ellar.auth import AuthenticationRequired, Authorize, CheckPolicies
2-
from ellar.auth.policy import RequiredClaimsPolicy, RequiredRolePolicy
2+
from ellar.auth.policy import ClaimsPolicy, RolePolicy
33
from ellar.common import Controller, get
44

55
from .policies import AdultOnly, AtLeast21
@@ -20,7 +20,7 @@ async def fast_x(self):
2020
class ArticleController:
2121
@get("/create")
2222
@AuthenticationRequired
23-
@CheckPolicies(RequiredClaimsPolicy("article", "create", "publish"))
23+
@CheckPolicies(ClaimsPolicy("article", "create", "publish"))
2424
async def create_and_publish(self):
2525
return "fast and furious 10 Article"
2626

@@ -30,13 +30,13 @@ async def get_articles(self):
3030

3131
@get("/admin-only")
3232
@AuthenticationRequired("SimpleHeaderAuthHandler")
33-
@CheckPolicies(RequiredRolePolicy("admin"))
33+
@CheckPolicies(RolePolicy("admin"))
3434
async def admin_only(self):
3535
return "List of articles"
3636

3737
@get("/staff-only")
3838
@AuthenticationRequired("SimpleHeaderAuthHandler")
39-
@CheckPolicies(RequiredRolePolicy("staff"))
39+
@CheckPolicies(RolePolicy("staff"))
4040
async def staff_only(self):
4141
return "List of articles"
4242

tests/test_auth/app/policies.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import typing as t
22

3-
from ellar.auth import BasePolicyHandler, BasePolicyHandlerWithRequirement
3+
from ellar.auth import Policy, PolicyWithRequirement
44
from ellar.common import IExecutionContext
55
from ellar.di import injectable
66

77

88
@injectable
9-
class AtLeast21(BasePolicyHandlerWithRequirement):
9+
class AtLeast21(PolicyWithRequirement):
1010
async def handle(self, context: IExecutionContext, requirement: t.Any) -> bool:
1111
for _k, v in requirement.items():
1212
assert v in context.user.requirements
1313
return int(context.user.get("age")) >= 21
1414

1515

1616
@injectable
17-
class AdultOnly(BasePolicyHandler):
17+
class AdultOnly(Policy):
1818
async def handle(self, context: IExecutionContext) -> bool:
1919
return int(context.user.get("age")) >= 18

tests/test_auth/test_policy_logic_gates.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from unittest.mock import Mock
22

33
import pytest
4-
from ellar.auth import BasePolicyHandler, BasePolicyHandlerWithRequirement
4+
from ellar.auth import Policy, PolicyWithRequirement
55
from ellar.common import IExecutionContext
66
from ellar.di import EllarInjector
77

@@ -16,7 +16,7 @@ def __init__(self, a: str, b: str):
1616
self.b = b
1717

1818

19-
class EllarPolicy(BasePolicyHandlerWithRequirement):
19+
class EllarPolicy(PolicyWithRequirement):
2020
requirement_type = MyRequirement
2121

2222
async def handle(
@@ -25,19 +25,19 @@ async def handle(
2525
return requirement.a == "ellar" and requirement.b == "policy"
2626

2727

28-
class AnyPolicy(BasePolicyHandlerWithRequirement):
28+
class AnyPolicy(PolicyWithRequirement):
2929
async def handle(self, context: IExecutionContext, requirement=None) -> bool:
3030
if requirement:
3131
return requirement.arg_1 == requirement.arg_2
3232
return requirement is None
3333

3434

35-
class TruePolicyHandler(BasePolicyHandler):
35+
class TruePolicyHandler(Policy):
3636
async def handle(self, context: IExecutionContext) -> bool:
3737
return True
3838

3939

40-
class FalsePolicyHandler(BasePolicyHandler):
40+
class FalsePolicyHandler(Policy):
4141
async def handle(self, context: IExecutionContext) -> bool:
4242
return False
4343

tests/test_auth/test_require_claim_policy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from unittest.mock import Mock
22

3-
from ellar.auth import RequiredClaimsPolicy, UserIdentity
3+
from ellar.auth import ClaimsPolicy, UserIdentity
44

55

66
def mock_execution_context(**kwargs):
@@ -12,7 +12,7 @@ def mock_execution_context(**kwargs):
1212

1313
async def test_require_claim_raises_an_exception(anyio_backend):
1414
context = mock_execution_context()
15-
claim = RequiredClaimsPolicy("article", "create", "publish")
15+
claim = ClaimsPolicy("article", "create", "publish")
1616

1717
assert await claim.handle(context) is False
1818

0 commit comments

Comments
 (0)