Example #1
0
    def register(self, payload):
        username = payload['username']
        password = payload['password']

        hashed_password = self.hash_password(
            username,
            password,
        )

        user_query = BoruvkaUserQuery(self._dao)
        user = user_query.create_user(
            username=username,
            password=hashed_password,
        )

        settings_query = BoruvkaSettingQuery(self._dao)
        settings_query.create_user_settings(
            user_id=user.id,
        )
        return True
Example #2
0
    def update_user(self, user_id, payload):
        user_query = BoruvkaUserQuery(self._dao)
        settings_query = BoruvkaSettingQuery(self._dao)

        user = user_query.get_user(
            id=user_id,
        )

        username = payload['username']
        password = payload['password']
        if len(password) > 0:
            user.password = BoruvkaAuthApi.hash_password(
                username,
                password,
            )

        self._dao.update(user)

        image_id = payload['image_id']
        image = payload['image']
        if isinstance(image, FieldStorage) and "image" in image.type:
            if image_id == '':
                # TODO: use random string
                image_id = user_id

            with open('webroot/img/user/' + user_id, 'wb') as fout:
                copyfileobj(image.file, fout, 100000)

        # TODO, make setting options more generic
        options = {
            'language': payload['language'],
            'color': payload['color'],
            'image': image_id,
        }

        settings_query.set_user_settings(
            user_id=user_id,
            options=options,
        )

        return
Example #3
0
    def login(self, payload):
        username = payload['username']
        password = payload['password']

        hashed_password = self.hash_password(
            username,
            password,
        )

        user_query = BoruvkaUserQuery(self._dao)
        user = user_query.get_user(
            username=username,
            password=hashed_password,
        )

        if not user:
            return None, None

        auth_query = BoruvkaAuthQuery(self._dao)
        if user.tokenId:
            token = auth_query.get_token(
                id=user.tokenId,
            )
            token_date = datetime.utcfromtimestamp(token.expirationDate)
            if token_date > datetime.now():
                return user.id, token.value

        # generate token
        token_value, token_date = self.__generate_token()

        token = auth_query.create_token(
            value=token_value,
            date=token_date,
        )

        user.tokenId = token.id
        self._dao.update(user)

        # api call returns token, whilst webapp sets cookie
        return user.id, token.value
Example #4
0
 def get_user(self, id):
     user_query = BoruvkaUserQuery(self._dao)
     user = user_query.get_user(
         id=id,
     )
     return user