Advertisement
Guest User

Untitled

a guest
Feb 15th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.45 KB | None | 0 0
  1. class PasswordChangeAPI(MethodView):
  2.     """
  3.    Password change resource
  4.    """
  5.     @login_required
  6.     @exception_handler
  7.     def post(self):
  8.         post_data = request.get_json()
  9.         print(self.post.user)
  10.         user = self.post.user
  11.         old_password = post_data.get('old_password')
  12.         new_password = post_data.get('new_password')
  13.  
  14.         if user and user.check_password(old_password) and new_password:
  15.             user.set_password(new_password)
  16.             db.session.commit()
  17.             response_object = {
  18.                 'status': 'success',
  19.                 'response_code': 'PASSWORD_CHANGED'
  20.             }
  21.             response = make_response(jsonify(response_object), 200)
  22.  
  23.         else:
  24.             response_object = {
  25.                 'status': 'fail',
  26.                 'response_code': 'FAIL_PASSWORD'
  27.             }
  28.             response = make_response(jsonify(response_object), 400)
  29.  
  30.         return response
  31.  
  32.  
  33.  
  34.  
  35.  
  36. # decorators
  37.  
  38. def exception_handler(func):
  39.     @wraps(func)
  40.     def wrapped_view(*args, **kwargs):
  41.         try:
  42.             print(args)
  43.             response = func(args, kwargs)
  44.         except Exception as e:
  45.             print(e)
  46.             response_object = {
  47.                 'status': 'fail',
  48.                 'response_code': 'SERVER_ERROR'
  49.             }
  50.             response = make_response(jsonify(response_object), 500)
  51.             return response
  52.  
  53.         return response
  54.     return wrapped_view
  55.  
  56.  
  57. def login_required(func):
  58.     @wraps(func)
  59.     def wrapped_view(*args, **kwargs):
  60.         secret_key = current_app.config['SECRET_KEY']
  61.         try:
  62.             jw_token = jwt.decode(request.cookies.get('session'), secret_key, algorithms='HS512')
  63.         except jwt.ExpiredSignatureError:
  64.             response = make_response(jsonify({'status': 'fail', 'response_code': 'TOKEN_EXPIRED'}), 401)
  65.             return response
  66.  
  67.         user = User.query.filter_by(
  68.             email=jw_token['email'],
  69.             username=jw_token['username'],
  70.             id=jw_token['id']
  71.         ).first()
  72.  
  73.         if not user:
  74.             response_object = {
  75.                 'status': 'fail',
  76.                 'response_code': 'INVALID_TOKEN'
  77.             }
  78.             response = make_response(jsonify(response_object), 403)
  79.  
  80.         else:
  81.             wrapped_view.user = user
  82.             print(args)
  83.             response = func(args, kwargs)
  84.  
  85.         return response
  86.  
  87.     return wrapped_view
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement