auth.py 2.5 KB

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