def registration_request(email, ip): msg = Message( 'Registration Request', sender=current_app.config['MAIL_USERNAME'], recipients=current_app.config['REQUEST_REGISTRATION_EMAIL']) context = dict( request_email=email, request_ip=ip, approve_url=url_for( '.registration_request_action', action='approve', email=email, _external=True), deny_url=url_for( '.registration_request_action', action='deny', email=email, _external=True) ) msg.body = render_template('email/registration_request.plain', **context) msg.html = render_template('email/registration_request.html', **context) registration_request = UserRegistrationRequest(email, ip) registration_request.save() mail_session.send(msg) return jsonify(dict(request_received=True))
def registration_request_action(action='deny'): if not current_user.is_authenticated() or not current_user.is_admin: return api_alert_response('Access Denied.', 400, 'danger') if action not in ['approve', 'deny']: return api_alert_response('Invalid action.', 400, 'danger') email = request.args['email'] registration_request = UserRegistrationRequest.get_by_email(email) if not registration_request: return api_alert_response('Unable to find registration.', 400, 'danger') return reply_registration_request(registration_request, action)
def validate_token(form, field): if not UserRegistrationRequest.get_request(form.email.data, field.data): raise ValidationError("Invalid token and/or email.")
def validate_email(form, field): if User.get_by_email(field.data): raise ValidationError("This email is already registered") if UserRegistrationRequest.get_by_email(field.data): raise ValidationError("Registration already requested for this email.")