Ejemplo n.º 1
0
def auth_register():
    error = None
    # #############################################################
    # TODO: Add form input validation and sanitize everything and 
    #        add bcrypt support
    if request.method == 'POST':
        uname       = str(request.form['username'])
        pw          = str(request.form['password'])
        pw2         = str(request.form['password2'])
        email       = str(request.form['email'])
        unc_email   = str(request.form['uncc_email'])
        fname       = str(request.form['firstname'])
        lname       = str(request.form['lastname'])
        nick        = str(request.form['nickname'])
        degree_prog = int(request.form['degree_program'])

        if len(uname) < 5:
            flash('Username is too short: must be longer than five characters', 'Error')
            return render_template('register.html', 
                    error=error,
                    degrees=app.config['DEGREE_PROGRAMS'])

        quser = User.query.filter_by(username = uname).first()
        qemail = User.query.filter_by(uncc_email = unc_email).first()
        
        if (quser is None) and (qemail is None):
            if pw == pw2: # basic password validation
                # generate password hash 
                passwd = hashpw(pw, gensalt())
                
                usr = User(uname, passwd, email)
                usr.set_fullname(fname,lname)
                usr.set_uncc_email(unc_email)
                usr.set_nickname(nick)
                usr.set_degree_program(degree_prog)

                db.session.add(usr)
                db.session.commit()

                flash('User created: You may now login.', 'Message')

                return default_view()
            else:
                flash('Passwords do not math', 'Error')
        else:
            flash('Username or Email already in use.', 'Error')
    return default_view('user/register.html')