Reputation: 433
from datetime import datetime
from werkzeug.security import generate_password_hash
from werkzeug.security import check_password_hash
from flask_login import UserMixin
from app import db
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(64), index=True, unique=True)
password_hash = db.Column(db.String(64))
posts = db.relationship('Post', backref='author', lazy='dynamic')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def __repr__(self):
return '<User{}>'.format(self.username)
After reading the official documentation I couldn't yet understand the purpose of UserMixin
. Can anyone please describe it in brief?
Upvotes: 24
Views: 36750
Reputation: 2379
Flask-login requires a User model with the following properties:
UserMixin class provides the implementation of this properties. Its the reason you can call for example is_authenticated
to check if login credentials provide is correct or not instead of having to write a method to do that yourself.
Upvotes: 51