|
- import web
- from views.forms import register_form
- from views.utils import get_nav_bar, csrf_protected, password_weakness, get_render
- import models.register
- import models.user
- import logging
- import bcrypt
- import re
-
- logger = logging.getLogger(__name__)
-
-
- class Register:
-
- def GET(self):
- """
- Get the registration form
-
- :return: A page with the registration form
- """
- session = web.ctx.session
- nav = get_nav_bar(session)
- return get_render().register(nav, register_form, "")
-
- @csrf_protected
- def POST(self):
- """
- Handle input data and register new user in database
-
- :return: Main page
- """
- session = web.ctx.session
- nav = get_nav_bar(session)
- data = web.input()
- render = get_render()
-
- register = register_form()
- if not register.validates():
- return render.register(nav, register, "All fields must be valid.")
-
- # Check if user exists
- if models.user.get_user_id_by_name(data.username):
- return render.register(nav, register, "Invalid user, already exists.")
-
- # Check password security
- weakness = password_weakness(data.password, data.username)
- if weakness is not None:
- return render.register(nav, register, weakness)
-
- password_hash = bcrypt.hashpw(data.password.encode('UTF-8'), bcrypt.gensalt())
-
- models.register.set_user(data.username, password_hash, data.full_name, data.company,
- data.email, data.street_address, data.city, data.state,
- data.postal_code, data.country)
-
- logger.info("User %s registered", data.username)
- return render.register(nav, register_form, "User registered!")
|