def __init__(self, info): if info['type'] == 'MLH': # if creating a MyMLH user self.email = info['data']['email'] self.fname = info['data']['first_name'] self.lname = info['data']['last_name'] self.status = status.NEW self.created = datetime.utcnow() self.major = info['data']['major'] self.shirt_size = info['data']['shirt_size'] self.dietary_restrictions = info['data']['dietary_restrictions'] self.birthday = info['data']['date_of_birth'] self.gender = info['data']['gender'] self.phone_number = info['data']['phone_number'] self.special_needs = info['data']['special_needs'] self.checked_in = False self.mlh_id = info['data']['id'] self.type = 'MLH' self.access_token = info['access_token'] self.school_id = info['data']['school']['id'] self.school_name = info['data']['school']['name'] self.confirmed = False elif info[ 'type'] == 'local': # if creating an user through local sign up self.email = info['email'] self.password = hash_pwd(info['password']) self.created = datetime.utcnow() self.type = 'local' self.status = status.NEW self.checked_in = False self.confirmed = False # TODO: defer to application page """ self.birthday = info['date_of_birth'] self.major = info['major'] self.shirt_size = info['shirt_size'] self.dietary_restrictions = info['dietary_restrictions'] self.gender = info['gender'] self.phone_number = info['phone_number'] self.special_needs = info['special_needs'] self.school_name = info['school_name'] """ else: # creating a non-OAuth user email = info['email'].lower().strip() # email_validation = validate_email(email) #TODO: Email validation # if not email_validation['is_valid']: # if email_validation['did_you_mean']: # raise ValueError('%s is an invalid address. Perhaps you meant %s' % (email, email_validation['did_you_mean'])) # else: # raise ValueError('%s is an invalid address' % email) self.email = email self.fname = info['fname'] self.lname = info['lname'] if info['type'] == 'corporate': # User account for a recruiter self.type = 'corporate' else: # User account for admins self.type = 'admin' self.password = hash_pwd(info['password'])
def reset_password(digest): if request.method == 'GET': user = User.from_password_reset(request.args['email'], digest) if user: login_user(user, remember=True) return render_template('users/reset.html', digest=digest) else: flash('The link you used to come to this screen has expired. Please try the reset process again.', 'error') return redirect(url_for('login', next=request.args.get('next'))) elif request.method == 'POST': email = current_user.email # at this point the user is already logged user = User.from_password_reset(current_user.email, digest) if user and user.id == current_user.id: if request.form['password1'] == request.form['password2']: user.password = hash_pwd(request.form['password1']) DB.session.add(user) DB.session.commit() flash('Changed password successfully!', 'success') return redirect(request.args.get('next') or url_for('dashboard')) else: flash("The passwords don't match!", 'warning') return redirect(url_for('reset-password', digest=digest, next=request.args.get('next'))) else: flash('<b>Failed to reset password</b>. The link you used to come to this screen has expired. Please try the reset process again.', 'error') return redirect(url_for('login', next=request.args.get('next')))
def reset_password(digest): if request.method == 'GET': email = request.args['email'].lower().strip() user = User.from_password_reset(email, digest) if user: login_user(user, remember=True) return render_template('users/reset.html', digest=digest) else: flash( u'The link you used to come to this screen has expired. ' 'Please try the reset process again.', 'error') return redirect(url_for('login', next=request.args.get('next'))) elif request.method == 'POST': user = User.from_password_reset(current_user.email, digest) if user and user.id == current_user.id: if request.form['password1'] == request.form['password2']: user.password = hash_pwd(request.form['password1']) DB.session.add(user) DB.session.commit() flash(u'Changed password successfully!', 'success') return redirect( request.args.get('next') or url_for('dashboard')) else: flash(u"The passwords don't match!", 'warning') return redirect( url_for('reset-password', digest=digest, next=request.args.get('next'))) else: flash( u'<b>Failed to reset password</b>. The link you used ' 'to come to this screen has expired. Please try the reset ' 'process again.', 'error') return redirect(url_for('login', next=request.args.get('next')))
def __init__(self, email, password): email = email.lower().strip() if not IS_VALID_EMAIL(email): raise ValueError('Cannot create User. %s is not a valid email.' % email) self.email = email self.password = hash_pwd(password) self.upgraded = False self.registered_on = datetime.utcnow()
def reset_password(token): try: email = timed_serializer.loads(token, salt=settings.RECOVER_SALT, max_age=86400) user = User.query.filter_by(email=email).first() except Exception as e: g.log.error('error: {}'.format(e)) return render_template('layouts/error.html', error="That's an invalid link"), 401 if request.method == 'GET': # find the correct user and log them in then prompt them for new password return render_template('users/reset_password.html') else: # take the password they've submitted and change it accordingly password = request.form.get('password') password_check = request.form.get('password-check') if not password or not password_check: flash('Please fill out all required fields!', 'error') return redirect(request.url) if user: if request.form.get('password') == request.form.get( 'password-check'): user.password = helpers.hash_pwd(request.form['password']) DB.session.add(user) DB.session.commit() login_user(user, remember=True) flash('Succesfully changed password!', 'success') return redirect(url_for('dashboard')) else: flash('You need to enter the same password in both fields!', 'error') return redirect(url_for('reset-password'), token=token) else: flash( 'Failed to reset password. This is an invalid link. Please contact us if this error persists', 'error') return redirect(url_for('forgot-password'))
def __init__(self, email, password): self.email = email self.password = hash_pwd(password) self.upgraded = False self.registered_on = datetime.utcnow()