diff --git a/requirements.txt b/requirements.txt
index ae09db0..a22d459 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1,2 @@
-Flask==1.0.2
\ No newline at end of file
+Flask==1.0.2
+bcrypt==3.1.4
\ No newline at end of file
diff --git a/templates/home.html b/templates/home.html
index fabc4dd..dcc3425 100644
--- a/templates/home.html
+++ b/templates/home.html
@@ -7,7 +7,7 @@
-Welcome, {{ acct }}
+Welcome
You're all set up and ready to go.
Curious Greg will not function without JavaScript. Please ensure you have JavaScript enabled.
diff --git a/web.py b/web.py
index 845b57b..203fcf0 100755
--- a/web.py
+++ b/web.py
@@ -7,12 +7,13 @@
import requests, sqlite3, json
from mastodon import Mastodon
from flask import Flask, render_template, request, session, redirect, url_for
+import urllib
cfg = json.load(open("meta.json"))
db = sqlite3.connect("database.db")
c = db.cursor()
-c.execute("CREATE TABLE IF NOT EXISTS `data` (username VARCHAR NOT NULL, appid VARCHAR NOT NULL, appsecret VARCHAR NOT NULL, secret VARCHAR NOT NULL, latest_post VARCHAR)")
+c.execute("CREATE TABLE IF NOT EXISTS `data` (secret TEXT NOT NULL, appid TEXT NOT NULL, appsecret TEXT NOT NULL, cc VARCHAR, latest_post VARCHAR)")
app = Flask(cfg['name'])
app.secret_key = cfg['flask_key']
@@ -26,36 +27,47 @@ def main():
@app.route('/home')
def home():
- return render_template("home.html")
+ if 'acct' in session:
+ acct = session['acct']
+ return render_template("home.html", acct=acct)
+ else:
+ return redirect(url_for('main'))
@app.route('/internal/auth_a')
def internal_auth_a():
- client_id = "abc"
- client_secret = "123"
- instance_url = request.args.get('url', default='mastodon.social', type=str)
- if not instance_url.startswith("https://"):
- instance_url = "https://{}".format(instance_url)
+ session['instance_url'] = request.args.get('url', default='mastodon.social', type=str)
+ if not session['instance_url'].startswith("https://"):
+ session['instance_url'] = "https://{}".format(session['instance_url'])
- # client_id, client_secret = Mastodon.create_app(cfg['name'],
- # api_base_url=instance_url,
- # scopes="write:statuses",
- # website=cfg['website'])
-
- #example URL:
- #https://fedi.lynnesbian.space/oauth/authorize?scope=read:favourites&response_type=code&redirect_uri=https://t5.codesections.com&client_id=CLIENT_ID_HERE&client_secret=CLIENT_SECRET_HERE
-
- # client_info = {
- # "client_id": client_id,
- # "client_secret":client_secret,
- # "scopes":"write:statuses",
- # "website": cfg['website']
- # }
-
- url = "{}/oauth/authorize?scope=write:statuses&response_type=code&redirect_url=https://lynnesbian.space/cg/internal/auth_b&client_id={}&client_secret={}".format(
- instance_url, client_id, client_secret
+ session['client_id'], session['client_secret'] = Mastodon.create_app(cfg['name'],
+ api_base_url=session['instance_url'],
+ scopes=["write:statuses"],
+ website=cfg['website'],
+ redirect_uris=['https://cg.lynnesbian.space/internal/auth_b']
)
+ params = {
+ "client_id": session['client_id'],
+ "client_secret":session['client_secret'],
+ "scope":"write:statuses",
+ "redirect_uri": "https://cg.lynnesbian.space/internal/auth_b",
+ "response_type":"code",
+ }
+
+ url = "{}/oauth/authorize?{}".format(session['instance_url'], urllib.parse.urlencode(params))
+
return url
+@app.route('/internal/auth_b')
+def internal_auth_b():
+ session['secret'] = request.args.get('code')
+ #write details to DB
+ c.execute("INSERT INTO data (secret, appid, appsecret) VALUES (?, ?, ?, ?)", (session['secret'], session['client_id'], session['client_secret']))
+ db.commit()
+
+@app.route('/debug')
+def print_debug_info():
+ return json.dumps(session._get_current_object())
+
# return(json.dumps(client_info))