/** * Get Instance of Account object. * * @param Application $application * * @return Account */ public static function getInstance(Application $application) { if (empty(self::$instance)) { self::$instance = new self($application); } if (self::$instance->isAuthorized()) { $session = $application['session']; $authenticatedEmail = $session->get('account.authorized.email'); $entityManager = $application['entityManager']; $authenticatedUser = $entityManager->getRepository('Models\\User')->findOneBy(['email' => $authenticatedEmail]); if (empty($authenticatedUser)) { self::$instance->logout(); } else { self::$instance->authenticate($authenticatedUser); } } return self::$instance; }
/** * Creates new instance of Application. */ public function __construct() { parent::__construct(); $application = $this; $this['routes'] = function () { return new RouteCollection(); }; $this['requestContext'] = function () { return new RequestContext(); }; $this['entityManager'] = function () { return EntityManagerFactory::create(); }; $this['validator'] = function () { return ValidatorBuilderFactory::create(); }; $this['account'] = function () use($application) { return Account::getInstance($application); }; $this['session'] = function () { return new Session(); }; }