예제 #1
0
    def post(self):
        logger.info("request.form: %s", request.form)
        user = UserSchema(partial=True).load(request.form).data
        logger.info(UserSchema().dump(user))
        if user.password is None:
            logger.warn("No password is provided during login")
            return {"message": UserLogin.message(
                "Username and password are required")}, 404

        try:
            databaseUser = UserModel.find_by_username(username=user.username)
        except NoResultFound:
            UserModel.verify_hash("randomness",
                                  UserModel.generate_hash(
                                    uuid.uuid4().hex[0:int(random.random()*20)]
                                    ))
            logger.warn("User did not exist: %s", user.username)
            return {'message':
                    UserLogin.message(
                        "Unknown User {}".format(user.username))
                    }, 404

        if UserModel.verify_hash(
                request.form["password"], databaseUser.password):

            access_token = create_access_token(
                identity={
                    "username": databaseUser.username,
                    "id": databaseUser.id
                })

            refresh_token = create_refresh_token(
                identity={
                    "username": databaseUser.username,
                    "id": databaseUser.id
                })

            return {'access_token': access_token,
                    'refresh_token': refresh_token,
                    'username': user.username,
                    'email': user.email
                    }
        else:
            logger.warn("Password did not exist for user: %s", user.username)
            return {
                "message": UserLogin.message(
                    "Unknown password {} for user {}".format(
                        request.form["password"], user.username))}, 404
예제 #2
0
 def patch(self):
     userSchema = UserSchema()
     oldUser = UserModel.find_by_id(get_jwt_identity()["id"])
     logger.info("oldUser", oldUser.password)
     logger.info("request.form", request.form)
     updatedUser = userSchema.load(
         request.form, instance=oldUser).data.update()
     return userSchema.dump(updatedUser)
예제 #3
0
파일: user.py 프로젝트: Kaldie/dinerparty
class UserSchema(ma.ModelSchema):
  piiSensitive = ["hosted_parties", "postalCode", "address", "city",'email']
  email = fields.Email()
  password = fields.Function(deserialize = lambda password: UserModel.generate_hash(password), load_only=True,)
  
  class Meta:
    model = UserModel

  def return_all(self):
    print("UserModel.return_all()", self.dump(UserModel.return_all(), many=True))
    return self.dump(UserModel.return_all(), many=True)
예제 #4
0
    def post(self):
        if "previousPassword" not in request.values \
                or request.values.get('previousPassword') is None:
            raise UserException("previousPassword is not set")

        if "newPassword" not in request.values or \
                request.values.get('newPassword') is None:
            raise UserException("previousPassword is not set")

        currentUserId = get_jwt_identity().get("id")
        databaseUser = UserModel.find_by_id(currentUserId)

        if not UserModel.verify_hash(
                request.values["previousPassword"], databaseUser.password):
            return {
                "message": PasswordModification.message(
                    "Previous password was not correct")}, 401

        databaseUser.password = \
            UserModel.generate_hash(request.values.get("newPassword"))
        databaseUser.update()
        return {"message": "Updated the password."}
예제 #5
0
    def post(self):
        try:
            newUser = UserSchema(partial=True).load(request.values).data
        except ValidationError:
            return "User is not properly defined:"

        try:
            UserModel.find_by_username(newUser.username)
            return {'message': 'User {} already exists'. format(
                newUser.username)}, 500

        except NoResultFound:
            pass

        try:
            newUser.addUser()
            access_token = create_access_token(
                identity={
                    "username": newUser.username,
                    "id": newUser.id
                })

            refresh_token = create_refresh_token(
                identity={
                    "username": newUser.username,
                    "id": newUser.id
                })

            return {
                'message': 'User {} has been created'.format(newUser.username),
                'access_token': access_token,
                'refresh_token': refresh_token,
                'user': UserSchema().dump(newUser)
            }

        except Exception as error:
            logger.error(error)
            return {'message': "Something has gone wrong"}, 500
예제 #6
0
 def get(self, userName):
     logger.error("userName %s", userName)
     user = UserModel.find_by_username(userName)
     return UserSchema(exclude=UserSchema.piiSensitive).dump(user)
예제 #7
0
 def delete(self,):
     if userId == get_jwt_identity()["id"]:
         user = UserModel.find_by_id(get_jwt_identity()["id"])
         return UserModel.remove(user)
     else:
         return {"message": "Not allowed to delete an other user"}, 400
예제 #8
0
 def get(self):
     user = UserModel.find_by_id(get_jwt_identity()["id"])       
     return UserSchema().dump(user)
예제 #9
0
 def delete(self):
     return UserModel.delete_all()
예제 #10
0
파일: user.py 프로젝트: Kaldie/dinerparty
 def return_all(self):
   print("UserModel.return_all()", self.dump(UserModel.return_all(), many=True))
   return self.dump(UserModel.return_all(), many=True)