mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
dev: user account deactivation
This commit is contained in:
parent
781c0e8ae4
commit
2f4cf47630
@ -100,6 +100,12 @@ class Adapter:
|
|||||||
user.save()
|
user.save()
|
||||||
Profile.objects.create(user=user)
|
Profile.objects.create(user=user)
|
||||||
|
|
||||||
|
if not user.is_active:
|
||||||
|
raise AuthenticationException(
|
||||||
|
AUTHENTICATION_ERROR_CODES["USER_ACCOUNT_DEACTIVATED"],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
|
||||||
# Update user details
|
# Update user details
|
||||||
user.last_login_medium = self.provider
|
user.last_login_medium = self.provider
|
||||||
user.last_active = timezone.now()
|
user.last_active = timezone.now()
|
||||||
|
@ -24,62 +24,59 @@ class EmailCheckSignUpEndpoint(APIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
# Check instance configuration
|
|
||||||
instance = Instance.objects.first()
|
|
||||||
if instance is None or not instance.is_setup_done:
|
|
||||||
exc = AuthenticationException(
|
|
||||||
error_code=AUTHENTICATION_ERROR_CODES[
|
|
||||||
"INSTANCE_NOT_CONFIGURED"
|
|
||||||
],
|
|
||||||
error_message="INSTANCE_NOT_CONFIGURED",
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
exc.get_error_dict(),
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
|
|
||||||
email = request.data.get("email", False)
|
|
||||||
|
|
||||||
# Return error if email is not present
|
|
||||||
if not email:
|
|
||||||
exc = AuthenticationException(
|
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["EMAIL_REQUIRED"],
|
|
||||||
error_message="EMAIL_REQUIRED",
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
exc.get_error_dict(),
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Validate email
|
|
||||||
try:
|
try:
|
||||||
|
# Check instance configuration
|
||||||
|
instance = Instance.objects.first()
|
||||||
|
if instance is None or not instance.is_setup_done:
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"INSTANCE_NOT_CONFIGURED"
|
||||||
|
],
|
||||||
|
error_message="INSTANCE_NOT_CONFIGURED",
|
||||||
|
)
|
||||||
|
email = request.data.get("email", False)
|
||||||
|
|
||||||
|
# Return error if email is not present
|
||||||
|
if not email:
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES["EMAIL_REQUIRED"],
|
||||||
|
error_message="EMAIL_REQUIRED",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Validate email
|
||||||
validate_email(email)
|
validate_email(email)
|
||||||
|
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if existing_user:
|
||||||
|
# check if the account is the deactivated
|
||||||
|
if not existing_user.is_active:
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ALREADY_EXIST"
|
||||||
|
],
|
||||||
|
error_message="USER_ALREADY_EXIST",
|
||||||
|
)
|
||||||
|
return Response(
|
||||||
|
{"status": True},
|
||||||
|
status=status.HTTP_200_OK,
|
||||||
|
)
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
exc = AuthenticationException(
|
raise AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["INVALID_EMAIL"],
|
error_code=AUTHENTICATION_ERROR_CODES["INVALID_EMAIL"],
|
||||||
error_message="INVALID_EMAIL",
|
error_message="INVALID_EMAIL",
|
||||||
)
|
)
|
||||||
|
except AuthenticationException as e:
|
||||||
return Response(
|
return Response(
|
||||||
exc.get_error_dict(),
|
e.get_error_dict(), status=status.HTTP_400_BAD_REQUEST
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
existing_user = User.objects.filter(email=email).first()
|
|
||||||
|
|
||||||
if existing_user:
|
|
||||||
exc = AuthenticationException(
|
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
|
||||||
error_message="USER_ALREADY_EXIST",
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
exc.get_error_dict(),
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
{"status": True},
|
|
||||||
status=status.HTTP_200_OK,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class EmailCheckSignInEndpoint(APIView):
|
class EmailCheckSignInEndpoint(APIView):
|
||||||
|
|
||||||
@ -88,61 +85,59 @@ class EmailCheckSignInEndpoint(APIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
# Check instance configuration
|
|
||||||
instance = Instance.objects.first()
|
|
||||||
if instance is None or not instance.is_setup_done:
|
|
||||||
exc = AuthenticationException(
|
|
||||||
error_code=AUTHENTICATION_ERROR_CODES[
|
|
||||||
"INSTANCE_NOT_CONFIGURED"
|
|
||||||
],
|
|
||||||
error_message="INSTANCE_NOT_CONFIGURED",
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
exc.get_error_dict(),
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
|
|
||||||
email = request.data.get("email", False)
|
|
||||||
|
|
||||||
# Return error if email is not present
|
|
||||||
if not email:
|
|
||||||
exc = AuthenticationException(
|
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["EMAIL_REQUIRED"],
|
|
||||||
error_message="EMAIL_REQUIRED",
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
exc.get_error_dict(),
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Validate email
|
|
||||||
try:
|
try:
|
||||||
|
# Check instance configuration
|
||||||
|
instance = Instance.objects.first()
|
||||||
|
if instance is None or not instance.is_setup_done:
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"INSTANCE_NOT_CONFIGURED"
|
||||||
|
],
|
||||||
|
error_message="INSTANCE_NOT_CONFIGURED",
|
||||||
|
)
|
||||||
|
|
||||||
|
email = request.data.get("email", False)
|
||||||
|
|
||||||
|
# Return error if email is not present
|
||||||
|
if not email:
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES["EMAIL_REQUIRED"],
|
||||||
|
error_message="EMAIL_REQUIRED",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Validate email
|
||||||
validate_email(email)
|
validate_email(email)
|
||||||
|
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
# If existing user
|
||||||
|
if existing_user:
|
||||||
|
# Raise different exception when user is not active
|
||||||
|
if not existing_user.is_active:
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
|
||||||
|
return Response(
|
||||||
|
{
|
||||||
|
"status": True,
|
||||||
|
"is_password_autoset": existing_user.is_password_autoset,
|
||||||
|
},
|
||||||
|
status=status.HTTP_200_OK,
|
||||||
|
)
|
||||||
|
raise AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
||||||
|
error_message="USER_DOES_NOT_EXIST",
|
||||||
|
)
|
||||||
except ValidationError:
|
except ValidationError:
|
||||||
exc = AuthenticationException(
|
raise AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["INVALID_EMAIL"],
|
error_code=AUTHENTICATION_ERROR_CODES["INVALID_EMAIL"],
|
||||||
error_message="INVALID_EMAIL",
|
error_message="INVALID_EMAIL",
|
||||||
)
|
)
|
||||||
|
except AuthenticationException as e:
|
||||||
return Response(
|
return Response(
|
||||||
exc.get_error_dict(),
|
e.get_error_dict(), status=status.HTTP_400_BAD_REQUEST
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
existing_user = User.objects.filter(email=email).first()
|
|
||||||
|
|
||||||
if existing_user:
|
|
||||||
return Response(
|
|
||||||
{
|
|
||||||
"status": True,
|
|
||||||
"is_password_autoset": existing_user.is_password_autoset,
|
|
||||||
},
|
|
||||||
status=status.HTTP_200_OK,
|
|
||||||
)
|
|
||||||
exc = AuthenticationException(
|
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
|
||||||
error_message="USER_DOES_NOT_EXIST",
|
|
||||||
)
|
|
||||||
return Response(
|
|
||||||
exc.get_error_dict(),
|
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
|
||||||
)
|
|
||||||
|
@ -90,7 +90,9 @@ class SignInAuthEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if not User.objects.filter(email=email).exists():
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if not existing_user:
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
||||||
error_message="USER_DOES_NOT_EXIST",
|
error_message="USER_DOES_NOT_EXIST",
|
||||||
@ -105,6 +107,22 @@ class SignInAuthEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_app=True),
|
||||||
|
"sign-in?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
provider = EmailProvider(
|
provider = EmailProvider(
|
||||||
request=request, key=email, code=password, is_signup=False
|
request=request, key=email, code=password, is_signup=False
|
||||||
@ -197,7 +215,26 @@ class SignUpAuthEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if User.objects.filter(email=email).exists():
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if existing_user:
|
||||||
|
# Existing User
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_app=True),
|
||||||
|
"?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
||||||
error_message="USER_ALREADY_EXIST",
|
error_message="USER_ALREADY_EXIST",
|
||||||
|
@ -95,7 +95,26 @@ class MagicSignInEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if not User.objects.filter(email=email).exists():
|
# Existing User
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if not existing_user:
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_app=True),
|
||||||
|
"sign-in?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
||||||
error_message="USER_DOES_NOT_EXIST",
|
error_message="USER_DOES_NOT_EXIST",
|
||||||
@ -167,8 +186,25 @@ class MagicSignUpEndpoint(View):
|
|||||||
"?" + urlencode(params),
|
"?" + urlencode(params),
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
# Existing user
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
if not existing_user:
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_app=True),
|
||||||
|
"?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if User.objects.filter(email=email).exists():
|
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
||||||
error_message="USER_ALREADY_EXIST",
|
error_message="USER_ALREADY_EXIST",
|
||||||
|
@ -63,23 +63,13 @@ class ForgotPasswordEndpoint(APIView):
|
|||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
)
|
)
|
||||||
|
|
||||||
(EMAIL_HOST, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD) = (
|
(EMAIL_HOST,) = get_configuration_value(
|
||||||
get_configuration_value(
|
[
|
||||||
[
|
{
|
||||||
{
|
"key": "EMAIL_HOST",
|
||||||
"key": "EMAIL_HOST",
|
"default": os.environ.get("EMAIL_HOST"),
|
||||||
"default": os.environ.get("EMAIL_HOST"),
|
},
|
||||||
},
|
]
|
||||||
{
|
|
||||||
"key": "EMAIL_HOST_USER",
|
|
||||||
"default": os.environ.get("EMAIL_HOST_USER"),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "EMAIL_HOST_PASSWORD",
|
|
||||||
"default": os.environ.get("EMAIL_HOST_PASSWORD"),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if not (EMAIL_HOST):
|
if not (EMAIL_HOST):
|
||||||
|
@ -68,6 +68,17 @@ class EmailCheckEndpoint(APIView):
|
|||||||
|
|
||||||
# If existing user
|
# If existing user
|
||||||
if existing_user:
|
if existing_user:
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
return Response(
|
||||||
|
exc.get_error_dict(), status=status.HTTP_400_BAD_REQUEST
|
||||||
|
)
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
{
|
{
|
||||||
"existing": True,
|
"existing": True,
|
||||||
|
@ -83,7 +83,10 @@ class SignInAuthSpaceEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if not User.objects.filter(email=email).exists():
|
# Existing User
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if not existing_user:
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
||||||
error_message="USER_DOES_NOT_EXIST",
|
error_message="USER_DOES_NOT_EXIST",
|
||||||
@ -98,6 +101,22 @@ class SignInAuthSpaceEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_space=True),
|
||||||
|
"?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
provider = EmailProvider(
|
provider = EmailProvider(
|
||||||
request=request, key=email, code=password, is_signup=False
|
request=request, key=email, code=password, is_signup=False
|
||||||
@ -185,7 +204,26 @@ class SignUpAuthSpaceEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if User.objects.filter(email=email).exists():
|
# Existing User
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if existing_user:
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_space=True),
|
||||||
|
"?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
||||||
error_message="USER_ALREADY_EXIST",
|
error_message="USER_ALREADY_EXIST",
|
||||||
|
@ -90,11 +90,14 @@ class MagicSignInSpaceEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if not User.objects.filter(email=email).exists():
|
existing_user = User.objects.filter(email=email).first()
|
||||||
params = {
|
|
||||||
"error_code": "USER_DOES_NOT_EXIST",
|
if not existing_user:
|
||||||
"error_message": "User could not be found with the given email.",
|
exc = AuthenticationException(
|
||||||
}
|
error_code=AUTHENTICATION_ERROR_CODES["USER_DOES_NOT_EXIST"],
|
||||||
|
error_message="USER_DOES_NOT_EXIST",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
if next_path:
|
if next_path:
|
||||||
params["next_path"] = str(next_path)
|
params["next_path"] = str(next_path)
|
||||||
url = urljoin(
|
url = urljoin(
|
||||||
@ -103,6 +106,22 @@ class MagicSignInSpaceEndpoint(View):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
# Active User
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_space=True),
|
||||||
|
"?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
try:
|
try:
|
||||||
provider = MagicCodeProvider(
|
provider = MagicCodeProvider(
|
||||||
request=request, key=f"magic_{email}", code=code
|
request=request, key=f"magic_{email}", code=code
|
||||||
@ -155,8 +174,25 @@ class MagicSignUpSpaceEndpoint(View):
|
|||||||
"?" + urlencode(params),
|
"?" + urlencode(params),
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
# Existing User
|
||||||
|
existing_user = User.objects.filter(email=email).first()
|
||||||
|
if existing_user:
|
||||||
|
if not existing_user.is_active:
|
||||||
|
exc = AuthenticationException(
|
||||||
|
error_code=AUTHENTICATION_ERROR_CODES[
|
||||||
|
"USER_ACCOUNT_DEACTIVATED"
|
||||||
|
],
|
||||||
|
error_message="USER_ACCOUNT_DEACTIVATED",
|
||||||
|
)
|
||||||
|
params = exc.get_error_dict()
|
||||||
|
if next_path:
|
||||||
|
params["next_path"] = str(next_path)
|
||||||
|
url = urljoin(
|
||||||
|
base_host(request=request, is_space=True),
|
||||||
|
"?" + urlencode(params),
|
||||||
|
)
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
if User.objects.filter(email=email).exists():
|
|
||||||
exc = AuthenticationException(
|
exc = AuthenticationException(
|
||||||
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
error_code=AUTHENTICATION_ERROR_CODES["USER_ALREADY_EXIST"],
|
||||||
error_message="USER_ALREADY_EXIST",
|
error_message="USER_ALREADY_EXIST",
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# Python imports
|
|
||||||
from urllib.parse import urlencode, urljoin
|
|
||||||
|
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.views import View
|
from django.views import View
|
||||||
from django.contrib.auth import logout
|
from django.contrib.auth import logout
|
||||||
|
Loading…
Reference in New Issue
Block a user