policies/*: remove path-based import from all policies
This commit is contained in:
parent
ac2dd3611f
commit
6aefd072c8
|
@ -1,8 +1,10 @@
|
||||||
"""Dummy policy"""
|
"""Dummy policy"""
|
||||||
from random import SystemRandom
|
from random import SystemRandom
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from structlog import get_logger
|
from structlog import get_logger
|
||||||
|
|
||||||
|
@ -22,7 +24,10 @@ class DummyPolicy(Policy):
|
||||||
wait_min = models.IntegerField(default=5)
|
wait_min = models.IntegerField(default=5)
|
||||||
wait_max = models.IntegerField(default=30)
|
wait_max = models.IntegerField(default=30)
|
||||||
|
|
||||||
form = "passbook.policies.dummy.forms.DummyPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.dummy.forms import DummyPolicyForm
|
||||||
|
|
||||||
|
return DummyPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
"""Wait random time then return result"""
|
"""Wait random time then return result"""
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
"""passbook password_expiry_policy Models"""
|
"""passbook password_expiry_policy Models"""
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from structlog import get_logger
|
from structlog import get_logger
|
||||||
|
@ -19,7 +21,10 @@ class PasswordExpiryPolicy(Policy):
|
||||||
deny_only = models.BooleanField(default=False)
|
deny_only = models.BooleanField(default=False)
|
||||||
days = models.IntegerField()
|
days = models.IntegerField()
|
||||||
|
|
||||||
form = "passbook.policies.expiry.forms.PasswordExpiryPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.expiry.forms import PasswordExpiryPolicyForm
|
||||||
|
|
||||||
|
return PasswordExpiryPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
"""If password change date is more than x days in the past, call set_unusable_password
|
"""If password change date is more than x days in the past, call set_unusable_password
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
"""passbook expression Policy Models"""
|
"""passbook expression Policy Models"""
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from passbook.policies.expression.evaluator import PolicyEvaluator
|
from passbook.policies.expression.evaluator import PolicyEvaluator
|
||||||
|
@ -12,7 +15,10 @@ class ExpressionPolicy(Policy):
|
||||||
|
|
||||||
expression = models.TextField()
|
expression = models.TextField()
|
||||||
|
|
||||||
form = "passbook.policies.expression.forms.ExpressionPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.expression.forms import ExpressionPolicyForm
|
||||||
|
|
||||||
|
return ExpressionPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
"""Evaluate and render expression. Returns PolicyResult(false) on error."""
|
"""Evaluate and render expression. Returns PolicyResult(false) on error."""
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
"""user field matcher models"""
|
"""user field matcher models"""
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from passbook.core.models import Group
|
from passbook.core.models import Group
|
||||||
|
@ -12,7 +15,10 @@ class GroupMembershipPolicy(Policy):
|
||||||
|
|
||||||
group = models.ForeignKey(Group, null=True, blank=True, on_delete=models.SET_NULL)
|
group = models.ForeignKey(Group, null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
form = "passbook.policies.group_membership.forms.GroupMembershipPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.group_membership.forms import GroupMembershipPolicyForm
|
||||||
|
|
||||||
|
return GroupMembershipPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
return PolicyResult(self.group.user_set.filter(pk=request.user.pk).exists())
|
return PolicyResult(self.group.user_set.filter(pk=request.user.pk).exists())
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
"""passbook HIBP Models"""
|
"""passbook HIBP Models"""
|
||||||
from hashlib import sha1
|
from hashlib import sha1
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from requests import get
|
from requests import get
|
||||||
from structlog import get_logger
|
from structlog import get_logger
|
||||||
|
@ -25,7 +27,10 @@ class HaveIBeenPwendPolicy(Policy):
|
||||||
|
|
||||||
allowed_count = models.IntegerField(default=0)
|
allowed_count = models.IntegerField(default=0)
|
||||||
|
|
||||||
form = "passbook.policies.hibp.forms.HaveIBeenPwnedPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.hibp.forms import HaveIBeenPwnedPolicyForm
|
||||||
|
|
||||||
|
return HaveIBeenPwnedPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
"""Check if password is in HIBP DB. Hashes given Password with SHA1, uses the first 5
|
"""Check if password is in HIBP DB. Hashes given Password with SHA1, uses the first 5
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
"""Policy base models"""
|
"""Policy base models"""
|
||||||
|
from typing import Type
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from model_utils.managers import InheritanceManager
|
from model_utils.managers import InheritanceManager
|
||||||
|
|
||||||
|
@ -73,6 +75,10 @@ class Policy(CreatedUpdatedModel):
|
||||||
|
|
||||||
objects = InheritanceAutoManager()
|
objects = InheritanceAutoManager()
|
||||||
|
|
||||||
|
def form(self) -> Type[ModelForm]:
|
||||||
|
"""Return Form class used to edit this object"""
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Policy {self.name}"
|
return f"Policy {self.name}"
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
"""user field matcher models"""
|
"""user field matcher models"""
|
||||||
import re
|
import re
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from structlog import get_logger
|
from structlog import get_logger
|
||||||
|
|
||||||
|
@ -28,7 +30,10 @@ class PasswordPolicy(Policy):
|
||||||
symbol_charset = models.TextField(default=r"!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ")
|
symbol_charset = models.TextField(default=r"!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ")
|
||||||
error_message = models.TextField()
|
error_message = models.TextField()
|
||||||
|
|
||||||
form = "passbook.policies.password.forms.PasswordPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.password.forms import PasswordPolicyForm
|
||||||
|
|
||||||
|
return PasswordPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
if self.password_field not in request.context:
|
if self.password_field not in request.context:
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
"""passbook reputation request policy"""
|
"""passbook reputation request policy"""
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.forms import ModelForm
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from passbook.core.models import User
|
from passbook.core.models import User
|
||||||
|
@ -19,7 +22,10 @@ class ReputationPolicy(Policy):
|
||||||
check_username = models.BooleanField(default=True)
|
check_username = models.BooleanField(default=True)
|
||||||
threshold = models.IntegerField(default=-5)
|
threshold = models.IntegerField(default=-5)
|
||||||
|
|
||||||
form = "passbook.policies.reputation.forms.ReputationPolicyForm"
|
def form(self) -> Type[ModelForm]:
|
||||||
|
from passbook.policies.reputation.forms import ReputationPolicyForm
|
||||||
|
|
||||||
|
return ReputationPolicyForm
|
||||||
|
|
||||||
def passes(self, request: PolicyRequest) -> PolicyResult:
|
def passes(self, request: PolicyRequest) -> PolicyResult:
|
||||||
remote_ip = get_client_ip(request.http_request) or "255.255.255.255"
|
remote_ip = get_client_ip(request.http_request) or "255.255.255.255"
|
||||||
|
|
Reference in New Issue