forked from ticketfrei/ticketfrei
tested Mastodon OAuth Login - works now.
This commit is contained in:
parent
81e2357e2f
commit
bd2599c91a
11
db.py
11
db.py
|
@ -11,13 +11,14 @@ from mastodon import Mastodon
|
|||
|
||||
class DB(object):
|
||||
def __init__(self):
|
||||
self.config = ticketfrei.get_config()
|
||||
self.logger = ticketfrei.get_logger(self.config)
|
||||
dbfile = path.join(path.dirname(path.abspath(__file__)),
|
||||
'ticketfrei.sqlite')
|
||||
self.conn = sqlite3.connect(dbfile)
|
||||
self.cur = self.conn.cursor()
|
||||
self.create()
|
||||
self.secret = urandom(32)
|
||||
self.config = ticketfrei.get_config()
|
||||
|
||||
def create(self):
|
||||
# init db
|
||||
|
@ -163,7 +164,9 @@ class User(object):
|
|||
def get_mastodon_app_keys(self, instance):
|
||||
self.db.cur.execute("SELECT client_id, client_secret FROM mastodon_instances WHERE instance = ?;", (instance, ))
|
||||
try:
|
||||
client_id, client_secret = self.db.cur.fetchone()[0]
|
||||
row = self.db.cur.fetchone()
|
||||
client_id = row[0]
|
||||
client_secret = row[1]
|
||||
return client_id, client_secret
|
||||
except TypeError:
|
||||
app_name = "ticketfrei" + str(self.db.secret)[0:4]
|
||||
|
@ -176,9 +179,9 @@ class User(object):
|
|||
def save_masto_token(self, access_token, instance):
|
||||
self.db.cur.execute("SELECT id FROM mastodon_instances WHERE instance = ?;", (instance, ))
|
||||
instance_id = self.db.cur.fetchone()[0]
|
||||
self.db.cur.execute("INSERT INTO mastodon_accounts(user_id, access_token, mastodon_instances_id, active) "
|
||||
self.db.cur.execute("INSERT INTO mastodon_accounts(user_id, access_token, instance_id, active) "
|
||||
"VALUES(?, ?, ?, ?);", (self.uid, access_token, instance_id, 1))
|
||||
self.db.commit()
|
||||
self.db.conn.commit()
|
||||
|
||||
|
||||
class DBPlugin(object):
|
||||
|
|
|
@ -94,7 +94,8 @@ def login_twitter(user):
|
|||
try:
|
||||
redirect_url = auth.get_authorization_url()
|
||||
except tweepy.TweepError:
|
||||
return 'Error! Failed to get request token.'
|
||||
user.db.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)
|
||||
|
||||
|
@ -127,7 +128,9 @@ def login_mastodon(user):
|
|||
# get app tokens
|
||||
instance_url = bottle.request.forms.get('instance_url')
|
||||
masto_email = bottle.request.forms.get('email')
|
||||
masto_pass = bottle.request.forms.get('password')
|
||||
print(masto_email)
|
||||
masto_pass = bottle.request.forms.get('pass')
|
||||
print(masto_pass)
|
||||
client_id, client_secret = user.get_mastodon_app_keys(instance_url)
|
||||
m = Mastodon(client_id=client_id, client_secret=client_secret, api_base_url=instance_url)
|
||||
try:
|
||||
|
@ -135,6 +138,7 @@ def login_mastodon(user):
|
|||
user.save_masto_token(access_token, instance_url)
|
||||
return dict(info='Thanks for supporting decentralized social networks!')
|
||||
except:
|
||||
user.db.logger.error('Login to Mastodon failed.', exc_info=True)
|
||||
return dict(error='Login to Mastodon failed.')
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue