Closed tuanhcmute closed 1 year ago
Hoàn thành chức năng signup
@bp.route('/signup', methods=[Method.GET]) def getSignUpForm(): return render_template('signup.html')
@bp.route('/signup', methods=[Method.POST]) def SignUp(): message_signup = check_user_data_signup() if (message_signup != 'Success'): error = message_signup session['message_signup'] = error return redirect(request.referrer)
try:
username = request.form.get('username')
password = request.form.get('password')
fullname = request.form.get('fullname')
address = request.form.get('address')
age = request.form.get('age')
role = int(request.form.get('user_type'))
#Check Strong password
check_pass= check_password(password)
if(check_pass != 'Success'):
error = check_pass
session['message_signup'] = error
return redirect(request.referrer)
#hash Password
app = Flask(__name__)
csrf = CSRFProtect(app)
BcryptPass = Bcrypt(app)
hashed_password = BcryptPass.generate_password_hash(password).decode('utf-8')
#create user
user = User(role, username, hashed_password, age, fullname, address, isEnable=True)
db.session.add_all([user])
db.session.commit()
session.pop('message_signup', None)
return render_template('signup.html', check='true')
except Exception as e: print('An error occurred while querying the database:', str(e)) error = 'Error' session['message_signup'] = error return redirect(request.referrer)
def check_user_data_signup():
username = request.form.get('username') password = request.form.get('password') fullname = request.form.get('fullname') address = request.form.get('address') age = request.form.get('age')
if not username: return 'Vui lòng nhập tên đăng nhập' if not password: return 'Vui lòng nhập mật khẩu' if not fullname: return 'Vui lòng nhập tên' if not age: return 'Vui lòng nhập tuổi' if not address: return 'Vui lòng nhập địa chỉ'
user = User.query.filter_by(username=username).first() if user is not None: return 'Username đã tồn tại' return 'Success'
@bp.route('/form_login') def clear_session_login(): if 'message_signup' in session: session.pop('message_signup', None) return redirect(url_for('authen.loginPost'))
def check_password(password):
if len(password) < 6 or len(password) > 8:
return 'Mật khẩu phải từ 6 đến 8 ký tự'
# Kiểm tra các ký tự trong mật khẩu
if not re.search(r'\d', password):
return'Mật khẩu phải chứa ít nhất một số'
if not re.search(r'[A-Z]', password):
return 'Mật khẩu phải chứa ít nhất một chữ hoa'
if not re.search(r'[a-z]', password):
return 'Mật khẩu phải chứa ít nhất một chữ thường'
# Nếu mật khẩu thỏa mãn tất cả các yêu cầu
return 'Success'
- Trong đoạn code chức năng login trên:
+Thực hiện kiểm tra đầu vào và check strong password cũng như là user có tồn tại hay không.
+Xuất các thông báo khi người dùng điền thông tin còn thiếu.
+Xóa các cookies hiển thị error khi người dùng chuyển sang trang login
1. Đoạn code chính thực hiện chức năng đăng ký tài khoản
2. Giải thích code
http://127.0.0.1:50000/auth/signup
để tiến hành đăng ký tài khoản.