getEntityManager()->getRepository('Integration')->find(); $arr = array(); foreach ($integrations as $entity) { if ($entity->get('enabled') && $this->getMetadata()->get('integrations.' . $entity->id .'.allowUserAccounts')) { $arr[] = array( 'id' => $entity->id ); } } return array( 'list' => $arr ); } public function actionGetOAuthCredentials($params, $data, $request) { $id = $request->get('id'); list($integration, $userId) = explode('__', $id); if (!$this->getUser()->isAdmin()) { if ($this->getUser()->id != $userId) { throw new Forbidden(); } } $entity = $this->getEntityManager()->getEntity('Integration', $integration); if ($entity) { return array( 'clientId' => $entity->get('clientId'), 'redirectUri' => $this->getConfig()->get('siteUrl') . '/oauthcallback' ); } } public function actionRead($params, $data, $request) { list($integration, $userId) = explode('__', $params['id']); if (!$this->getUser()->isAdmin()) { if ($this->getUser()->id != $userId) { throw new Forbidden(); } } $entity = $this->getEntityManager()->getEntity('ExternalAccount', $params['id']); return $entity->toArray(); } public function actionUpdate($params, $data) { return $this->actionPatch($params, $data); } public function actionPatch($params, $data) { list($integration, $userId) = explode('__', $params['id']); if (!$this->getUser()->isAdmin()) { if ($this->getUser()->id != $userId) { throw new Forbidden(); } } $entity = $this->getEntityManager()->getEntity('ExternalAccount', $params['id']); $entity->set($data); $this->getEntityManager()->saveEntity($entity); return $entity->toArray(); } public function actionAuthorizationCode($params, $data, $request) { if (!$request->isPost()) { throw Error('Bad HTTP method type.'); } $id = $data['id']; $code = $data['code']; list($integration, $userId) = explode('__', $id); if (!$this->getUser()->isAdmin()) { if ($this->getUser()->id != $userId) { throw new Forbidden(); } } $service = $this->getRecordService(); return $service->authorizationCode($integration, $userId, $code); } }