added mastodon oauth dance
This commit is contained in:
parent
eb0252f235
commit
f9033a009f
|
@ -10,6 +10,7 @@ import jwt
|
||||||
import pylibscrypt
|
import pylibscrypt
|
||||||
import smtplib
|
import smtplib
|
||||||
import tweepy
|
import tweepy
|
||||||
|
from mastodon import Mastodon
|
||||||
# from bottle_auth import AuthPlugin
|
# from bottle_auth import AuthPlugin
|
||||||
|
|
||||||
|
|
||||||
|
@ -261,7 +262,7 @@ def twitter_callback():
|
||||||
try:
|
try:
|
||||||
request_token = db.cur.fetchone()[0]
|
request_token = db.cur.fetchone()[0]
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return "Could not get request token from db." # but would anyone see this return value?
|
return "Could not get request token from db."
|
||||||
db.cur.execute("DELETE FROM twitter_request_tokens WHERE user_id = ?;", (get_user_id(email)))
|
db.cur.execute("DELETE FROM twitter_request_tokens WHERE user_id = ?;", (get_user_id(email)))
|
||||||
db.conn.commit()
|
db.conn.commit()
|
||||||
auth.request_token = { "oauth_token" : request_token,
|
auth.request_token = { "oauth_token" : request_token,
|
||||||
|
@ -282,13 +283,34 @@ def login_mastodon():
|
||||||
Starts the mastodon OAuth authentication process.
|
Starts the mastodon OAuth authentication process.
|
||||||
:return: redirect to twitter.
|
:return: redirect to twitter.
|
||||||
"""
|
"""
|
||||||
instance_url = bottle.request.forms.get('instance_url')
|
email = bottle.request.get_cookie("account", secret=secret)
|
||||||
# if instance_url not in db.mastodon_instances: register app, save client_id & client_secret to db
|
|
||||||
# Mastodon_login() -> access token. write access token to db.mastodon_accounts
|
|
||||||
# set Cookie "logged in as $username" or so. js could also display disable button now
|
|
||||||
# redirect /settings
|
|
||||||
return "logging in with mastodon is not implemented yet."
|
|
||||||
|
|
||||||
|
# get app tokens
|
||||||
|
instance_url = bottle.request.forms.get('instance_url')
|
||||||
|
db.cur.execute("SELECT client_id, client_secret FROM mastodon_instances WHERE instance = ?;", (instance_url))
|
||||||
|
try:
|
||||||
|
client_id, client_secret = db.cur.fetchone()[0]
|
||||||
|
except TypeError:
|
||||||
|
id = "ticketfrei" + str(secret)[0:4]
|
||||||
|
client_id, client_secret = Mastodon.create_app(id, api_base_url=instance_url)
|
||||||
|
db.cur.execute("INSERT INTO mastodon_instances(instance, client_id, client_secret) VALUES(?, ?, ?);",
|
||||||
|
(instance_url, client_id, client_secret))
|
||||||
|
db.conn.commit()
|
||||||
|
|
||||||
|
# get access token and write it to db
|
||||||
|
uname = bottle.request.forms.get('uname')
|
||||||
|
psw = bottle.request.forms.get('psw')
|
||||||
|
mastodon = Mastodon(
|
||||||
|
client_id=client_id,
|
||||||
|
client_secret=client_secret,
|
||||||
|
api_base_url=instance_url
|
||||||
|
)
|
||||||
|
access_token = mastodon.log_in(uname, psw)
|
||||||
|
db.cur.execute("SELECT id FROM mastodon_instances WHERE instance = ?;", (instance_url))
|
||||||
|
instance_id = db.cur.fetchone()[0]
|
||||||
|
db.cur.execute("INSERT INTO mastodon_accounts(user_id, access_token, instance_id, active) VALUES(?, ?, ?, ?);",
|
||||||
|
(get_user_id(email), access_token, instance_id, 1))
|
||||||
|
return bottle.redirect("/settings")
|
||||||
|
|
||||||
@app.route('/static/<filename:path>')
|
@app.route('/static/<filename:path>')
|
||||||
def static(filename):
|
def static(filename):
|
||||||
|
|
Loading…
Reference in a new issue