From 45d4cd2062a91b53d7bff9064d6cfdde6107590c Mon Sep 17 00:00:00 2001
From: b3yond <b3yond@riseup.net>
Date: Sat, 14 Apr 2018 17:00:30 +0200
Subject: [PATCH 1/3] fixed url() call

---
 frontend.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/frontend.py b/frontend.py
index 2fd598d..35a9dc5 100755
--- a/frontend.py
+++ b/frontend.py
@@ -104,7 +104,7 @@ def login_twitter(user):
     try:
         consumer_key = config["twitter"]["consumer_key"]
         consumer_secret = config["twitter"]["consumer_secret"]
-        callback_url = url("/login/twitter/callback")
+        callback_url = url("login/twitter/callback")
         auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url)
         try:
             redirect_url = auth.get_authorization_url()

From bf7c21c11344fff0a17769b5e3dfb7f37f8ade0f Mon Sep 17 00:00:00 2001
From: b3yond <b3yond@riseup.net>
Date: Sat, 14 Apr 2018 17:19:20 +0200
Subject: [PATCH 2/3] request token is a dict, not a string

---
 db.py   |  1 +
 user.py | 11 ++++++-----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/db.py b/db.py
index d6c52bc..29fa78c 100644
--- a/db.py
+++ b/db.py
@@ -79,6 +79,7 @@ class DB(object):
                 id          INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
                 user_id     INTEGER,
                 request_token   TEXT,
+                request_token_secret TEXT,
                 FOREIGN KEY(user_id) REFERENCES user(id)
             );
             CREATE TABLE IF NOT EXISTS twitter_accounts (
diff --git a/user.py b/user.py
index 703f9ab..427bf2d 100644
--- a/user.py
+++ b/user.py
@@ -128,16 +128,17 @@ class User(object):
         return dict(foo='bar')
 
     def save_request_token(self, token):
-        db.execute("INSERT INTO twitter_request_tokens(user_id, request_token) VALUES(?, ?);",
-                   (self.uid, token))
+        db.execute("INSERT INTO twitter_request_tokens(user_id, request_token, request_token_secret) VALUES(?, ?, ?);",
+                   (self.uid, token["oauth_token"], token["oauth_token_secret"]))
         db.commit()
 
     def get_request_token(self):
-        db.execute("SELECT request_token FROM twitter_request_tokens WHERE user_id = ?;", (id,))
-        request_token = db.cur.fetchone()[0]
+        db.execute("SELECT request_token, request_token_secret FROM twitter_request_tokens WHERE user_id = ?;", (id,))
+        request_token = db.cur.fetchone()
         db.execute("DELETE FROM twitter_request_tokens WHERE user_id = ?;", (id,))
         db.commit()
-        return request_token
+        return {"oauth_token" : request_token[0],
+                "oauth_token_secret" : request_token[1]}
 
     def save_twitter_token(self, access_token, access_token_secret):
         db.execute(

From 4d556ec595815a542e81c1970a297a541218219c Mon Sep 17 00:00:00 2001
From: b3yond <b3yond@riseup.net>
Date: Sat, 14 Apr 2018 17:31:01 +0200
Subject: [PATCH 3/3] don't do except all -.- rather repair the fcking logging.

---
 frontend.py | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/frontend.py b/frontend.py
index 35a9dc5..585af01 100755
--- a/frontend.py
+++ b/frontend.py
@@ -101,21 +101,18 @@ def login_twitter(user):
     Starts the twitter OAuth authentication process.
     :return: redirect to twitter.
     """
+    consumer_key = config["twitter"]["consumer_key"]
+    consumer_secret = config["twitter"]["consumer_secret"]
+    callback_url = url("login/twitter/callback")
+    auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url)
     try:
-        consumer_key = config["twitter"]["consumer_key"]
-        consumer_secret = config["twitter"]["consumer_secret"]
-        callback_url = url("login/twitter/callback")
-        auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url)
-        try:
-            redirect_url = auth.get_authorization_url()
-        except tweepy.TweepError:
-            logger.error('Twitter OAuth Error: Failed to get request token.',
-                         exc_info=True)
-            return dict(error="Failed to get request token.")
-        user.save_request_token(auth.request_token)
-        return bottle.redirect(redirect_url)
-    except Exception:
-        logger.error("Error with Sign in with Twitter.", exc_info= True)
+        redirect_url = auth.get_authorization_url()
+    except tweepy.TweepError:
+        logger.error('Twitter OAuth Error: Failed to get request token.',
+                     exc_info=True)
+        return dict(error="Failed to get request token.")
+    user.save_request_token(auth.request_token)
+    return bottle.redirect(redirect_url)
 
 
 @get('/login/twitter/callback')
@@ -174,3 +171,5 @@ bottle.install(SessionPlugin('/'))
 if __name__ == '__main__':
     # testing only
     bottle.run(host='localhost', port=8080)
+else:
+    application.catchall = False