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
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
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
def get_user(self, id): user_query = BoruvkaUserQuery(self._dao) user = user_query.get_user( id=id, ) return user