Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @app.route("/reset_password/<token>", methods=['GET', 'POST'])
- def reset_token(token):
- if current_user.is_authenticated:
- return redirect(url_for('homepage'))
- user = User.verify_reset_token(token)
- if user is None:
- flash('That is an invalid or expired token', 'warning')
- return redirect(url_for('reset_request'))
- form = ResetPasswordForm()
- if form.validate_on_submit():
- user.password = hashed_password
- user.password =generate_password_hash(form.password.data, method='sha256')
- flash('Your password has been updated! You are now able to log in', 'success')
- return redirect(url_for('login'))
- return render_template('reset_token.html', title='Reset Password', form=form)
- class User(UserMixin, db.Document):
- meta = {'collection': 'users'}
- email = db.StringField(max_length=35)
- name = db.StringField(max_length=35)
- surname = db.StringField(max_length=35)
- password = db.StringField()
- username = db.StringField()
- image_file = db.StringField(nullable=False, default='static/img/default.jpg')
- skills = db.ListField(db.StringField())
- def get_reset_token(self, expires_sec=1800):
- s = Serializer(app.config['SECRET_KEY'], expires_sec)
- return s.dumps({'email': self.email}).decode('utf-8')
- @staticmethod
- def verify_reset_token(token):
- s = Serializer(app.config['SECRET_KEY'])
- try:
- email = s.loads(token)['email']
- except:
- return None
- return User.objects(email='email')
- def __repr__(self):
- return f"User('{self.email}', '{self.image_file}')"
- class RequestResetForm(FlaskForm):
- email = StringField('Email', validators=[validators.DataRequired()])
- submit = SubmitField('Request Password Reset')
- def validate_email(self, email):
- user = User.objects(email=email.data).first()
- if user is None:
- raise ValidationError('There is no account with that email. You must register first.')
- class ResetPasswordForm(FlaskForm):
- password = PasswordField('New Password', validators=[validators.DataRequired()])
- confirm_password = PasswordField('Confirm Password', validators=[validators.DataRequired(), validators.EqualTo('password')])
- submit = SubmitField('Reset Password')
Add Comment
Please, Sign In to add comment