@@ -0,0 +1,31 @@
|
||||
from sqlalchemy import Column, DateTime, String, Text
|
||||
|
||||
from app import db
|
||||
from .base import TimestampMixin, default_uuid
|
||||
|
||||
|
||||
class KioskDevice(db.Model, TimestampMixin):
|
||||
"""Persistent registry of kiosk terminals."""
|
||||
|
||||
__tablename__ = "kiosk_device"
|
||||
|
||||
id = Column(String(36), primary_key=True, default=default_uuid)
|
||||
device_fingerprint = Column(String(255), nullable=True)
|
||||
display_name = Column(String(120), nullable=False, default="terminal")
|
||||
status = Column(String(20), nullable=False, default="pending") # pending|active|revoked
|
||||
access_slug = Column(String(64), nullable=True, unique=True, index=True)
|
||||
last_seen_at = Column(DateTime, nullable=True)
|
||||
last_ip = Column(String(45), nullable=True)
|
||||
|
||||
|
||||
class KioskPairToken(db.Model):
|
||||
"""One-time short-lived token for QR pairing."""
|
||||
|
||||
__tablename__ = "kiosk_pair_token"
|
||||
|
||||
id = Column(String(36), primary_key=True, default=default_uuid)
|
||||
token = Column(String(255), nullable=False, unique=True, index=True)
|
||||
device_id = Column(String(36), nullable=False, index=True)
|
||||
expires_at = Column(DateTime, nullable=False)
|
||||
used_at = Column(DateTime, nullable=True)
|
||||
issued_for = Column(Text, nullable=True)
|
||||
Reference in New Issue
Block a user