tuanhcmute / Nhom1_CCPTPM

3 stars 0 forks source link

Hoàn thành thực hiện chỉnh sửa chức năng đăng nhập #32

Closed tuanhcmute closed 1 year ago

tuanhcmute commented 1 year ago

Hoàn thành thực hiện chỉnh sửa chức năng đăng nhập #32

1. Code chỉnh sửa chức năng đăng nhập


@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:
    #Get Data
    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)

2. Những phần đã chỉnh sửa

mytranchi commented 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:

Get Data

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)

Clear session

@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():

Lấy giá trị từ các trường của form

 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ý