login and register
This commit is contained in:
@@ -2,15 +2,21 @@ from datetime import datetime, timezone
|
||||
from typing import Optional
|
||||
import sqlalchemy as sa
|
||||
import sqlalchemy.orm as so
|
||||
from app import db
|
||||
from app import db, login
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
from flask_login import UserMixin
|
||||
|
||||
class User(db.Model):
|
||||
class User(UserMixin, db.Model):
|
||||
id: so.Mapped[int] = so.mapped_column(primary_key=True)
|
||||
username: so.Mapped[str] = so.mapped_column(sa.String(64), index=True, unique=True)
|
||||
email: so.Mapped[str] = so.mapped_column(sa.String(120), index=True, unique=True)
|
||||
password_hash: so.Mapped[Optional[str]] = so.mapped_column(sa.String(256))
|
||||
posts: so.WriteOnlyMapped['Post'] = so.relationship(back_populates='author')
|
||||
|
||||
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)
|
||||
|
||||
@@ -25,3 +31,6 @@ class Post(db.Model):
|
||||
return '<Post {}>'.format(self.body)
|
||||
|
||||
|
||||
@login.user_loader
|
||||
def load_user(id):
|
||||
return db.session.get(User, int(id))
|
||||
|
Reference in New Issue
Block a user