about summary refs log tree commit diff
path: root/wqflask
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/secure_server.py2
-rw-r--r--wqflask/wqflask/model.py8
-rw-r--r--wqflask/wqflask/static/new/js_external/zxcvbn/zxcvbn-async.js1
-rw-r--r--wqflask/wqflask/templates/new_security/register_user.html25
-rw-r--r--wqflask/wqflask/user_manager.py33
-rw-r--r--wqflask/wqflask/views.py30
6 files changed, 83 insertions, 16 deletions
diff --git a/wqflask/secure_server.py b/wqflask/secure_server.py
index 697ebfe0..df195bd2 100644
--- a/wqflask/secure_server.py
+++ b/wqflask/secure_server.py
@@ -36,4 +36,4 @@ if __name__ == '__main__':
         port=app.config['SERVER_PORT'],
         use_debugger=False,
         threaded=True,
-        use_reloader=False)
+        use_reloader=True)
diff --git a/wqflask/wqflask/model.py b/wqflask/wqflask/model.py
index c1b8d060..b3dfe746 100644
--- a/wqflask/wqflask/model.py
+++ b/wqflask/wqflask/model.py
@@ -47,11 +47,11 @@ class Role(db.Model, RoleMixin):
 
 class User(db.Model, UserMixin):
     id = db.Column(db.Integer(), primary_key=True)
-    email = db.Column(db.String(255), unique=True)
-    password = db.Column(db.String(255))
+    email = db.Column(db.String(50), unique=True)
+    password = db.Column(db.String(50))
     
-    name = db.Column(db.Unicode(255))
-    organization = db.Column(db.Unicode(255))
+    full_name = db.Column(db.Unicode(50))
+    organization = db.Column(db.Unicode(50))
     
     active = db.Column(db.Boolean())
     confirmed_at = db.Column(db.DateTime())
diff --git a/wqflask/wqflask/static/new/js_external/zxcvbn/zxcvbn-async.js b/wqflask/wqflask/static/new/js_external/zxcvbn/zxcvbn-async.js
new file mode 100644
index 00000000..404944d3
--- /dev/null
+++ b/wqflask/wqflask/static/new/js_external/zxcvbn/zxcvbn-async.js
@@ -0,0 +1 @@
+(function(){var a;a=function(){var a,b;b=document.createElement("script");b.src="//dl.dropbox.com/u/209/zxcvbn/zxcvbn.js";b.type="text/javascript";b.async=!0;a=document.getElementsByTagName("script")[0];return a.parentNode.insertBefore(b,a)};null!=window.attachEvent?window.attachEvent("onload",a):window.addEventListener("load",a,!1)}).call(this);
diff --git a/wqflask/wqflask/templates/new_security/register_user.html b/wqflask/wqflask/templates/new_security/register_user.html
index d203d65f..6a7f4c9c 100644
--- a/wqflask/wqflask/templates/new_security/register_user.html
+++ b/wqflask/wqflask/templates/new_security/register_user.html
@@ -28,15 +28,26 @@
             <h4>Don't have an account?</h4>
         
             <h5>Register here</h5>
-        
-            <form class="form-horizontal" action="/n/register_submit" data-validate="parsley"
+            
+            {% if errors %}
+                <div class="alert alert-error">  
+                    <strong>Please note:</strong>
+                    <ul>
+                        {% for error in errors %}
+                            <li>{{error}}</li>
+                        {% endfor %}
+                    </ul>
+                </div>
+            {% endif %}
+           
+            <form class="form-horizontal" action="/n/register" data-validate="parsley"
                   method="POST" name="login_user_form">
                 <fieldset>
         
                     <div class="control-group">
                         <label class="control-label" for="email">Email Address</label>
                         <div class="controls">
-                            <input id="email" name="email" class="focused" type="text" value=""
+                            <input id="email_address" name="email_address" class="focused" type="text" value="{{values.email_address}}"
                                    data-trigger="change" data-required="true" data-type="email" data-maxlength="50">
                         </div>
                     </div>
@@ -44,7 +55,7 @@
                     <div class="control-group">
                         <label class="control-label" for="email">Full Name</label>
                         <div class="controls">
-                            <input id="name" name="name" type="text" value=""
+                            <input id="full_name" name="full_name" type="text" value="{{values.full_name}}"
                                    data-trigger="change" data-required="true" data-minlength="5" data-maxlength="50">
                         </div>
                     </div>
