%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/AppInfo/ |
Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/AppInfo/Application.php |
<?php /* * @copyright 2023 Passwords App * * @author Marius David Wieschollek * @license AGPL-3.0 * * This file is part of the Passwords App * created by Marius David Wieschollek. */ namespace OCA\Passwords\AppInfo; use OCA\Passwords\Controller\Actions\RecoverHiddenController; use OCA\Passwords\Controller\Admin\CacheController; use OCA\Passwords\Controller\Admin\SettingsController; use OCA\Passwords\Controller\Api\AccountApiController; use OCA\Passwords\Controller\Api\FolderApiController; use OCA\Passwords\Controller\Api\KeychainApiController; use OCA\Passwords\Controller\Api\PasswordApiController; use OCA\Passwords\Controller\Api\ServiceApiController; use OCA\Passwords\Controller\Api\SessionApiController; use OCA\Passwords\Controller\Api\SettingsApiController; use OCA\Passwords\Controller\Api\ShareApiController; use OCA\Passwords\Controller\Api\TagApiController; use OCA\Passwords\Controller\Link\ConnectController; use OCA\Passwords\Dashboard\PasswordsWidget; use OCA\Passwords\EventListener\Challenge\ChallengeActivatedListener; use OCA\Passwords\EventListener\CSP\AddCSPListener; use OCA\Passwords\EventListener\Folder\BeforeFolderDeletedListener; use OCA\Passwords\EventListener\Folder\BeforeFolderSetRevisionListener; use OCA\Passwords\EventListener\Folder\FolderClonedListener; use OCA\Passwords\EventListener\Folder\FolderDeletedListener; use OCA\Passwords\EventListener\Password\BeforePasswordDeletedListener; use OCA\Passwords\EventListener\Password\BeforePasswordSetRevisionListener; use OCA\Passwords\EventListener\Password\PasswordClonedListener; use OCA\Passwords\EventListener\Password\PasswordDeletedListener; use OCA\Passwords\EventListener\PasswordRevision\BeforePasswordRevisionSavedEventListener; use OCA\Passwords\EventListener\Share\ShareDeletedListener; use OCA\Passwords\EventListener\Tag\BeforeTagDeletedListener; use OCA\Passwords\EventListener\Tag\BeforeTagSetRevisionListener; use OCA\Passwords\EventListener\Tag\TagClonedListener; use OCA\Passwords\EventListener\Tag\TagDeletedListener; use OCA\Passwords\EventListener\User\BeforeUserCreatedListener; use OCA\Passwords\EventListener\User\UserDeletedListener; use OCA\Passwords\EventListener\User\UserPasswordChangedListener; use OCA\Passwords\Events\Challenge\BeforeChallengeActivatedEvent; use OCA\Passwords\Events\Challenge\ChallengeActivatedEvent; use OCA\Passwords\Events\Folder\BeforeFolderDeletedEvent; use OCA\Passwords\Events\Folder\BeforeFolderSetRevisionEvent; use OCA\Passwords\Events\Folder\FolderClonedEvent; use OCA\Passwords\Events\Folder\FolderDeletedEvent; use OCA\Passwords\Events\Password\BeforePasswordDeletedEvent; use OCA\Passwords\Events\Password\BeforePasswordSetRevisionEvent; use OCA\Passwords\Events\Password\PasswordClonedEvent; use OCA\Passwords\Events\Password\PasswordDeletedEvent; use OCA\Passwords\Events\PasswordRevision\BeforePasswordRevisionCreatedEvent; use OCA\Passwords\Events\PasswordRevision\BeforePasswordRevisionUpdatedEvent; use OCA\Passwords\Events\Share\ShareDeletedEvent; use OCA\Passwords\Events\Tag\BeforeTagDeletedEvent; use OCA\Passwords\Events\Tag\BeforeTagSetRevisionEvent; use OCA\Passwords\Events\Tag\TagClonedEvent; use OCA\Passwords\Events\Tag\TagDeletedEvent; use OCA\Passwords\Helper\Sharing\ShareUserListHelper; use OCA\Passwords\Helper\Words\SpecialCharacterHelper; use OCA\Passwords\Middleware\ApiSecurityMiddleware; use OCA\Passwords\Middleware\ApiSessionMiddleware; use OCA\Passwords\Provider\Favicon\BestIconProvider; use OCA\Passwords\Provider\Favicon\DefaultFaviconProvider; use OCA\Passwords\Provider\Favicon\DuckDuckGoProvider; use OCA\Passwords\Provider\Favicon\FaviconGrabberProvider; use OCA\Passwords\Provider\Favicon\FaviconProviderInterface; use OCA\Passwords\Provider\Favicon\GoogleFaviconProvider; use OCA\Passwords\Provider\Favicon\LocalFaviconProvider; use OCA\Passwords\Provider\Preview\BrowshotPreviewProvider; use OCA\Passwords\Provider\Preview\DefaultPreviewProvider; use OCA\Passwords\Provider\Preview\PageresCliProvider; use OCA\Passwords\Provider\Preview\PreviewProviderInterface; use OCA\Passwords\Provider\Preview\ScreeenlyProvider; use OCA\Passwords\Provider\Preview\ScreenShotLayerProvider; use OCA\Passwords\Provider\Preview\ScreenShotMachineProvider; use OCA\Passwords\Provider\SecurityCheck\BigDbPlusHibpSecurityCheckProvider; use OCA\Passwords\Provider\SecurityCheck\BigLocalDbSecurityCheckProvider; use OCA\Passwords\Provider\SecurityCheck\HaveIBeenPwnedProvider; use OCA\Passwords\Provider\SecurityCheck\SecurityCheckProviderInterface; use OCA\Passwords\Provider\SecurityCheck\SmallLocalDbSecurityCheckProvider; use OCA\Passwords\Provider\Words\AutoWordsProvider; use OCA\Passwords\Provider\Words\LeipzigCorporaProvider; use OCA\Passwords\Provider\Words\LocalWordsProvider; use OCA\Passwords\Provider\Words\RandomCharactersProvider; use OCA\Passwords\Provider\Words\SnakesWordsProvider; use OCA\Passwords\Provider\Words\WordsProviderInterface; use OCA\Passwords\Services\ConfigurationService; use OCA\Passwords\Services\EnvironmentService; use OCA\Passwords\Services\HelperService; use OCA\Passwords\Services\NotificationService; use OCA\Passwords\SetupChecks\BackgroundJobsExecutedWithCronSetupCheck; use OCA\Passwords\SetupChecks\BackgroundJobsPhpVersionSetupCheck; use OCA\Passwords\UserMigration\PasswordsMigrator; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\EventDispatcher\IEventDispatcher; use OCP\Http\Client\IClientService; use OCP\IGroupManager; use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\Notification\IManager; use OCP\Security\CSP\AddContentSecurityPolicyEvent; use OCP\Share\IManager as ShareManager; use OCP\User\Events\BeforeUserCreatedEvent; use OCP\User\Events\CreateUserEvent; use OCP\User\Events\PasswordUpdatedEvent; use OCP\User\Events\UserDeletedEvent; use Psr\Container\ContainerInterface; use OCA\Passwords\Helper\Random\Randomizer; /** * Class Application * * @package OCA\Passwords\AppInfo */ class Application extends App implements IBootstrap { const APP_NAME = 'passwords'; /** * Application constructor. * * @param array $urlParams */ public function __construct(array $urlParams = []) { parent::__construct(self::APP_NAME, $urlParams); } /** * @param IRegistrationContext $context */ public function register(IRegistrationContext $context): void { $this->registerDiClasses($context); $this->registerSystemHooks(); $this->registerMiddleware($context); $context->registerUserMigrator(PasswordsMigrator::class); $context->registerDashboardWidget(PasswordsWidget::class); } /** * @param IBootContext $context */ public function boot(IBootContext $context): void { $this->registerNotificationNotifier(); $this->registerInternalListeners(); } /** * @param IRegistrationContext $context */ protected function registerDiClasses(IRegistrationContext $context): void { /** * Controllers */ $this->registerController($context); /** * Helper */ $this->registerHelpers($context); /** * Providers */ $this->registerProviders($context); /** * Setup Checks */ $this->registerSetupChecks($context); } /** * @param IRegistrationContext $context */ protected function registerMiddleware(IRegistrationContext $context): void { $context->registerServiceAlias('ApiSecurityMiddleware', ApiSecurityMiddleware::class); $context->registerMiddleware('ApiSecurityMiddleware'); $context->registerServiceAlias('ApiSessionMiddleware', ApiSessionMiddleware::class); $context->registerMiddleware('ApiSessionMiddleware'); } /** * @param IRegistrationContext $context */ protected function registerController(IRegistrationContext $context): void { $context->registerServiceAlias('AdminSettingsController', SettingsController::class); $context->registerServiceAlias('AdminCachesController', CacheController::class); $context->registerServiceAlias('KeychainApiController', KeychainApiController::class); $context->registerServiceAlias('PasswordApiController', PasswordApiController::class); $context->registerServiceAlias('SettingsApiController', SettingsApiController::class); $context->registerServiceAlias('AccountApiController', AccountApiController::class); $context->registerServiceAlias('SessionApiController', SessionApiController::class); $context->registerServiceAlias('ServiceApiController', ServiceApiController::class); $context->registerServiceAlias('FolderApiController', FolderApiController::class); $context->registerServiceAlias('ShareApiController', ShareApiController::class); $context->registerServiceAlias('ConnectController', ConnectController::class); $context->registerServiceAlias('TagApiController', TagApiController::class); $context->registerServiceAlias('RecoverHiddenController', RecoverHiddenController::class); } /** * */ protected function registerInternalListeners() { /* @var IEventDispatcher $eventDispatcher */ $dispatcher = $this->getContainer()->get(IEventDispatcher::class); $dispatcher->addServiceListener(BeforePasswordDeletedEvent::class, BeforePasswordDeletedListener::class); $dispatcher->addServiceListener(BeforePasswordSetRevisionEvent::class, BeforePasswordSetRevisionListener::class); $dispatcher->addServiceListener(PasswordClonedEvent::class, PasswordClonedListener::class); $dispatcher->addServiceListener(PasswordDeletedEvent::class, PasswordDeletedListener::class); $dispatcher->addServiceListener(BeforePasswordRevisionCreatedEvent::class, BeforePasswordRevisionSavedEventListener::class); $dispatcher->addServiceListener(BeforePasswordRevisionUpdatedEvent::class, BeforePasswordRevisionSavedEventListener::class); $dispatcher->addServiceListener(BeforeFolderDeletedEvent::class, BeforeFolderDeletedListener::class); $dispatcher->addServiceListener(BeforeFolderSetRevisionEvent::class, BeforeFolderSetRevisionListener::class); $dispatcher->addServiceListener(FolderClonedEvent::class, FolderClonedListener::class); $dispatcher->addServiceListener(FolderDeletedEvent::class, FolderDeletedListener::class); $dispatcher->addServiceListener(BeforeTagDeletedEvent::class, BeforeTagDeletedListener::class); $dispatcher->addServiceListener(BeforeTagSetRevisionEvent::class, BeforeTagSetRevisionListener::class); $dispatcher->addServiceListener(TagClonedEvent::class, TagClonedListener::class); $dispatcher->addServiceListener(TagDeletedEvent::class, TagDeletedListener::class); $dispatcher->addServiceListener(ShareDeletedEvent::class, ShareDeletedListener::class); $dispatcher->addServiceListener(BeforeChallengeActivatedEvent::class, ChallengeActivatedListener::class); $dispatcher->addServiceListener(ChallengeActivatedEvent::class, ChallengeActivatedListener::class); } /** * */ protected function registerSystemHooks(): void { /* @var IEventDispatcher $eventDispatcher */ $dispatcher = $this->getContainer()->get(IEventDispatcher::class); $dispatcher->addServiceListener(CreateUserEvent::class, BeforeUserCreatedListener::class); $dispatcher->addServiceListener(BeforeUserCreatedEvent::class, BeforeUserCreatedListener::class); $dispatcher->addServiceListener(UserDeletedEvent::class, UserDeletedListener::class); $dispatcher->addServiceListener(PasswordUpdatedEvent::class, UserPasswordChangedListener::class); $dispatcher->addServiceListener(AddContentSecurityPolicyEvent::class, AddCSPListener::class); } /** * Registers the Notification service */ protected function registerNotificationNotifier(): void { $this->getContainer()->get(IManager::class)->registerNotifierService(NotificationService::class); } /** * @param IRegistrationContext $context * * @return void */ protected function registerHelpers(IRegistrationContext $context): void { $context->registerService( LocalWordsProvider::class, function (ContainerInterface $c) { return new LocalWordsProvider( $c->get(SpecialCharacterHelper::class), $c->get(IFactory::class)->get('core')->getLanguageCode() ); } ); $context->registerService( RandomCharactersProvider::class, function (ContainerInterface $c) { return new RandomCharactersProvider( $c->get(Randomizer::class), $c->get(IFactory::class)->get('core')->getLanguageCode() ); } ); $context->registerService( LeipzigCorporaProvider::class, function (ContainerInterface $c) { return new LeipzigCorporaProvider( $c->get(SpecialCharacterHelper::class), $c->get(IClientService::class), $c->get(Randomizer::class), $c->get(IFactory::class)->get('core')->getLanguageCode() ); } ); $context->registerService( ShareUserListHelper::class, function (ContainerInterface $c) { return new ShareUserListHelper( $c->get(ShareManager::class), $c->get(IUserManager::class), $c->get(IGroupManager::class), $c->get(ConfigurationService::class), $c->get(EnvironmentService::class) ); } ); } /** * @param IRegistrationContext $context * * @return void */ protected function registerProviders(IRegistrationContext $context): void { $context->registerService( SecurityCheckProviderInterface::class, function (ContainerInterface $c) { $service = $c->get(ConfigurationService::class)->getAppValue('service/security', HelperService::SECURITY_HIBP); return match ($service) { HelperService::SECURITY_BIG_LOCAL => $c->get(BigLocalDbSecurityCheckProvider::class), HelperService::SECURITY_SMALL_LOCAL => $c->get(SmallLocalDbSecurityCheckProvider::class), HelperService::SECURITY_BIGDB_HIBP => $c->get(BigDbPlusHibpSecurityCheckProvider::class), default => $c->get(HaveIBeenPwnedProvider::class), }; } ); $context->registerService( WordsProviderInterface::class, function (ContainerInterface $c) { $service = $c->get(ConfigurationService::class)->getAppValue('service/words', HelperService::WORDS_AUTO); return match ($service) { HelperService::WORDS_LOCAL => $c->get(LocalWordsProvider::class), HelperService::WORDS_LEIPZIG => $c->get(LeipzigCorporaProvider::class), HelperService::WORDS_SNAKES => $c->get(SnakesWordsProvider::class), HelperService::WORDS_RANDOM => $c->get(RandomCharactersProvider::class), default => $c->get(AutoWordsProvider::class), }; } ); $context->registerService( FaviconProviderInterface::class, function (ContainerInterface $c) { $service = $c->get(ConfigurationService::class)->getAppValue('service/favicon', HelperService::FAVICON_DEFAULT); return match ($service) { HelperService::FAVICON_BESTICON => $c->get(BestIconProvider::class), HelperService::FAVICON_FAVICON_GRABBER => $c->get(FaviconGrabberProvider::class), HelperService::FAVICON_DUCK_DUCK_GO => $c->get(DuckDuckGoProvider::class), HelperService::FAVICON_GOOGLE => $c->get(GoogleFaviconProvider::class), HelperService::FAVICON_LOCAL => $c->get(LocalFaviconProvider::class), default => $c->get(DefaultFaviconProvider::class), }; } ); $context->registerService( PreviewProviderInterface::class, function (ContainerInterface $c) { $service = $c->get(ConfigurationService::class)->getAppValue('service/preview', HelperService::PREVIEW_DEFAULT); return match ($service) { HelperService::PREVIEW_PAGERES => $c->get(PageresCliProvider::class), HelperService::PREVIEW_BROW_SHOT => $c->get(BrowshotPreviewProvider::class), HelperService::PREVIEW_SCREEN_SHOT_LAYER => $c->get(ScreenShotLayerProvider::class), HelperService::PREVIEW_SCREEN_SHOT_MACHINE => $c->get(ScreenShotMachineProvider::class), HelperService::PREVIEW_SCREEENLY => $c->get(ScreeenlyProvider::class), default => $c->get(DefaultPreviewProvider::class), }; } ); } /** * @param IRegistrationContext $context * * @return void */ protected function registerSetupChecks(IRegistrationContext $context): void { $context->registerSetupCheck(BackgroundJobsPhpVersionSetupCheck::class); $context->registerSetupCheck(BackgroundJobsExecutedWithCronSetupCheck::class); } }