Exemple #1
0
    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'])
Exemple #2
0
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')))
Exemple #3
0
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')))
Exemple #4
0
    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()
Exemple #5
0
    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()
Exemple #6
0
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'))
Exemple #7
0
 def __init__(self, email, password):
     self.email = email
     self.password = hash_pwd(password)
     self.upgraded = False
     self.registered_on = datetime.utcnow()
Exemple #8
0
 def __init__(self, email, password):
     self.email = email
     self.password = hash_pwd(password)
     self.upgraded = False
     self.registered_on = datetime.utcnow()