{"record":{"id":"df0ddd8aa6871a2a","repo":"gitroomhq/postiz-app","slug":"integration-not-allowed-df0ddd","errorCode":null,"errorMessage":"Integration not allowed","messagePattern":"Integration not allowed","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/backend/src/api/routes/no.auth.integrations.controller.ts","lineNumber":55,"sourceCode":"\n  @Get('/')\n  getIntegrations() {\n    return this._integrationManager.getAllIntegrations();\n  }\n\n  @Post('/social-connect/:integration')\n  @CheckPolicies([AuthorizationActions.Create, Sections.CHANNEL])\n  @UseFilters(new NotEnoughScopesFilter())\n  async connectSocialMedia(\n    @Param('integration') integration: string,\n    @Body() body: ConnectIntegrationDto\n  ) {\n    if (\n      !this._integrationManager\n        .getAllowedSocialsIntegrations()\n        .includes(integration)\n    ) {\n      throw new Error('Integration not allowed');\n    }\n\n    const integrationProvider =\n      this._integrationManager.getSocialIntegration(integration);\n\n    const getCodeVerifier = integrationProvider.customFields\n      ? 'none'\n      : await ioRedis.get(`login:${body.state}`);\n    if (!getCodeVerifier) {\n      throw new Error('Invalid state');\n    }\n\n    const organization = await ioRedis.get(`organization:${body.state}`);\n    if (!organization) {\n      throw new Error('Organization not found');\n    }\n\n    const org = await this._organizationService.getOrgById(organization);","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/gitroomhq/postiz-app/blob/0f1647f7491a217d43eb5ae7a480484bdf0aff3e/apps/backend/src/api/routes/no.auth.integrations.controller.ts#L37-L73","documentation":"Thrown when the integration name in the OAuth callback is not in the server's allow-list of social integrations (getAllowedSocialsIntegrations). It guards the public connect endpoint from connecting unsupported or disabled providers.","triggerScenarios":"GET/POST /no-auth/integrations/:integration/connect where :integration is misspelled, not compiled into the build, or disabled via configuration/feature flags.","commonSituations":"Deploying a custom/enterprise build where a provider was removed; typo in the integration slug; version skew between frontend expecting a provider and backend not enabling it.","solutions":["Check the exact provider slug against the backend's allowed integrations list","Ensure the provider module is registered and enabled in the integration manager for this deployment","Align frontend and backend versions if the provider was recently added"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const allowed = await fetchAllowedIntegrations();\nif (!allowed.includes(slug)) throw new Error(`Provider '${slug}' not enabled on this server`);","typeGuard":"const isSupported = (slug: string, allowed: string[]) => allowed.includes(slug);","tryCatchPattern":"try { connect(slug); } catch (e) { if (e.message === 'Integration not allowed') showUnsupportedProvider(slug); else throw e; }","preventionTips":["Fetch the allow-list at app start and drive the provider picker from it","Fail fast with a clear message instead of starting OAuth for unknown slugs"],"tags":["integrations","oauth","allowlist","configuration"],"backgroundTag":"unsupported-provider","analyzedSha":"0f1647f7491a217d43eb5ae7a480484bdf0aff3e","analyzedAt":"2026-08-27T12:09:55.020Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}