src/auth/models.py : classe User Flask-Login (#73)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import sqlite3
|
||||
|
||||
from src.auth import db
|
||||
|
||||
|
||||
class User:
|
||||
def __init__(self, row: sqlite3.Row):
|
||||
self.id: int = row["id"]
|
||||
self.email: str = row["email"]
|
||||
self.email_verified: bool = bool(row["email_verified"])
|
||||
|
||||
@property
|
||||
def is_authenticated(self) -> bool:
|
||||
return True
|
||||
|
||||
@property
|
||||
def is_active(self) -> bool:
|
||||
return True
|
||||
|
||||
@property
|
||||
def is_anonymous(self) -> bool:
|
||||
return False
|
||||
|
||||
def get_id(self) -> str:
|
||||
return str(self.id)
|
||||
|
||||
|
||||
def load_user(user_id: str) -> User | None:
|
||||
try:
|
||||
uid = int(user_id)
|
||||
except (TypeError, ValueError):
|
||||
return None
|
||||
row = db.get_user_by_id(uid)
|
||||
return User(row) if row else None
|
||||
@@ -0,0 +1,29 @@
|
||||
from src.auth import db
|
||||
from src.auth.models import User, load_user
|
||||
|
||||
|
||||
def test_user_from_row(users_db_path):
|
||||
db.init_schema()
|
||||
uid = db.create_user("a@b.c", "hash")
|
||||
db.set_email_verified(uid)
|
||||
row = db.get_user_by_id(uid)
|
||||
user = User(row)
|
||||
assert user.id == uid
|
||||
assert user.email == "a@b.c"
|
||||
assert user.is_authenticated is True
|
||||
assert user.is_active is True
|
||||
assert user.is_anonymous is False
|
||||
assert user.get_id() == str(uid)
|
||||
|
||||
|
||||
def test_load_user_returns_none_if_missing(users_db_path):
|
||||
db.init_schema()
|
||||
assert load_user("999999") is None
|
||||
|
||||
|
||||
def test_load_user_returns_user(users_db_path):
|
||||
db.init_schema()
|
||||
uid = db.create_user("a@b.c", "h")
|
||||
user = load_user(str(uid))
|
||||
assert user is not None
|
||||
assert user.id == uid
|
||||
Reference in New Issue
Block a user