ソースを参照

Add AccountActivation model

Son NK 5 年 前
コミット
c025acc826
1 ファイル変更19 行追加1 行削除
  1. 19 1
      app/models.py

+ 19 - 1
app/models.py

@@ -6,7 +6,7 @@ import arrow
 import bcrypt
 from flask import url_for
 from flask_login import UserMixin
-from sqlalchemy import text, desc
+from sqlalchemy import text, desc, CheckConstraint
 from sqlalchemy_utils import ArrowType
 
 from app import s3
@@ -906,3 +906,21 @@ class Mailbox(db.Model, ModelMixin):
 
     def __repr__(self):
         return f"<Mailbox {self.email}>"
+
+
+class AccountActivation(db.Model, ModelMixin):
+    """contains code to activate the user account when they sign up on mobile"""
+
+    user_id = db.Column(
+        db.ForeignKey(User.id, ondelete="cascade"), nullable=False, unique=True
+    )
+    # the activation code is usually 6 digits
+    code = db.Column(db.String(10), unique=True, nullable=False)
+
+    # nb tries decrements each time user enters wrong code
+    tries = db.Column(db.Integer, default=3, nullable=False)
+
+    __table_args__ = (
+        CheckConstraint(tries >= 0, name="account_activation_tries_positive"),
+        {},
+    )