auth.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #-*- coding:utf-8 -*-
  2. from flask import request, g, abort, render_template, redirect
  3. import requests
  4. import json
  5. from rrd import app
  6. from rrd import config
  7. from rrd.view import utils as view_utils
  8. from rrd.view.utils import require_login
  9. from rrd.utils.logger import logging
  10. log = logging.getLogger(__file__)
  11. @app.route("/auth/login", methods=["GET", "POST"])
  12. def auth_login():
  13. if request.method == "GET":
  14. if g.user:
  15. return redirect("/")
  16. return render_template("auth/login.html", **locals())
  17. if request.method == "POST":
  18. ret = { "msg": "", }
  19. name = request.form.get("name")
  20. password = request.form.get("password")
  21. if not name or not password:
  22. ret["msg"] = "no name or password"
  23. return json.dumps(ret)
  24. try:
  25. ut = view_utils.login_user(name, password)
  26. if not ut:
  27. ret["msg"] = "no such user"
  28. return json.dumps(ret)
  29. ret["data"] = {
  30. "name": ut.name,
  31. "sig": ut.sig,
  32. }
  33. return json.dumps(ret)
  34. except Exception as e:
  35. ret["msg"] = str(e)
  36. return json.dumps(ret)
  37. @app.route("/auth/logout", methods=["GET",])
  38. @require_login()
  39. def auth_logout():
  40. if request.method == "GET":
  41. view_utils.logout_user(g.user_token)
  42. return redirect("/auth/login")
  43. @app.route("/auth/register", methods=["GET", "POST"])
  44. def auth_register():
  45. if request.method == "GET":
  46. if g.user:
  47. return redirect("/auth/login")
  48. return render_template("auth/register.html", **locals())
  49. if request.method == "POST":
  50. ret = {"msg":""}
  51. name = request.form.get("name", "")
  52. cnname = request.form.get("cnname", "")
  53. email = request.form.get("email", "")
  54. password = request.form.get("password", "")
  55. repeat_password = request.form.get("repeat_password", "")
  56. if not name or not password or not email or not cnname:
  57. ret["msg"] = "not all form item entered"
  58. return json.dumps(ret)
  59. if password != repeat_password:
  60. ret["msg"] = "repeat password not equal"
  61. return json.dumps(ret)
  62. h = {"Content-type":"application/json"}
  63. d = {
  64. "name": name,
  65. "cnname": cnname,
  66. "email": email,
  67. "password": password,
  68. }
  69. r = requests.post("%s/user/create" %(config.API_ADDR,), \
  70. data=json.dumps(d), headers=h)
  71. log.debug("%s:%s" %(r.status_code, r.text))
  72. if r.status_code != 200:
  73. ret['msg'] = r.text
  74. return json.dumps(ret)