Skip to content

Commit 96fbb72

Browse files
authored
Add mail format for users registered via order (#5564)
1 parent 8f18d44 commit 96fbb72

File tree

4 files changed

+38
-15
lines changed

4 files changed

+38
-15
lines changed

app/api/auth.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from app.api.helpers.utilities import get_serializer, str_generator
1919
from app.models import db
2020
from app.models.mail import PASSWORD_RESET, PASSWORD_CHANGE, \
21-
USER_REGISTER_WITH_PASSWORD
21+
USER_REGISTER_WITH_PASSWORD, PASSWORD_RESET_AND_VERIFY
2222
from app.models.notification import PASSWORD_CHANGE as PASSWORD_CHANGE_NOTIF
2323
from app.models.user import User
2424

@@ -207,7 +207,10 @@ def reset_password_post():
207207
return NotFoundError({'source': ''}, 'User not found').respond()
208208
else:
209209
link = make_frontend_url('/reset-password', {'token': user.reset_password})
210-
send_email_with_action(user, PASSWORD_RESET, app_name=get_settings()['app_name'], link=link)
210+
if user.was_registered_with_order:
211+
send_email_with_action(user, PASSWORD_RESET_AND_VERIFY, app_name=get_settings()['app_name'], link=link)
212+
else:
213+
send_email_with_action(user, PASSWORD_RESET, app_name=get_settings()['app_name'], link=link)
211214

212215
return make_response(jsonify(message="Email Sent"), 200)
213216

@@ -223,6 +226,8 @@ def reset_password_patch():
223226
return NotFoundError({'source': ''}, 'User Not Found').respond()
224227
else:
225228
user.password = password
229+
if user.was_registered_with_order:
230+
user.is_verified = True
226231
save_to_db(user)
227232

228233
return jsonify({

app/api/helpers/system_mails.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
SESSION_SCHEDULE, NEXT_EVENT, EVENT_PUBLISH, AFTER_EVENT, USER_CHANGE_EMAIL, USER_REGISTER_WITH_PASSWORD, \
88
TICKET_PURCHASED, EVENT_EXPORTED, EVENT_EXPORT_FAIL, MAIL_TO_EXPIRED_ORDERS, MONTHLY_PAYMENT_EMAIL, \
99
MONTHLY_PAYMENT_FOLLOWUP_EMAIL, EVENT_IMPORTED, EVENT_IMPORT_FAIL, TICKET_PURCHASED_ORGANIZER, TICKET_CANCELLED, \
10-
TICKET_PURCHASED_ATTENDEE, PASSWORD_CHANGE
10+
TICKET_PURCHASED_ATTENDEE, PASSWORD_CHANGE, PASSWORD_RESET_AND_VERIFY
1111

1212
MAILS = {
1313
EVENT_PUBLISH: {
@@ -114,6 +114,15 @@
114114
u"Please use the following link to reset your password.<br> <a href='{link}' target='_blank'>{link}</a>"
115115
)
116116
},
117+
PASSWORD_RESET_AND_VERIFY: {
118+
'recipient': 'User',
119+
'subject': u'{app_name}: Reset your password and verify your account',
120+
'message': (
121+
u"Please use the following link to reset your password and verify your account." +
122+
"<br> <a href='{link}' target='_blank'>{link}</a>"
123+
)
124+
125+
},
117126
PASSWORD_CHANGE: {
118127
'recipient': 'User',
119128
'subject': u'{app_name}: Password Change',

app/api/users.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from app.models.email_notification import EmailNotification
2323
from app.models.event_invoice import EventInvoice
2424
from app.models.feedback import Feedback
25-
from app.models.mail import USER_REGISTER_WITH_PASSWORD
25+
from app.models.mail import USER_REGISTER_WITH_PASSWORD, PASSWORD_RESET_AND_VERIFY
2626
from app.models.notification import Notification
2727
from app.models.session import Session
2828
from app.models.speaker import Speaker
@@ -37,6 +37,7 @@ class UserList(ResourceList):
3737
"""
3838
List and create Users
3939
"""
40+
4041
def before_create_object(self, data, view_kwargs):
4142
"""
4243
method to check if there is an existing user with same email which is received in data to create a new user
@@ -58,12 +59,18 @@ def after_create_object(self, user, data, view_kwargs):
5859
:param view_kwargs:
5960
:return:
6061
"""
61-
s = get_serializer()
62-
hash = str(base64.b64encode(str(s.dumps([user.email, str_generator()])).encode()), 'utf-8')
63-
link = make_frontend_url('/verify'.format(id=user.id), {'token': hash})
64-
send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'],
65-
email=user.email)
66-
send_email_confirmation(user.email, link)
62+
63+
if user.was_registered_with_order:
64+
link = make_frontend_url('/reset-password', {'token': user.reset_password})
65+
send_email_with_action(user, PASSWORD_RESET_AND_VERIFY, app_name=get_settings()['app_name'],
66+
email=user.email, link=link)
67+
else:
68+
s = get_serializer()
69+
hash = str(base64.b64encode(str(s.dumps([user.email, str_generator()])).encode()), 'utf-8')
70+
link = make_frontend_url('/verify'.format(id=user.id), {'token': hash})
71+
send_email_with_action(user, USER_REGISTER_WITH_PASSWORD, app_name=get_settings()['app_name'],
72+
email=user.email)
73+
send_email_confirmation(user.email, link)
6774

6875
if data.get('original_image_url'):
6976
try:
@@ -90,6 +97,7 @@ class UserDetail(ResourceDetail):
9097
"""
9198
User detail by id
9299
"""
100+
93101
def before_get(self, args, kwargs):
94102

95103
if current_user.is_admin or current_user.is_super_admin or current_user:
@@ -221,11 +229,11 @@ def after_update_object(self, user, data, view_kwargs):
221229
send_email_change_user_email(user, view_kwargs.get('email_changed'))
222230

223231
decorators = (api.has_permission('is_user_itself', fetch="user_id,id", fetch_as="user_id",
224-
model=[Notification, Feedback, UsersEventsRoles, Session, EventInvoice, AccessCode,
225-
DiscountCode, EmailNotification, Speaker, User],
226-
fetch_key_url="notification_id, feedback_id, users_events_role_id, session_id, \
232+
model=[Notification, Feedback, UsersEventsRoles, Session, EventInvoice, AccessCode,
233+
DiscountCode, EmailNotification, Speaker, User],
234+
fetch_key_url="notification_id, feedback_id, users_events_role_id, session_id, \
227235
event_invoice_id, access_code_id, discount_code_id, email_notification_id, speaker_id, id",
228-
leave_if=lambda a: a.get('attendee_id')), )
236+
leave_if=lambda a: a.get('attendee_id')),)
229237
schema = UserSchema
230238
data_layer = {'session': db.session,
231239
'model': User,
@@ -240,7 +248,7 @@ class UserRelationship(ResourceRelationship):
240248
"""
241249
User Relationship
242250
"""
243-
decorators = (is_user_itself, )
251+
decorators = (is_user_itself,)
244252
schema = UserSchema
245253
data_layer = {'session': db.session,
246254
'model': User}

app/models/mail.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
NEXT_EVENT = 'Next Event'
1212
NEW_SESSION = 'New Session Proposal'
1313
PASSWORD_RESET = 'Reset Password'
14+
PASSWORD_RESET_AND_VERIFY = 'Reset Password and Account Verification'
1415
PASSWORD_CHANGE = 'Change Password'
1516
EVENT_ROLE = 'Event Role Invitation'
1617
SESSION_ACCEPT_REJECT = 'Session Accept or Reject'

0 commit comments

Comments
 (0)