Spaces:
Runtime error
Runtime error
| # src/ auth.py | |
| # ๊ธฐ์กด app.py์์ auth์ ๊ด๋ จํด์ ๋ถ๋ฆฌ | |
| # ๋ก๊ทธ์ธ์ด๋ ํ์๊ฐ์ ์ธ์ฆ ๊ด๋ จํ ์คํฌ๋ฆฝํธ | |
| from flask import Blueprint, render_template, request, redirect, url_for, session | |
| from werkzeug.security import generate_password_hash, check_password_hash | |
| from . import db | |
| from .models import User | |
| bp = Blueprint('auth', __name__, url_prefix='/auth') | |
| # ํ์๊ฐ์ ํํธ | |
| def signup(): | |
| if request.method == 'POST': | |
| username = request.form['username'] | |
| password = request.form['password'] | |
| # ์ด๋ฏธ ์กด์ฌํ๋ ์ฌ์ฉ์์ธ์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์ธ | |
| if User.query.filter_by(username=username).first(): | |
| # (๋์ค์๋ ํ๋์ ๋ฉ์์ง ๋ฑ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์๋ฆผ) | |
| return "์ด๋ฏธ ์กด์ฌํ๋ ์ฌ์ฉ์ ์ด๋ฆ์ ๋๋ค." | |
| # ์ ์ฌ์ฉ์ ์์ฑ ๋ฐ ๋น๋ฐ๋ฒํธ ์ํธํ | |
| new_user = User(username=username) | |
| new_user.set_password(password) | |
| # ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐ ๋ฐ ์ ์ฅ | |
| db.session.add(new_user) | |
| db.session.commit() | |
| # ํ์๊ฐ์ ์ฑ๊ณต ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ | |
| return redirect(url_for('auth.login')) | |
| # GET ์์ฒญ ์ ํ์๊ฐ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค | |
| return render_template('signup.html') | |
| # ๋ก๊ทธ์ธ ํํธ | |
| def login(): | |
| if request.method == 'POST': | |
| username = request.form['username'] | |
| password = request.form['password'] | |
| # ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ | |
| user = User.query.filter_by(username=username).first() | |
| # ์ฌ์ฉ์๊ฐ ์กด์ฌํ๊ณ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ๋์ง ํ์ธ | |
| if user and user.check_password(password): | |
| # ์ธ์ ์ ์ฌ์ฉ์ ์ ๋ณด ์ ์ฅ | |
| session.clear() | |
| session['user_id'] = user.id | |
| session['username'] = user.username | |
| # ๋ก๊ทธ์ธ ์ฑ๊ณต ํ ๋ฉ์ธ ํ์ด์ง๋ก ์ด๋ | |
| return redirect(url_for('main.home')) | |
| else: | |
| # (๋์ค์๋ ํ๋์ ๋ฉ์์ง ๋ฑ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์๋ฆผ) | |
| return "๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค." | |
| # GET ์์ฒญ ์ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค | |
| return render_template('login.html') | |
| # ๋ก๊ทธ์์ part | |
| def logout(): | |
| # ์ธ์ ์์ ์ฌ์ฉ์ ์ ๋ณด ์ ๊ฑฐ | |
| session.clear() | |
| # ๋ก๊ทธ์์ ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ | |
| return redirect(url_for('auth.login')) |