@@ -52,7 +63,7 @@
                     <div class="control-group">
                         <label class="control-label" for="email">Organization</label>
                         <div class="controls">
-                            <input id="organization" name="organization" type="text" value="" data-minlength="3" data-maxlength="50">
+                            <input id="organization" name="organization" type="text" value="{{values.organization}}" data-minlength="3" data-maxlength="50">
                         </div>
                     </div>
                     
@@ -62,8 +73,7 @@
                             <input id="password" name="password" type="password" value=""
                                    data-trigger="change" data-required="true" data-minlength="6" data-maxlength="30">
                         </div>
-                    </div>
-                    
+                    </div>           
       
                     <div class="control-group" style="display: none" id="password_alert">
                         <div class="controls"">
@@ -71,7 +81,6 @@
                         </div>
                     </div>
              
-        
                     <div class="control-group">
                         <label class="control-label" for="password_confirm">Confirm Password</label>
                         <div class="controls">
diff --git a/wqflask/wqflask/user_manager.py b/wqflask/wqflask/user_manager.py
index 9e666bbd..d03910ca 100644
--- a/wqflask/wqflask/user_manager.py
+++ b/wqflask/wqflask/user_manager.py
@@ -9,6 +9,8 @@ from __future__ import print_function, division, absolute_import
 
 from wqflask import model
 
+from utility import Bunch
+
 from flask import Flask, g
 
 from pprint import pformat as pf
@@ -43,6 +45,37 @@ class UserManager(object):
             print("  ID:", dataset.id)
             print("  Confidential:", dataset.check_confidentiality())
         #print("   ---> self.datasets:", self.datasets)
+        
+
+class RegisterUser(object):
+    def __init__(self, kw):
+        self.errors = []
+        user = Bunch()
+        
+        user.email_address = kw.get('email_address', '').strip()
+        if not (5 <= len(user.email_address) <= 50):
+            self.errors.append('Email Address needs to be between 5 and 50 characters.')
+            
+        user.full_name = kw.get('full_name', '').strip()
+        if not (5 <= len(user.full_name) <= 50):
+            self.errors.append('Full Name needs to be between 5 and 50 characters.')
+            
+        user.organization = kw.get('organization', '').strip()
+        if user.organization and not (5 <= len(user.organization) <= 50):
+            self.errors.append('Organization needs to be empty or between 5 and 50 characters.')
+
+        user.password = kw.get('password', '')
+        if not (6 <= len(user.password) <= 30):
+            self.errors.append('Password needs to be between 6 and 30 characters.')
+            
+        if kw.get('password_confirm') != user.password:
+            self.errors.append("Passwords don't match.")
+        
+        if self.errors:
+            return 
+        
+    
+
 
 
 class GroupsManager(object):
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 6f14ac8d..9a0401d6 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -23,7 +23,8 @@ import sqlalchemy
 
 from wqflask import app
 
-from flask import render_template, request, make_response, Response, Flask, g, config, jsonify
+from flask import (render_template, request, make_response, Response,
+                   Flask, g, config, jsonify, redirect, url_for)
 
 from wqflask import search_results
 from base.data_set import DataSet    # Used by YAML in marker_regression
@@ -292,9 +293,32 @@ def manage_groups():
     return render_template("admin/group_manager.html", **template_vars.__dict__)
 
 
-@app.route("/n/register")
+@app.route("/n/register", methods=('GET', 'POST'))
 def new_register():
-    return render_template("new_security/register_user.html")
+    params = None
+    errors = None
+    if request.form:
+        params = request.form
+    else:
+        params = request.args
+    if params:
+        result = user_manager.RegisterUser(params)
+        errors = result.errors
+    return render_template("new_security/register_user.html", values=params, errors=errors)
+
+#@app.route("/n/register_submit", methods=('POST',))
+#def register_submit():
+#    print("request.args are: ", request.args)
+#    result = user_manager.RegisterUser(request.form)
+#    if result.errors:
+#        print("Redirecting")
+#        # 307 preserves the post on the redirect (maybe)
+#        errors = result.errors
+#        #errors = json.dumps(errors)
+#        print("request.args are: ", request.args)
+#        return render_template("new_security/register_user.html", errors=errors, values=request.form)
+#        #return redirect(url_for('new_register', errors=errors), code=307)
+
 
 @app.route("/n/login")
 def new_login():