import uuid from atlas_um.helpers.services import BaseLogicService from atlas_um.helpers import either from atlas_um import pgdb from atlas_um.audit import admin_audit from atlas_um.consts import SystemEvents class CreateApplicationService(BaseLogicService): """Creates Application instance.""" @admin_audit.track(SystemEvents.creating_application) def process( self, dna_account, resource_group, name, audience, ttl, scope, **kwargs ) -> either.Either: application = pgdb.Application() application.dna_account = dna_account application.resource_group = resource_group application.client_id = str(uuid.uuid4()) application.client_secret = str(uuid.uuid4()) application.name = name application.audience = audience application.ttl = ttl application.scope = scope return either.Right(application) class UpdateApplicationService(BaseLogicService): """Updates application instance.""" @admin_audit.track(SystemEvents.updating_application) def process( self, application, resource_group, name, audience, ttl, scope, **kwargs ) -> either.Either: application.resource_group = resource_group application.name = name application.audience = audience application.ttl = ttl application.scope = scope return either.Right(application) class ResetClientSecretService(BaseLogicService): """Resets client secret.""" @admin_audit.track(SystemEvents.reset_application_secret) def process(self, application, **kwargs) -> either.Either: application.client_secret = str(uuid.uuid4()) return either.Right(application) class DeleteApplicationService(BaseLogicService): """Deletes application.""" @admin_audit.track(SystemEvents.deleting_application) def process(self, application, **kwargs) -> either.Either: application.is_deleted = True return either.Right(application)