Added initial user registration, not very secure.
This commit is contained in:
parent
22ccf88178
commit
40f792f3be
|
@ -8,8 +8,8 @@
|
|||
<link rel="stylesheet" type="text/css" media="screen" href="{{ url_for('static', filename='css/bootstrap-responsive.css') }}" />
|
||||
{# TODO Consider creating a white and blue theme or at least changeable themes for the site... #}
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="{{ url_for('static', filename='css/penguin-evening-theme.css') }}" />
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="http://openfontlibrary.org/face/Lavoir" />
|
||||
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Raleway" />
|
||||
{# <link rel="stylesheet" type="text/css" media="screen" href="http://openfontlibrary.org/face/Lavoir" />#}
|
||||
{# <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Raleway" />#}
|
||||
</head>
|
||||
<body>
|
||||
<script src="{{ url_for('static', filename='js/jquery-1.8.2.js') }}"></script>
|
||||
|
|
|
@ -7,14 +7,23 @@
|
|||
{% if error %}
|
||||
<div class="error_message">{{ error }}</div>
|
||||
{% endif %}
|
||||
<form action="{{ url_for('display_user_profile') }}" method="post">
|
||||
|
||||
{% if not registration and username is defined %}
|
||||
<form action="{{ url_for('display_user_profile', username=username) }}" method="post">
|
||||
{% else %}
|
||||
<form action="{{ url_for('register_user') }}" method="post">
|
||||
{% endif %}
|
||||
<ul>
|
||||
<li>Username: <input type="text" name="username" /></li>
|
||||
<li>Email: <input type="text" name="email" /></li>
|
||||
<li>Email: <input type="email" name="email" /></li>
|
||||
<li>Full Name: <input type="text" name="user_full_name" /></li>
|
||||
|
||||
<li>Password: <input type="password" name="password" /></li>
|
||||
<li><input type="submit" value="Login" /></li>
|
||||
{% if registration %}
|
||||
<li><input type="submit" value="Register" /></li>
|
||||
{% else %}
|
||||
<li><input type="submit" value="Update Profile" /></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -31,7 +31,7 @@ import os
|
|||
from rookeries.core.config import Config
|
||||
from rookeries.core.database import db_session
|
||||
from rookeries.core.models import User
|
||||
from rookeries.core.security import check_password
|
||||
from rookeries.core.security import check_password, generate_user_security_hash
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(Config())
|
||||
|
@ -101,15 +101,25 @@ def home_page():
|
|||
return render_template("home.html", navigation=nav_menu, username=username)
|
||||
|
||||
|
||||
def build_up_navigation_menu():
|
||||
def build_up_navigation_menu(logged_in=False, username=None):
|
||||
# TODO Make more dynamic.
|
||||
# TODO Add in login and logout...
|
||||
nav_map = [
|
||||
{"title": "Home", "target_url": "/"},
|
||||
{"title": "Login", "target_url": "/login"},
|
||||
{"title": "FAQ", "target_url": "/docs/faq"},
|
||||
{"title": "License", "target_url": "/docs/license"},
|
||||
{"title": "Home", "target_url": url_for("home_page")},
|
||||
{"title": "FAQ", "target_url": url_for("render_page_from_restructured_content", page="faq")},
|
||||
{"title": "License", "target_url": url_for("render_page_from_restructured_content", page="license")},
|
||||
]
|
||||
|
||||
if logged_in:
|
||||
nav_map.append({"title": "Logout", "target_url": url_for("logout")})
|
||||
nav_map.append({"title": "Edit User Profile", "target_url": url_for("display_user_profile", username=username)})
|
||||
|
||||
else:
|
||||
nav_map.append({"title": "Login", "target_url": url_for("login")})
|
||||
nav_map.append({"title": "Register User", "target_url": url_for("register_user")})
|
||||
|
||||
# TODO Add in tasks and project setup.
|
||||
|
||||
return nav_map
|
||||
|
||||
|
||||
|
@ -130,28 +140,47 @@ def render_page_from_restructured_content(page="about_us"):
|
|||
|
||||
# Render the restructured text, but only retrieve the body itself.
|
||||
code = Markup(markdown(rst_code, output_format="html5"))
|
||||
# TODO Add in some login/logout logic... :S
|
||||
nav_map = build_up_navigation_menu()
|
||||
|
||||
return render_template("layout.html", body_content=code, navigation=nav_map)
|
||||
|
||||
|
||||
# Handle creation of users and editing of profiles
|
||||
@app.route("/register")
|
||||
@app.route("/register", methods=["GET", "POST"])
|
||||
def register_user():
|
||||
# TODO Consider adding a sign-up key
|
||||
|
||||
nav_map = build_up_navigation_menu()
|
||||
nav_map = build_up_navigation_menu(False, None)
|
||||
|
||||
return render_template("user_profile.html", navigation=nav_map)
|
||||
if request.method == "POST":
|
||||
username = request.form["username"]
|
||||
password = request.form["password"]
|
||||
user_full_name = request.form["user_full_name"]
|
||||
email = request.form["email"]
|
||||
|
||||
# TODO Add in validation of email... and status that requires email validation of user.
|
||||
user = User(username=username, user_full_name=user_full_name, email=email)
|
||||
hashed_password = generate_user_security_hash(user, password, Config.SITE_SECRET)
|
||||
user.password = hashed_password
|
||||
|
||||
db_session.add(user)
|
||||
db_session.commit()
|
||||
|
||||
# TODO Make something a bit nicer.
|
||||
return render_template("user_profile.html", navigation=nav_map, registration=False)
|
||||
|
||||
else:
|
||||
return render_template("user_profile.html", navigation=nav_map, registration=True)
|
||||
|
||||
|
||||
# TODO Similair setup for editing the user profile
|
||||
@app.route("/user/<username>")
|
||||
def display_user_profile(username=None):
|
||||
|
||||
nav_map = build_up_navigation_menu()
|
||||
nav_map = build_up_navigation_menu(True, username)
|
||||
|
||||
return render_template("user_profile.html", navigation=nav_map)
|
||||
return render_template("user_profile.html", navigation=nav_map, registration=False)
|
||||
|
||||
# TODO Add in show_tasks or show_projects
|
||||
|
||||
|
|
Loading…
Reference in New Issue