aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wqflask/cfg/default_settings.py7
-rw-r--r--wqflask/secure_server.py24
-rw-r--r--wqflask/wqflask/templates/security/_macros.html16
-rw-r--r--wqflask/wqflask/templates/security/_menu.html15
-rw-r--r--wqflask/wqflask/templates/security/_messages.html9
-rw-r--r--wqflask/wqflask/templates/security/register_user.html45
6 files changed, 96 insertions, 20 deletions
diff --git a/wqflask/cfg/default_settings.py b/wqflask/cfg/default_settings.py
index 53b5a96e..a575a3bd 100644
--- a/wqflask/cfg/default_settings.py
+++ b/wqflask/cfg/default_settings.py
@@ -4,5 +4,8 @@ LOGFILE = """/tmp/flask_gn_log"""
#400 bad request response with no exception/log
TRAP_BAD_REQUEST_ERRORS = True
-#SECURITY_CONFIRMABLE = True
-SECURITY_TRACKABLE = True \ No newline at end of file
+# http://pythonhosted.org/Flask-Security/configuration.html
+SECURITY_CONFIRMABLE = True
+SECURITY_TRACKABLE = True
+SECURITY_REGISTERABLE = True
+SECURITY_RECOVERABLE = True
diff --git a/wqflask/secure_server.py b/wqflask/secure_server.py
index 49e0b433..425fce89 100644
--- a/wqflask/secure_server.py
+++ b/wqflask/secure_server.py
@@ -4,15 +4,8 @@ from wqflask import app
from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
-from flask.ext.security import Security, SQLAlchemyUserDatastore, \
- UserMixin, RoleMixin
+from flask.ext.security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin
-# Create app
-#app = Flask(__name__)
-app.config['SECRET_KEY'] = 'LjfrbDOlvdFMT5cCi9qrJqStxK4NcmxW'
-app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://webqtl:f2ZypIflRM@gn.cazhbciu2y1i.us-east-1.rds.amazonaws.com/db_webqtl'
-#app.config['SECURITY_CONFIRMABLE'] = True
-app.config['SECURITY_TRACKABLE'] = True
# Create database connection object
db = SQLAlchemy(app)
@@ -48,19 +41,14 @@ user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)
# Create a user to test with
-#@app.before_first_request
-def create_user():
- db.create_all()
- user_datastore.create_user(email='matt@example.com', password='notebook')
- db.session.commit()
+##@app.before_first_request
+#def create_user():
+# db.create_all()
+# user_datastore.create_user(email='matt@example.com', password='notebook')
+# db.session.commit()
-## Views
-#@app.route('/')
-#def home():
-# return render_template('index.html')
import logging
-#from themodule import TheHandlerYouWant
file_handler = logging.FileHandler("/tmp/flask_gn_log")
file_handler.setLevel(logging.DEBUG)
app.logger.addHandler(file_handler)
diff --git a/wqflask/wqflask/templates/security/_macros.html b/wqflask/wqflask/templates/security/_macros.html
new file mode 100644
index 00000000..8575f3db
--- /dev/null
+++ b/wqflask/wqflask/templates/security/_macros.html
@@ -0,0 +1,16 @@
+{% macro render_field_with_errors(field) %}
+ <p>
+ {{ field.label }} {{ field(**kwargs)|safe }}
+ {% if field.errors %}
+ <ul>
+ {% for error in field.errors %}
+ <li>{{ error }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </p>
+{% endmacro %}
+
+{% macro render_field(field) %}
+ <p>{{ field(**kwargs)|safe }}</p>
+{% endmacro %} \ No newline at end of file
diff --git a/wqflask/wqflask/templates/security/_menu.html b/wqflask/wqflask/templates/security/_menu.html
new file mode 100644
index 00000000..5291f809
--- /dev/null
+++ b/wqflask/wqflask/templates/security/_menu.html
@@ -0,0 +1,15 @@
+{% if security.registerable or security.recoverable or security.confirmabled %}
+<h2>Menu</h2>
+<ul>
+ <li><a href="{{ url_for_security('login') }}">Login</a></li>
+ {% if security.registerable %}
+ <li><a href="{{ url_for_security('register') }}">Register</a><br/></li>
+ {% endif %}
+ {% if security.recoverable %}
+ <li><a href="{{ url_for_security('forgot_password') }}">Forgot password</a><br/></li>
+ {% endif %}
+ {% if security.confirmable %}
+ <li><a href="{{ url_for_security('send_confirmation') }}">Confirm account</a></li>
+ {% endif %}
+</ul>
+{% endif %}
diff --git a/wqflask/wqflask/templates/security/_messages.html b/wqflask/wqflask/templates/security/_messages.html
new file mode 100644
index 00000000..179d0636
--- /dev/null
+++ b/wqflask/wqflask/templates/security/_messages.html
@@ -0,0 +1,9 @@
+{%- with messages = get_flashed_messages(with_categories=true) -%}
+ {% if messages %}
+ <ul class="flashes">
+ {% for category, message in messages %}
+ <li class="{{ category }}">{{ message }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+{%- endwith %} \ No newline at end of file
diff --git a/wqflask/wqflask/templates/security/register_user.html b/wqflask/wqflask/templates/security/register_user.html
new file mode 100644
index 00000000..af87f810
--- /dev/null
+++ b/wqflask/wqflask/templates/security/register_user.html
@@ -0,0 +1,45 @@
+{% from "security/_macros.html" import render_field_with_errors, render_field %}
+{% extends "base.html" %}
+{% include "security/_messages.html" %}
+{% block content %}
+<body>
+ <div class="container">
+ <div class="content">
+ <div class="row">
+ <div class="login-form">
+ <h2>Register</h2>
+ <form action="{{ url_for_security('register') }}" method="POST" name="register_user_form">
+ <fieldset>
+ <div class="clearfix">
+ {{ render_field_with_errors(register_user_form.email) }}
+ </div>
+ <div class="clearfix">
+ {{ render_field_with_errors(register_user_form.password) }}
+ </div>
+ {% if register_user_form.password_confirm %}
+ <div class="clearfix">
+ {{ render_field_with_errors(register_user_form.password_confirm) }}
+ </div>
+ {% endif %}
+ {{ render_field(register_user_form.submit) }}
+ </fieldset>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+</body>
+
+{% include "security/_menu.html" %}
+
+{% endblock %}
+
+<!--<form action="{{ url_for_security('register') }}" method="POST" name="register_user_form">
+ {{ register_user_form.hidden_tag() }}
+ {{ render_field_with_errors(register_user_form.email) }}
+ {{ render_field_with_errors(register_user_form.password) }}
+ {% if register_user_form.password_confirm %}
+ {{ render_field_with_errors(register_user_form.password_confirm) }}
+ {% endif %}
+ {{ render_field(register_user_form.submit) }}
+</form>--> \ No newline at end of file