Guest User

Untitled

a guest
Apr 13th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. import json
  2. import hashlib
  3. import database as db
  4. from webargs import fields
  5. from webargs.flaskparser import use_args
  6. from flask import Blueprint, request, session, g
  7. from serverbase import return_json, ErrorToClient
  8.  
  9.  
  10. bp = Blueprint('user', __name__)
  11.  
  12.  
  13. def add_user(username, password, info):
  14. u = db.User()
  15. u.username = username
  16. u.password = password
  17. # u.role = info.get('role', None)
  18. # u.name = info.get('name', None)
  19. # u.email = info.get('email', None)
  20. g.db_session.add(u)
  21. g.db_session.commit()
  22. return u.id
  23.  
  24.  
  25. @bp.route('/signup', methods=['POST'])
  26. @use_args({'username': fields.Str(required=True), 'password': fields.Str(required=True)})
  27. @return_json
  28. def _signup(args):
  29. username = args['username']
  30. password = args['password']
  31. if g.db_session.query(db.User).filter_by(username=username).first() is not None:
  32. raise ErrorToClient('user already exists')
  33. password = hashlib.sha1(password).hexdigest()
  34. add_user(username, password, {})
  35. return True
  36.  
  37.  
  38. @bp.route('/signin', methods=['POST'])
  39. @use_args({'username': fields.Str(required=True), 'password': fields.Str(required=True)})
  40. @return_json
  41. def _signin(args):
  42. username = args['username']
  43. password = args['password']
  44. password = hashlib.sha1(password).hexdigest()
  45. rec = g.db_session.query(db.User).filter_by(username=username, password=password).first()
  46. if rec is None:
  47. session['user_id'] = None
  48. raise ErrorToClient('username or password not valid')
  49. session['user_id'] = rec.id
  50. return True
  51.  
  52.  
  53. @bp.route('/signout', methods=['GET', 'POST'])
  54. @return_json
  55. def _signout():
  56. session['user_id'] = None
  57. return True
  58.  
  59.  
  60. @bp.route('/issignin', methods=['GET', 'POST'])
  61. @return_json
  62. def _issignin():
  63. return g.user_id is not None
Add Comment
Please, Sign In to add comment