def get_user(username: str, provider: ProviderType, from_local: Optional[bool] = False, data_base: SESSION = Depends(get_con)): if from_local: user = ModelUser.get_user_by_username(username=username, db_session=data_base) # add provider if not user: return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content='User not found in database') repositories = ModelRepository.get_all_from_local(db_session=data_base, user_id=user.id) names = [repository.name for repository in repositories] return UserOutputRepos(id=user.id, login=user.login, email=user.email, twitter_username=user.twitter_username, repos=names) source = dealer.get_provider(provider=provider) user = source.get_user(username=username) if not user: return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content='User not found remotely') repositories = source.get_all_repos(username=username) names = [repository.name for repository in repositories] return UserOutputRepos(id=user.id, login=user.login, email=user.email, twitter_username=user.twitter_username, repos=names)
def update_user(username: str, provider: ProviderType, data_base: SESSION = Depends(get_con)): source = dealer.get_provider(provider=provider) user = source.get_user(username=username) if not user: return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content=dict(message='User not found remotely')) model_user = ModelUser.get_user_by_username(username=user.login, db_session=data_base) if not model_user: return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content=dict(message='User not found in database')) status_user, message = model_user.update( connection=data_base, email=user.email, twitter_username=user.twitter_username) if not status_user: return JSONResponse(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, content=dict(message='Database error', details=message)) return 'User updated successfully'
def authenticate(username, password): users = User() user = users.get_user_by_username(username) if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): return user