in deepracer_offroad_ws/webserver_pkg/webserver_pkg/login.py [0:0]
def login():
"""API to load login page when requested as GET request and authenticate
with password passed as parameter when requested as POST request.
Returns:
flask.Response: Response object with login page or home page details.
"""
webserver_node = webserver_publisher_node.get_webserver_node()
webserver_node.get_logger().info(f"Called /login with {request.method}")
if request.method == "POST":
response = make_response(jsonify({"redirect": "/home"}), 200)
try:
with open(PASSWORD_PATH, "r") as file_ptr:
pwd = file_ptr.readline()
user_provided_pwd_hash = \
str(compute_password_digest(request.form["password"].encode("utf-8")))
if hmac.compare_digest(user_provided_pwd_hash, str(pwd)):
webserver_node.get_logger().info("Password check passed")
token = str(uuid.uuid4())
try:
with open(TOKEN_PATH, "w") as token_file:
token_file.write(token)
webserver_node.get_logger().info("Token set")
response.set_cookie("deepracer_token",
token,
max_age=datetime.timedelta(hours=1),
secure=True)
return response
except IOError:
webserver_node.get_logger().error("Token path incorrect")
flash("Token path incorrect")
return "failure"
else:
webserver_node.get_logger().error("Incorrect password. Try again.")
flash("Incorrect password. Try again.")
return "failure"
except IOError:
webserver_node.get_logger().error("File not found")
reset_default()
flash("Password has been reset to default. "
"Please look at your the bottom of your vehicle for the default password.")
return "failure"
resp = make_response(render_template("login.html"), 200)
return resp