From 133467aa3707acc3492f9e63d9bd508250381a15 Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Fri, 21 Jul 2017 10:09:32 +0200
Subject: [PATCH] Add profile page to generate token

---
 app/templates/base.html          |  1 +
 app/templates/users/profile.html | 23 +++++++++++++++++++++++
 app/users/views.py               | 16 +++++++++++++++-
 3 files changed, 39 insertions(+), 1 deletion(-)
 create mode 100644 app/templates/users/profile.html

diff --git a/app/templates/base.html b/app/templates/base.html
index 4c13148..342ca70 100644
--- a/app/templates/base.html
+++ b/app/templates/base.html
@@ -44,6 +44,7 @@
             <li class="dropdown">
               <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{current_user}} <span class="caret"></span></a>
               <ul class="dropdown-menu">
+                <li><a href="{{ url_for('users.profile') }}">Profile</a></li>
                 <li><a href="{{ url_for('users.logout') }}">Logout</a></li>
               </ul>
             </li>
diff --git a/app/templates/users/profile.html b/app/templates/users/profile.html
new file mode 100644
index 0000000..e2e082b
--- /dev/null
+++ b/app/templates/users/profile.html
@@ -0,0 +1,23 @@
+{% import "bootstrap/wtf.html" as wtf %}
+{% extends "base.html" %}
+
+{% block title %}Profile{% endblock %}
+
+{% block main %}
+  <div class="page-header">
+    <h2>{{ user.username }}</h2>
+  </div>
+  <dl>
+    <dt>Name</dt>
+    <dd>{{user.name}}</dd>
+    <dt>Email</dt>
+    <dd>{{user.email}}</dd>
+    <dt>Role</dt>
+    <dd>{{ user.role }}</dd>
+    {% if token %}
+    <dt>Token</dt>
+    <dd>{{ token }}</dd>
+    {% endif %}
+  </dl>
+  <a class="btn btn-default" href="{{ url_for('users.get_token') }}" role="button">Generate Token</a>
+{% endblock %}
diff --git a/app/users/views.py b/app/users/views.py
index 10cd48d..f4ab009 100644
--- a/app/users/views.py
+++ b/app/users/views.py
@@ -10,8 +10,9 @@ This module implements the users blueprint.
 
 """
 from flask import Blueprint, render_template, request, redirect, url_for
-from flask_login import login_user, logout_user, login_required
+from flask_login import login_user, logout_user, login_required, current_user
 from flask_ldap3_login.forms import LDAPLoginForm
+from flask_jwt_extended import create_access_token
 
 bp = Blueprint('users', __name__)
 
@@ -30,3 +31,16 @@ def login():
 def logout():
     logout_user()
     return redirect(url_for('users.login'))
+
+
+@bp.route('/profile')
+@login_required
+def profile():
+    return render_template('users/profile.html', user=current_user, token='')
+
+
+@bp.route('/token')
+@login_required
+def get_token():
+    token = create_access_token(identity=current_user.id)
+    return render_template('users/profile.html', user=current_user, token=token)
-- 
GitLab