routes.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from flask import render_template, request, make_response, jsonify, redirect, url_for, flash, session
  2. from flask.views import MethodView
  3. import bcrypt
  4. from app.auth import bp
  5. from app.extensions import db, write_log
  6. from app.models.users import tbl_users
  7. from .forms import LoginForm
  8. from flask_login import login_user, login_required, logout_user
  9. @bp.route('/login', methods=["GET", "POST"])
  10. def login():
  11. # admin==admin-123
  12. s_out = ""
  13. s_user_id = request.cookies.get("cv_db_user", "")
  14. form = LoginForm()
  15. if form.validate_on_submit():
  16. s_user_id, s_password, bl_remember = (form.txt_user_id.data, form.txt_password.data, form.chk_remember.data)
  17. o_user = db.session.query(tbl_users).filter(tbl_users.v_user_id==s_user_id).first()
  18. if not o_user:
  19. flash("invalid user ID")
  20. return redirect(url_for("auth.login"))
  21. else:
  22. if o_user.check_password(s_password):
  23. login_user(o_user, remember=bl_remember)
  24. write_log(f"{s_user_id} logged in")
  25. flash("logged in")
  26. resp = redirect(url_for("main.index"))
  27. if bl_remember:
  28. resp.set_cookie("cv_db_user", s_user_id, max_age=604800) # expires after 7 days
  29. else:
  30. resp.set_cookie("cv_db_user", "", max_age=0) # clear by setting it with max_age of 0
  31. # end of checking if remember me checkboxchecked
  32. session["user_id"] = s_user_id
  33. return resp
  34. else:
  35. flash("Invalid password")
  36. # end of validating password
  37. # end of checking if valid user ID entered
  38. # end of checking for form submission
  39. return render_template('auth/login.html', js=True, form=form, s_user_id=s_user_id)
  40. # end of login view function for route /auth/login
  41. @bp.route("/logout")
  42. @login_required
  43. def logout():
  44. logout_user()
  45. flash("logged out")
  46. return redirect(url_for("auth.login"))
  47. # end of logout view function for route /auth/logout