def verify_email(username, code): """ Verifies to the system that an email address exists, and assigns it to a user. Expected to be used only by users clicking links in email-verfication emails. Not part of the documented API. """ change_request = PendingEmail(username) if not change_request.in_db: return "No such change request", 404, PLAINTEXT_HEADER email_change_days = config.config.getint('nemesis', 'email_change_days') max_age = timedelta(days=email_change_days) if change_request.age > max_age: return "Request not valid", 410, PLAINTEXT_HEADER if change_request.verify_code != code: return "Invalid verification code", 403, PLAINTEXT_HEADER log_action('changing email', user=username, new_email=change_request.new_email) u = User(change_request.username) u.set_email(change_request.new_email) u.save() return "Email address successfully changed", 200, PLAINTEXT_HEADER
def verify_email(username, code): """ Verifies to the system that an email address exists, and assigns it to a user. Expected to be used only by users clicking links in email-verfication emails. Not part of the documented API. """ change_request = PendingEmail(username) if not change_request.in_db: return "No such change request", 404 if change_request.age > timedelta(days=2): return "Request not valid", 410 if change_request.verify_code != code: return "Invalid verification code", 403 log_action('changing email', user=username, new_email=change_request.new_email) u = User(change_request.username) u.set_email(change_request.new_email) u.save() return "Email address successfully changed", 200
def verify_email(username, code): """ Verifies to the system that an email address exists, and assigns it to a user. Expected to be used only by users clicking links in email-verfication emails. Not part of the documented API. """ change_request = PendingEmail(username) if not change_request.in_db: return "No such change request", 404, PLAINTEXT_HEADER email_change_days = config.config.getint('nemesis', 'email_change_days') max_age = timedelta(days = email_change_days) if change_request.age > max_age: return "Request not valid", 410, PLAINTEXT_HEADER if change_request.verify_code != code: return "Invalid verification code", 403, PLAINTEXT_HEADER log_action('changing email', user = username, new_email = change_request.new_email) u = User(change_request.username) u.set_email(change_request.new_email) u.save() return "Email address successfully changed", 200, PLAINTEXT_HEADER
def verify_email(username, code): """ Verifies to the system that an email address exists, and assigns it to a user. Expected to be used only by users clicking links in email-verfication emails. Not part of the documented API. """ change_request = PendingEmail(username) if not change_request.in_db: return "No such change request", 404 if change_request.age > timedelta(days = 2): return "Request not valid", 410 if change_request.verify_code != code: return "Invalid verification code", 403 log_action('changing email', user = username, new_email = change_request.new_email) u = User(change_request.username) u.set_email(change_request.new_email) u.save() return "Email address successfully changed", 200
def activate_account(username, code): """ Verifies to the system that an email address exists, and that the related account should be made into a full account. Expected to be used only by users clicking links in account-activation emails. Not part of the documented API. """ pu = PendingUser(username) if not pu.in_db: return "No such user account", 404 if pu.age > timedelta(days=2): return "Request not valid", 410 if pu.verify_code != code: return "Invalid verification code", 403 log_action('activating user', pu) from libnemesis import srusers new_pass = srusers.users.GenPasswd() u = User(username) u.set_email(pu.email) u.set_team(pu.team) u.set_college(pu.college) u.set_password(new_pass) u.make_student() u.save() # let the team-leader know rq_user = User.create_user(pu.teacher_username) email_vars = { 'name': rq_user.first_name, 'au_username': username, 'au_first_name': u.first_name, 'au_last_name': u.last_name } mailer.email_template(rq_user.email, 'user_activated_team_leader', email_vars) pu.delete() html = open(PATH + "/templates/activate.html").read() replacements = { 'first_name': u.first_name, 'last_name': u.last_name, 'password': new_pass, 'email': u.email, 'username': username, 'root': url_for('.index') } html = html.format(**replacements) return html, 200
def activate_account(username, code): """ Verifies to the system that an email address exists, and that the related account should be made into a full account. Expected to be used only by users clicking links in account-activation emails. Not part of the documented API. """ pu = PendingUser(username) if not pu.in_db: return "No such user account", 404 if pu.age > timedelta(days = 2): return "Request not valid", 410 if pu.verify_code != code: return "Invalid verification code", 403 log_action('activating user', pu) from libnemesis import srusers new_pass = srusers.users.GenPasswd() u = User(username) u.set_email(pu.email) u.set_team(pu.team) u.set_college(pu.college) u.set_password(new_pass) u.make_student() u.save() # let the team-leader know rq_user = User.create_user(pu.teacher_username) email_vars = { 'name': rq_user.first_name, 'au_username': username, 'au_first_name': u.first_name, 'au_last_name': u.last_name } mailer.email_template(rq_user.email, 'user_activated_team_leader', email_vars) pu.delete() html = open(PATH + "/templates/activate.html").read() replacements = { 'first_name': u.first_name , 'last_name': u.last_name , 'password': new_pass , 'email': u.email , 'username': username , 'root': url_for('.index') } html = html.format(**replacements) return html, 200
def test_verify_success(): username = "******" old_email = User(username).email new_email = "*****@*****.**" setup_new_email('student_coll1_1', new_email, 'bees') r,data = test_helpers.server_get("/verify/" + username + "/bees") status = r.status assert status == 200, data u = User(username) email = u.email # restore the original first u.set_email(old_email) u.save() assert email == new_email
def test_verify_success(): username = "******" old_email = User(username).email new_email = "*****@*****.**" setup_new_email('student_coll1_1', new_email, 'bees') r, data = test_helpers.server_get("/verify/" + username + "/bees") status = r.status assert status == 200, data u = User(username) email = u.email # restore the original first u.set_email(old_email) u.save() assert email == new_email