Skip to content

Commit e757cac

Browse files
authored
Merge pull request aaronn#66 from aaronn/feature/international-phone-regex
Update phone regex and serializers to support e.164 completely
2 parents b5fcc2c + c0482c6 commit e757cac

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

drfpasswordless/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
__title__ = 'drfpasswordless'
4-
__version__ = '1.5.4'
4+
__version__ = '1.5.5'
55
__author__ = 'Aaron Ng'
66
__license__ = 'MIT'
77
__copyright__ = 'Copyright 2020 Aaron Ng'

drfpasswordless/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
VERSION = (1, 5, 4)
1+
VERSION = (1, 5, 5)
22

33
__version__ = '.'.join(map(str, VERSION))

drfpasswordless/serializers.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,10 @@ class MobileAuthSerializer(AbstractBaseAliasAuthenticationSerializer):
8585
def alias_type(self):
8686
return 'mobile'
8787

88-
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
88+
phone_regex = RegexValidator(regex=r'^\+?[1-9]\d{1,14}$',
8989
message="Mobile number must be entered in the format:"
9090
" '+999999999'. Up to 15 digits allowed.")
91-
mobile = serializers.CharField(validators=[phone_regex], max_length=15)
91+
mobile = serializers.CharField(validators=[phone_regex], max_length=17)
9292

9393

9494
"""
@@ -169,12 +169,12 @@ class AbstractBaseCallbackTokenSerializer(serializers.Serializer):
169169
Abstract class inspired by DRF's own token serializer.
170170
Returns a user if valid, None or a message if not.
171171
"""
172-
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
172+
phone_regex = RegexValidator(regex=r'^\+?[1-9]\d{1,14}$',
173173
message="Mobile number must be entered in the format:"
174174
" '+999999999'. Up to 15 digits allowed.")
175175

176176
email = serializers.EmailField(required=False) # Needs to be required=false to require both.
177-
mobile = serializers.CharField(required=False, validators=[phone_regex], max_length=15)
177+
mobile = serializers.CharField(required=False, validators=[phone_regex], max_length=17)
178178
token = TokenField(min_length=6, max_length=6, validators=[token_age_validator])
179179

180180
def validate_alias(self, attrs):

tests/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.core.validators import RegexValidator
44
from django.db import models
55

6-
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
6+
phone_regex = RegexValidator(regex=r'^\+?[1-9]\d{1,14}$',
77
message="Mobile number must be entered in the format:"
88
" '+999999999'. Up to 15 digits allowed.")
99

@@ -12,7 +12,7 @@ class CustomUser(AbstractBaseUser):
1212
email = models.EmailField(max_length=255, unique=True, blank=True, null=True)
1313
email_verified = models.BooleanField(default=False)
1414

15-
mobile = models.CharField(validators=[phone_regex], max_length=15, unique=True, blank=True, null=True)
15+
mobile = models.CharField(validators=[phone_regex], max_length=17, unique=True, blank=True, null=True)
1616
mobile_verified = models.BooleanField(default=False)
1717

1818
objects = BaseUserManager()

0 commit comments

Comments
 (0)