def Update(self, user_parameters=None, current_user=None): user = User.Get_from_db(user_name=current_user.user_name) if not current_user: return jsonify(message='User not found!', status=404) updated_user = User() if user_parameters.get('new_user_name'): updated_user.user_name = user_parameters.get('new_user_name') else: updated_user.user_name = current_user.user_name if user_parameters.get('new_first_name'): updated_user.first_name = user_parameters.get('new_first_name') else: updated_user.first_name = current_user.first_name if user_parameters.get('new_last_name'): updated_user.last_name = user_parameters.get('new_last_name') else: updated_user.last_name = current_user.last_name if user_parameters.get('new_email'): updated_user.email = user_parameters.get('new_email') else: updated_user.email = current_user.email if user_parameters.get('new_password'): updated_user.password = bcrypt.generate_password_hash(user_parameters.get('new_password')) else: updated_user.password = current_user.password user_by_name = User.Get_from_db(user_name=updated_user.user_name) user_by_email = User.Get_from_db(email=updated_user.email) if (user_by_name and user_by_name != user) or (user_by_email and user_by_email != user): return jsonify(message='User with such user_name/email already exist!', status=409) if updated_user.Invalid_Data(): return jsonify(message='Bad request. Invalid data!', status=400) User.query.filter_by(id=user.id).update({ 'user_name': updated_user.user_name, 'first_name': updated_user.first_name, 'last_name': updated_user.last_name, 'email': updated_user.email, 'password': updated_user.password }) db.session.commit() return jsonify(message='Successful update operation!', status=200)
def Delete(self, user_name=None): user = User.Get_from_db(user_name=user_name.user_name) if user: db.session.delete(user) db.session.commit() return jsonify(message='Successful delete operation!', status=200) return jsonify(message='User not found!', status=404)
def registration(self, user_parameters=None): user_name = user_parameters.get('user_name') first_name = user_parameters.get('first_name') last_name = user_parameters.get('last_name') email = user_parameters.get('email') if user_parameters.get('password'): password = bcrypt.generate_password_hash(user_parameters.get('password')) user = User(user_name, first_name, last_name, email, password) if user.Any_Empty_Field(): return jsonify(message='Bad request. Contain empty field(s)!', status=400) if user.Invalid_Data(): return jsonify(message='Bad request. Invalid data!', status=400) if not bcrypt.check_password_hash(password, user_parameters.get('confirm_password')): return jsonify(message='Passwords don`t match!', status=400) if User.Get_from_db(user_name=user_name) or User.Get_from_db(email=email): return jsonify(message='User with such user_name/email already exist!', status=409) access_token = jwt.encode({'id': user.id, 'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)}, program.config["SECRET_KEY"]) db.session.add(user) db.session.commit() return jsonify(message="Registered successfully!", token=access_token.decode('UTF-8'), status=200)
def login(self, user_parameters=None): if not user_parameters: return jsonify(message='Couldn`t verify!', status=401) user_name = user_parameters['user_name'] password = user_parameters['password'] if not user_name or not password: return jsonify(message="Missing values!", status=400) user = User.Get_from_db(user_name=user_name) if not user: return jsonify(message='Couldn`t verify!', status=401) elif bcrypt.check_password_hash(user.password, password): access_token = jwt.encode({'id': user.id, 'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)}, program.config["SECRET_KEY"]) return jsonify(message="User was logged in", token=access_token.decode('UTF-8'), status=200) return jsonify(message='Couldn`t verify!', status=401)