Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PasswordChangeAPI(MethodView):
- """
- Password change resource
- """
- @login_required
- @exception_handler
- def post(self):
- post_data = request.get_json()
- print(self.post.user)
- user = self.post.user
- old_password = post_data.get('old_password')
- new_password = post_data.get('new_password')
- if user and user.check_password(old_password) and new_password:
- user.set_password(new_password)
- db.session.commit()
- response_object = {
- 'status': 'success',
- 'response_code': 'PASSWORD_CHANGED'
- }
- response = make_response(jsonify(response_object), 200)
- else:
- response_object = {
- 'status': 'fail',
- 'response_code': 'FAIL_PASSWORD'
- }
- response = make_response(jsonify(response_object), 400)
- return response
- # decorators
- def exception_handler(func):
- @wraps(func)
- def wrapped_view(*args, **kwargs):
- try:
- print(args)
- response = func(args, kwargs)
- except Exception as e:
- print(e)
- response_object = {
- 'status': 'fail',
- 'response_code': 'SERVER_ERROR'
- }
- response = make_response(jsonify(response_object), 500)
- return response
- return response
- return wrapped_view
- def login_required(func):
- @wraps(func)
- def wrapped_view(*args, **kwargs):
- secret_key = current_app.config['SECRET_KEY']
- try:
- jw_token = jwt.decode(request.cookies.get('session'), secret_key, algorithms='HS512')
- except jwt.ExpiredSignatureError:
- response = make_response(jsonify({'status': 'fail', 'response_code': 'TOKEN_EXPIRED'}), 401)
- return response
- user = User.query.filter_by(
- email=jw_token['email'],
- username=jw_token['username'],
- id=jw_token['id']
- ).first()
- if not user:
- response_object = {
- 'status': 'fail',
- 'response_code': 'INVALID_TOKEN'
- }
- response = make_response(jsonify(response_object), 403)
- else:
- wrapped_view.user = user
- print(args)
- response = func(args, kwargs)
- return response
- return wrapped_view
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement