Closed tuanhcmute closed 1 year ago
Chỉnh sửa chức năng đăng nhập
- Cập nhật chức năng login
@bp.route('/login', methods=[Method.GET]) def index(): response = make_response() response.data = 'hello world' return render_template('login.html')
@bp.route('/login', methods=[Method.POST]) def loginPost(): check_data = check_data_login() if check_data != 'Success': error = check_data session['message'] = error return redirect(request.referrer) try:
username = request.form.get('username')
password = request.form.get('password')
role_user = request.form.get("user")
role_admin = request.form.get("admin")
if(role_admin is not None):
role = int(role_admin)
elif (role_user is not None):
role = int(role_user)
#Query data
user = User.query.filter_by(username=username).first()
userDb = User.query.filter_by(username=username,roleId=role).first()
#Check role when username and password is correct
if (user is not None) and (userDb is None):
error = 'Access Denied'
session['message'] = error
return redirect(request.referrer)
# Create Bcrypt for Check Pass
app = Flask(__name__)
csrf = CSRFProtect(app)
bcrypt = Bcrypt(app)
if userDb and bcrypt.check_password_hash(userDb.password, password):
user = User(username, role, password)
print(user)
user.id = userDb.id
login_user(user)
response = make_response(redirect(URI.HOME))
tokenDic = getToken()
accessToken, maxAge = tokenDic['access_token'], tokenDic['expires_in']
# Set cookie
response.set_cookie('access_token', accessToken, max_age=maxAge)
response.set_cookie('username', username)
return response
else:
error = 'Invalid username or password'
session['message'] = error
return redirect(request.referrer)
except Exception as e: print('An error occurred while querying the database:', str(e)) error = 'An error occurred while querying the database' session['message'] = error return redirect(request.referrer)
@bp.route('/form_signup') def clear_session_signup(): if 'message' in session: session.pop('message', None) return redirect(url_for('authen.SignUp'))
def check_data_login():
username = request.form.get('username')
password = request.form.get('password')
role_user = request.form.get("user")
role_admin = request.form.get("admin")
role = 0
if(role_admin is not None):
role = int(role_admin)
elif (role_user is not None):
role = int(role_user)
# Kiểm tra xem các trường này có được điền đầy đủ hay không
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 role == 0:
return 'Vui lòng click vào checkbox Role'
return 'Success'
- Trong đoạn code chức năng login trên:
+Thực hiện kiểm tra đầu vào cũng như là xác thực user kỹ càng hơn.
+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 đăng ký
1. Code chỉnh sửa chức năng đăng nhập
2. Những phần đã chỉnh sửa