From f11d3c1cf2470bf25ceeb8313dfe4616a594e919 Mon Sep 17 00:00:00 2001 From: xinwen Date: Fri, 9 Apr 2021 15:01:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=87=E6=9C=9F=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8F=90=E7=A4=BA=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/errors.py | 2 ++ apps/authentication/mixins.py | 2 +- apps/users/models/user.py | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/authentication/errors.py b/apps/authentication/errors.py index 06631742a..8f9ba9307 100644 --- a/apps/authentication/errors.py +++ b/apps/authentication/errors.py @@ -16,6 +16,7 @@ reason_user_not_exist = 'user_not_exist' reason_password_expired = 'password_expired' reason_user_invalid = 'user_invalid' reason_user_inactive = 'user_inactive' +reason_user_expired = 'user_expired' reason_backend_not_match = 'backend_not_match' reason_acl_not_allow = 'acl_not_allow' @@ -28,6 +29,7 @@ reason_choices = { reason_password_expired: _("Password expired"), reason_user_invalid: _('Disabled or expired'), reason_user_inactive: _("This account is inactive."), + reason_user_expired: _("This account is expired"), reason_backend_not_match: _("Auth backend not match"), reason_acl_not_allow: _("ACL is not allowed"), } diff --git a/apps/authentication/mixins.py b/apps/authentication/mixins.py index e13a88c87..89d7b85fd 100644 --- a/apps/authentication/mixins.py +++ b/apps/authentication/mixins.py @@ -171,7 +171,7 @@ class AuthMixin: if not user: self.raise_credential_error(errors.reason_password_failed) elif user.is_expired: - self.raise_credential_error(errors.reason_user_inactive) + self.raise_credential_error(errors.reason_user_expired) elif not user.is_active: self.raise_credential_error(errors.reason_user_inactive) return user diff --git a/apps/users/models/user.py b/apps/users/models/user.py index 52dccbeaa..fab14e252 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -667,6 +667,11 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser): else: return user_default + def unblock_login(self): + from users.utils import LoginBlockUtil, MFABlockUtils + LoginBlockUtil.unblock_user(self.username) + MFABlockUtils.unblock_user(self.username) + @property def login_blocked(self): from users.utils import LoginBlockUtil, MFABlockUtils -- GitLab