diff options
Diffstat (limited to 'app.py')
| -rw-r--r-- | app.py | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -405,6 +405,38 @@ def login(): return render_template('login.html') +@app.route('/register', methods=['GET', 'POST']) +def register(): + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + team_name = request.form['team_name'] + + conn = get_db() + c = conn.cursor() + + try: + c.execute(''' + INSERT INTO Users (username, password_hash, team_name) + VALUES (?, ?, ?) + ''', (username, generate_password_hash(password), team_name)) + conn.commit() + + # Auto-login after registration + c.execute('SELECT * FROM Users WHERE username = ?', (username,)) + user_row = c.fetchone() + user = User(user_row['id'], user_row['username'], user_row['is_admin'], user_row['team_name'], user_row['team_icon']) + login_user(user) + + flash('Account created and logged in!') + return redirect(url_for('index')) + except sqlite3.IntegrityError: + flash('Username already exists.') + finally: + conn.close() + + return render_template('register.html') + @app.route('/logout') @login_required def logout(): |
