user.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from flask import Blueprint, request, g, make_response
  4. from flask import request
  5. from flask import session
  6. import json
  7. import jimit as ji
  8. from api.base import Base
  9. from models import User
  10. from models import Utils
  11. from models import Rules
  12. __author__ = 'James Iter'
  13. __date__ = '2017/9/14'
  14. __contact__ = 'james.iter.cn@gmail.com'
  15. __copyright__ = '(c) 2017 by James Iter.'
  16. blueprint = Blueprint(
  17. 'api_user',
  18. __name__,
  19. url_prefix='/api/user'
  20. )
  21. blueprints = Blueprint(
  22. 'api_users',
  23. __name__,
  24. url_prefix='/api/users'
  25. )
  26. user_base = Base(the_class=User, the_blueprint=blueprint, the_blueprints=blueprints)
  27. @Utils.dumps2response
  28. def r_sign_in():
  29. user = User()
  30. args_rules = [
  31. Rules.LOGIN_NAME.value,
  32. Rules.PASSWORD.value
  33. ]
  34. user.login_name = request.json.get('login_name')
  35. user.password = request.json.get('password')
  36. try:
  37. ji.Check.previewing(args_rules, user.__dict__)
  38. plain_password = user.password
  39. user.get_by('login_name')
  40. if not ji.Security.ji_pbkdf2_check(password=plain_password, password_hash=user.password):
  41. ret = dict()
  42. ret['state'] = ji.Common.exchange_state(40101)
  43. ret['state']['sub']['zh-cn'] = ''.join([ret['state']['sub']['zh-cn'], u': 鉴权失败'])
  44. raise ji.PreviewingError(json.dumps(ret, ensure_ascii=False))
  45. token = Utils.generate_token(user.id)
  46. session['token'] = token
  47. rep = make_response()
  48. rep.data = json.dumps({'state': ji.Common.exchange_state(20000)}, ensure_ascii=False)
  49. return rep
  50. except ji.PreviewingError, e:
  51. return json.loads(e.message)