48 |
48 |
)
|
49 |
49 |
|
50 |
50 |
|
51 |
|
def generate_code(phone_number):
|
|
51 |
def generate_code(phone_number, user=None, kind=None, fake=False):
|
52 |
52 |
from authentic2.models import SMSCode
|
53 |
53 |
|
54 |
54 |
return SMSCode.create(
|
55 |
55 |
phone_number,
|
56 |
|
kind='registration',
|
|
56 |
user=user,
|
|
57 |
kind=kind or SMSCode.KIND_REGISTRATION,
|
|
58 |
fake=fake,
|
57 |
59 |
)
|
58 |
60 |
|
59 |
61 |
|
... | ... | |
61 |
63 |
pass
|
62 |
64 |
|
63 |
65 |
|
64 |
|
def send_registration_sms(request, phone_number, ou, template_names=None, context=None, **kwargs):
|
|
66 |
def send_sms(phone_number, ou, user=None, template_names=None, context=None, kind=None, **kwargs):
|
65 |
67 |
"""Sends a registration code sms to a user, the latter inputs the received code
|
66 |
68 |
in a dedicated form to validate their account creation.
|
67 |
69 |
"""
|
... | ... | |
79 |
81 |
logger.error('settings.SMS_URL is not set')
|
80 |
82 |
raise SMSError('SMS improperly configured')
|
81 |
83 |
|
82 |
|
if not template_names:
|
83 |
|
template_names = ['registration/sms_code_registration.txt']
|
84 |
84 |
if not isinstance(context, dict):
|
85 |
85 |
context = {}
|
86 |
86 |
|
87 |
|
code = generate_code(phone_number)
|
|
87 |
code = generate_code(phone_number, user=user, kind=kind)
|
88 |
88 |
context.update({'code': code})
|
89 |
89 |
|
90 |
90 |
message = render_plain_text_template_to_string(template_names, context)
|
... | ... | |
102 |
102 |
code.sent = True
|
103 |
103 |
code.save()
|
104 |
104 |
except RequestException as e:
|
105 |
|
logger.warning('sms registration to %s using %s failed: %s', phone_number, url, e)
|
|
105 |
logger.warning('sms code to %s using %s failed: %s', phone_number, url, e)
|
106 |
106 |
raise SMSError(f'Error while contacting SMS service: {e}')
|
107 |
107 |
return code
|
|
108 |
|
|
109 |
|
|
110 |
def send_registration_sms(phone_number, ou, template_names=None, context=None, **kwargs):
|
|
111 |
from authentic2.models import SMSCode
|
|
112 |
|
|
113 |
return send_sms(
|
|
114 |
phone_number,
|
|
115 |
ou,
|
|
116 |
template_names=template_names or ['registration/sms_code_registration.txt'],
|
|
117 |
context=context,
|
|
118 |
kind=SMSCode.KIND_REGISTRATION,
|
|
119 |
**kwargs,
|
|
120 |
)
|
|
121 |
|
|
122 |
|
|
123 |
def send_password_reset_sms(phone_number, ou, user=None, template_names=None, context=None, **kwargs):
|
|
124 |
from authentic2.models import SMSCode
|
|
125 |
|
|
126 |
return send_sms(
|
|
127 |
phone_number,
|
|
128 |
ou,
|
|
129 |
user=user,
|
|
130 |
template_names=template_names or ['password_lost/sms_code_password_lost.txt'],
|
|
131 |
context=context,
|
|
132 |
kind=SMSCode.KIND_PASSWORD_LOST,
|
|
133 |
**kwargs,
|
|
134 |
)
|