From 03df0b8a6d1285fa4aa17e6c4216dd2716a9ac47 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Thu, 3 Jan 2019 21:18:10 -0800 Subject: account page and renaming --- python/fatcat_web/__init__.py | 12 +++------ python/fatcat_web/auth.py | 14 +++++++--- python/fatcat_web/routes.py | 31 ++++++++++++++++++----- python/fatcat_web/templates/auth_account.html | 27 ++++++++++++++++++++ python/fatcat_web/templates/base.html | 15 ++++++++++- python/fatcat_web/templates/editor_changelog.html | 4 +-- python/fatcat_web/templates/editor_view.html | 4 +-- 7 files changed, 85 insertions(+), 22 deletions(-) create mode 100644 python/fatcat_web/templates/auth_account.html (limited to 'python') diff --git a/python/fatcat_web/__init__.py b/python/fatcat_web/__init__.py index 9cd5f812..0afee70e 100644 --- a/python/fatcat_web/__init__.py +++ b/python/fatcat_web/__init__.py @@ -23,21 +23,17 @@ oauth = OAuth(app) sentry = Sentry(app) conf = fatcat_client.Configuration() -conf.host = "http://localhost:9411/v0" +conf.host = Config.FATCAT_API_HOST api = fatcat_client.DefaultApi(fatcat_client.ApiClient(conf)) +from fatcat_web import routes, auth + if Config.FATCAT_API_AUTH_TOKEN: print("Found and using privileged token (eg, for account signup)") - priv_conf = fatcat_client.Configuration() - priv_conf.api_key["Authorization"] = Config.FATCAT_API_AUTH_TOKEN - priv_conf.api_key_prefix["Authorization"] = "Bearer" - priv_conf.host = 'http://localhost:9411/v0' - priv_api = fatcat_client.DefaultApi(fatcat_client.ApiClient(local_conf)) + priv_api = auth.auth_api(Config.FATCAT_API_AUTH_TOKEN) else: print("No privileged token found") priv_api = None -from fatcat_web import routes, auth - gitlab_bp = create_flask_blueprint(Gitlab, oauth, auth.handle_oauth) app.register_blueprint(gitlab_bp, url_prefix='/auth/gitlab') diff --git a/python/fatcat_web/auth.py b/python/fatcat_web/auth.py index 385f5c49..c6e6f04c 100644 --- a/python/fatcat_web/auth.py +++ b/python/fatcat_web/auth.py @@ -1,10 +1,17 @@ from flask import Flask, render_template, send_from_directory, request, \ - url_for, abort, g, redirect, jsonify, session -from fatcat_web import login_manager, api + url_for, abort, g, redirect, jsonify, session, flash +from fatcat_web import login_manager, api, Config from flask_login import logout_user, login_user, UserMixin import pymacaroons +import fatcat_client +def auth_api(token): + conf = fatcat_client.Configuration() + conf.api_key["Authorization"] = token + conf.api_key_prefix["Authorization"] = "Bearer" + conf.host = Config.FATCAT_API_HOST + return fatcat_client.DefaultApi(fatcat_client.ApiClient(conf)) def handle_logout(): logout_user() @@ -31,7 +38,7 @@ def handle_token_login(token): session['api_token'] = token session['editor'] = editor login_user(load_user(editor_id)) - return redirect("/") + return redirect("/auth/account") # This will need to login/signup via fatcatd API, then set token in session def handle_oauth(remote, token, user_info): @@ -70,6 +77,7 @@ def load_user(editor_id): token = session['api_token'] user = UserMixin() user.id = editor_id + user.editor_id = editor_id user.username = editor['username'] user.token = token return user diff --git a/python/fatcat_web/routes.py b/python/fatcat_web/routes.py index 5d46fe0b..07947fd5 100644 --- a/python/fatcat_web/routes.py +++ b/python/fatcat_web/routes.py @@ -2,9 +2,10 @@ import os import json from flask import Flask, render_template, send_from_directory, request, \ - url_for, abort, g, redirect, jsonify, session + url_for, abort, g, redirect, jsonify, session, flash +from flask_login import login_required from fatcat_web import app, api -from fatcat_web.auth import handle_token_login, handle_logout +from fatcat_web.auth import handle_token_login, handle_logout, load_user, auth_api from fatcat_client.rest import ApiException from fatcat_web.search import do_search @@ -389,6 +390,23 @@ def token_login(): return handle_token_login(request.form.get('token')) return render_template('auth_token_login.html') +@app.route('/auth/change_username', methods=['POST']) +@login_required +def change_username(): + # show the user a list of login options + if not 'username' in request.form: + abort(400) + # on behalf of user... + user_api = auth_api(session['api_token']) + editor = user_api.get_editor(session['editor']['editor_id']) + editor.username = request.form['username'] + editor = user_api.update_editor(editor.editor_id, editor) + # update our session + session['editor'] = editor.to_dict() + load_user(editor.editor_id) + flash("Username updated successfully") + return redirect('/auth/account') + @app.route('/auth/logout') def logout(): # TODO: clear extra session info @@ -397,10 +415,11 @@ def logout(): @app.route('/auth/account') @login_required -def logout(): - # TODO: clear extra session info - handle_logout() - return render_template('auth_logout.html') +def auth_account(): + editor = api.get_editor(session['editor']['editor_id']) + session['editor'] = editor.to_dict() + load_user(editor.editor_id) + return render_template('auth_account.html') ### Static Routes ########################################################### diff --git a/python/fatcat_web/templates/auth_account.html b/python/fatcat_web/templates/auth_account.html new file mode 100644 index 00000000..57155722 --- /dev/null +++ b/python/fatcat_web/templates/auth_account.html @@ -0,0 +1,27 @@ +{% extends "base.html" %} +{% block body %} + +

Your Account

+ +

Username: {{ current_user.username }} +

Editor Id: {{ current_user.editor_id }} + +

+

Change username: +

+
+
+ + +
+
+
+
+ +

In the future, you might be able to... +

+ +{% endblock %} diff --git a/python/fatcat_web/templates/base.html b/python/fatcat_web/templates/base.html index 892ca788..27b163d2 100644 --- a/python/fatcat_web/templates/base.html +++ b/python/fatcat_web/templates/base.html @@ -34,7 +34,7 @@ {{ current_user.username }}