diff --git a/app/models.py b/app/models.py
index d6bccb0251f9667814e5a878cea238f559572ab0..d7d33b853f8078707899253fe68ce4c2979603dd 100644
--- a/app/models.py
+++ b/app/models.py
@@ -1,4 +1,6 @@
+from flask import current_app
 from flask_login import UserMixin
+from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
 from werkzeug.security import generate_password_hash, check_password_hash
 from . import db
 from . import login_manager
@@ -26,6 +28,10 @@ class User(UserMixin, db.Model):
 
     password_hash = db.Column(db.String(128))
 
+    def generate_reset_token(self, expiration=3600):
+        s = Serializer(current_app.config['SECRET_KEY'], expiration)
+        return s.dumps({'reset': self.id}).decode('utf-8')
+
     @property
     def password(self):
         raise AttributeError('password is not a readable attribute')