Spaces:
Runtime error
Runtime error
File size: 2,577 Bytes
5883a42 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# 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')
# ํ์๊ฐ์
ํํธ
@bp.route('/signup', methods=['GET', 'POST'])
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')
# ๋ก๊ทธ์ธ ํํธ
@bp.route('/login', methods=['GET', 'POST'])
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
@bp.route('/logout')
def logout():
# ์ธ์
์์ ์ฌ์ฉ์ ์ ๋ณด ์ ๊ฑฐ
session.clear()
# ๋ก๊ทธ์์ ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋
return redirect(url_for('auth.login')) |