Collapse LinkedIn to one content type per account kind (linkedin_post, linkedin_page_post). Publishers infer the publish format from the attached media — text, single image/video, multi-image carousel, or PDF document — matching how facebook_post/x_post already work; PDF is exclusive of any other attachment. Removes the editor variant picker, keeping only the PDF document title field. Includes a data migration collapsing the retired carousel/document content types. Replace the two LinkedIn account cards with a single Connect LinkedIn button: one unified OAuth grant (linkedin-openid driver, union of scopes) then a post-callback identity picker to post as the personal profile (linkedin) or a company page the member administers (linkedin-page). The chosen organization is validated against the admin-verified list from the OAuth grant. Per-capability gating via LINKEDIN_ENABLED / LINKEDIN_PAGE_ENABLED supports profile-only or org-only self-hosting. Removes LinkedInPageController, LinkedInTokenSynchronizer, the standalone linkedin-page connect routes, and the unused redirect_page config.
147 lines
4 KiB
PHP
147 lines
4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
return [
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Third Party Services
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| This file is for storing the credentials for third party services such
|
|
| as Mailgun, Postmark, AWS and more. This file provides the de facto
|
|
| location for this type of information, allowing packages to have
|
|
| a conventional file to locate the various service credentials.
|
|
|
|
|
*/
|
|
|
|
'postmark' => [
|
|
'key' => env('POSTMARK_API_KEY'),
|
|
],
|
|
|
|
'resend' => [
|
|
'key' => env('RESEND_API_KEY'),
|
|
],
|
|
|
|
'ses' => [
|
|
'key' => env('AWS_ACCESS_KEY_ID'),
|
|
'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
|
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
|
|
],
|
|
|
|
'slack' => [
|
|
'notifications' => [
|
|
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
|
|
'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'),
|
|
],
|
|
],
|
|
|
|
'linkedin' => [
|
|
'client_id' => env('LINKEDIN_CLIENT_ID'),
|
|
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
|
|
'redirect' => env('LINKEDIN_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
'linkedin-openid' => [
|
|
'client_id' => env('LINKEDIN_CLIENT_ID'),
|
|
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
|
|
'redirect' => env('LINKEDIN_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
'x' => [
|
|
'client_id' => env('X_CLIENT_ID'),
|
|
'client_secret' => env('X_CLIENT_SECRET'),
|
|
'redirect' => env('X_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
'tiktok' => [
|
|
'client_id' => env('TIKTOK_CLIENT_ID'),
|
|
'client_secret' => env('TIKTOK_CLIENT_SECRET'),
|
|
'redirect' => env('TIKTOK_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
// Google OAuth (used for YouTube)
|
|
'google' => [
|
|
'client_id' => env('GOOGLE_CLIENT_ID'),
|
|
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
|
|
'redirect' => env('GOOGLE_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
// Google OAuth (used for login/signup)
|
|
'google-auth' => [
|
|
'client_id' => env('GOOGLE_CLIENT_ID'),
|
|
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
|
|
'redirect' => env('GOOGLE_AUTH_CALLBACK'),
|
|
],
|
|
|
|
// GitHub OAuth (used for login/signup)
|
|
'github' => [
|
|
'client_id' => env('GITHUB_CLIENT_ID'),
|
|
'client_secret' => env('GITHUB_CLIENT_SECRET'),
|
|
'redirect' => env('GITHUB_AUTH_CALLBACK'),
|
|
],
|
|
|
|
// Facebook Pages
|
|
'facebook' => [
|
|
'client_id' => env('FACEBOOK_CLIENT_ID'),
|
|
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
|
|
'redirect' => env('FACEBOOK_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
// Instagram
|
|
'instagram' => [
|
|
'client_id' => env('INSTAGRAM_CLIENT_ID'),
|
|
'client_secret' => env('INSTAGRAM_CLIENT_SECRET'),
|
|
'redirect' => env('INSTAGRAM_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
// Threads
|
|
'threads' => [
|
|
'client_id' => env('THREADS_CLIENT_ID'),
|
|
'client_secret' => env('THREADS_CLIENT_SECRET'),
|
|
'redirect' => env('THREADS_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
// Pinterest
|
|
'pinterest' => [
|
|
'client_id' => env('PINTEREST_CLIENT_ID'),
|
|
'client_secret' => env('PINTEREST_CLIENT_SECRET'),
|
|
'redirect' => env('PINTEREST_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
// Discord
|
|
'discord' => [
|
|
'client_id' => env('DISCORD_CLIENT_ID'),
|
|
'client_secret' => env('DISCORD_CLIENT_SECRET'),
|
|
'redirect' => env('DISCORD_CLIENT_REDIRECT'),
|
|
],
|
|
|
|
'gtm' => [
|
|
'id' => env('GTM_ID'),
|
|
],
|
|
|
|
'posthog' => [
|
|
'enabled' => (bool) env('POSTHOG_ENABLED', false),
|
|
'api_key' => env('POSTHOG_API_KEY'),
|
|
'host' => env('POSTHOG_HOST', 'https://us.i.posthog.com'),
|
|
],
|
|
|
|
'unsplash' => [
|
|
'access_key' => env('UNSPLASH_ACCESS_KEY'),
|
|
'secret_key' => env('UNSPLASH_SECRET_KEY'),
|
|
],
|
|
|
|
'giphy' => [
|
|
'api_key' => env('GIPHY_API_KEY'),
|
|
],
|
|
|
|
'openai' => [
|
|
'api_key' => env('OPENAI_API_KEY'),
|
|
],
|
|
|
|
'gemini' => [
|
|
'api_key' => env('GEMINI_API_KEY'),
|
|
],
|
|
|
|
];
|