/** * Application constructor. * * @param array $config */ public function __construct($config) { parent::__construct(); $this['config'] = function () use($config) { return new Config($config); }; if ($this['config']['debug']) { error_reporting(E_ALL); } $this->registerProviders(); $this->registerBase(); $this->initializeLogger(); $this->registerExceptionHandler(); Log::info('Current configuration:', $config); }
/** * Registers services on the given container. * * This method should only be used to configure services and parameters. * It should not get services. * * @param Container $pimple A container instance */ public function register(Container $pimple) { $pimple['encryptor'] = function ($pimple) { return new Encryptor($pimple['config']['component_app_id'], $pimple['config']['component_token'], $pimple['config']['component_aes_key']); }; $pimple['component'] = function ($pimple) { return new Component($pimple['config']['component_app_id'], $pimple['config']['component_app_secret'], $pimple['cache']); }; $pimple['auth_server'] = function ($pimple) { $server = new AuthGuard($pimple['config']['component_token']); $server->debug($pimple['config']['debug']); $server->setEncryptor($pimple['encryptor']); //处理verifyTicket $server->setVerifyTicketHandler(function ($message) use($pimple) { Log::info('接收到ticket事件' . $message); $componentVerifyTicket = new ComponentVerifyTicket($pimple['cache']); $componentVerifyTicket->setComponentVerifyTicket($message->ComponentVerifyTicket); }); return $server; }; }
/** * Build response. * * @param mixed $message * * @return string */ protected function buildResponse($to, $from, $message) { if (empty($message) || $message === self::SUCCESS_EMPTY_RESPONSE) { return self::SUCCESS_EMPTY_RESPONSE; } if ($message instanceof RawMessage) { return $message->get('content', self::SUCCESS_EMPTY_RESPONSE); } if (is_string($message)) { $message = new Text(['content' => $message]); } if ($this->isMessage($message)) { $response = $this->buildReply($to, $from, $message); if ($this->isSafeMode()) { Log::info('Message safe mode is enable.'); $response = $this->encryptor->encryptMsg($response, $this->request->get('nonce'), $this->request->get('timestamp')); } } return $response; }