from flask import g from auth.atlas.constants import DECIBEL_ADMIN_ROLE from utils.exceptions import NotFoundError from services.users_repository import UsersRepository from external_api.base.clients.client_factory import ApiClientFactory from external_api.base.clients.atlas_client import AtlasApiClient from services.labels_repository import LabelsRepository from auth.atlas.helpers import add_or_update_user from auth.models import UserDataSchema class AtlasBridgeService: users_repository = UsersRepository() labels_repository = LabelsRepository() atlas_api_client: AtlasApiClient def __init__(self, atlas_api_client=ApiClientFactory.atlas_api_client()): self.atlas_api_client = atlas_api_client async def create_or_update_user(self, atlas_user_id): user_data = await self.atlas_api_client.get_user_claims(atlas_user_id) g.is_admin = DECIBEL_ADMIN_ROLE in user_data.decibel_roles user_model = UserDataSchema( id=user_data.atlas_user_id, name=user_data.name, email=user_data.email, labels=user_data.labels ) add_or_update_user(user_model) async def delete_user(self, atlas_user_id): pass # user = self.users_repository.get_user_by_external_id(atlas_user_id) # if not user: # raise NotFoundError(f"User with external id {atlas_user_id} not found") # else: # response = await self.atlas_api_client.get_user_claims(atlas_user_id) #self.users_repository.delete_user(user)