minor improvements

This commit is contained in:
daniel31x13 2023-12-07 16:33:01 -05:00
parent 8786f8b5fe
commit fc9de564b6
5 changed files with 432 additions and 424 deletions

View File

@ -23,7 +23,8 @@ export default async function updateUserById(
id: userId, id: userId,
}, },
}); });
if (ssoUser) { // deny changes to SSO-defined properties if (ssoUser) {
// deny changes to SSO-defined properties
if (data.email !== user?.email) { if (data.email !== user?.email) {
return { return {
response: "SSO users cannot change their email.", response: "SSO users cannot change their email.",
@ -54,8 +55,8 @@ export default async function updateUserById(
status: 400, status: 400,
}; };
} }
} else {
} else { // verify only for non-SSO users // verify only for non-SSO users
// SSO users cannot change their email, password, name, username, or avatar // SSO users cannot change their email, password, name, username, or avatar
if (emailEnabled && !data.email) if (emailEnabled && !data.email)
return { return {
@ -95,18 +96,18 @@ export default async function updateUserById(
id: { not: userId }, id: { not: userId },
OR: emailEnabled OR: emailEnabled
? [ ? [
{ {
username: data.username.toLowerCase(), username: data.username.toLowerCase(),
}, },
{ {
email: data.email?.toLowerCase(), email: data.email?.toLowerCase(),
}, },
] ]
: [ : [
{ {
username: data.username.toLowerCase(), username: data.username.toLowerCase(),
}, },
], ],
}, },
}); });
@ -135,7 +136,10 @@ export default async function updateUserById(
if (data.image?.startsWith("data:image/jpeg;base64")) { if (data.image?.startsWith("data:image/jpeg;base64")) {
if (data.image.length < 1572864) { if (data.image.length < 1572864) {
try { try {
const base64Data = data.image.replace(/^data:image\/jpeg;base64,/, ""); const base64Data = data.image.replace(
/^data:image\/jpeg;base64,/,
""
);
createFolder({ filePath: `uploads/avatar` }); createFolder({ filePath: `uploads/avatar` });
@ -163,9 +167,6 @@ export default async function updateUserById(
await prisma.user.findUnique({ where: { id: userId } }) await prisma.user.findUnique({ where: { id: userId } })
)?.email; )?.email;
// Other settings // Other settings
const saltRounds = 10; const saltRounds = 10;
@ -184,8 +185,6 @@ export default async function updateUserById(
archiveAsScreenshot: data.archiveAsScreenshot, archiveAsScreenshot: data.archiveAsScreenshot,
archiveAsPDF: data.archiveAsPDF, archiveAsPDF: data.archiveAsPDF,
archiveAsWaybackMachine: data.archiveAsWaybackMachine, archiveAsWaybackMachine: data.archiveAsWaybackMachine,
displayLinkIcons: data.displayLinkIcons,
blurredFavicons: data.blurredFavicons,
password: password:
data.newPassword && data.newPassword !== "" data.newPassword && data.newPassword !== ""
? newHashedPassword ? newHashedPassword

View File

@ -119,6 +119,10 @@ export default function Login({
className=" w-full text-center" className=" w-full text-center"
loading={submitLoader} loading={submitLoader}
/> />
{availableLogins.buttonAuths.length > 0 ? (
<div className="divider my-1">OR</div>
) : undefined}
</> </>
); );
} }
@ -127,14 +131,18 @@ export default function Login({
const Buttons: any = []; const Buttons: any = [];
availableLogins.buttonAuths.forEach((value, index) => { availableLogins.buttonAuths.forEach((value, index) => {
Buttons.push( Buttons.push(
<AccentSubmitButton <>
key={index} {index !== 0 ? <div className="divider my-1">OR</div> : undefined}
type="button"
onClick={() => loginUserButton(value.method)} <AccentSubmitButton
label={`Sign in with ${value.name}`} key={index}
className=" w-full text-center" type="button"
loading={submitLoader} onClick={() => loginUserButton(value.method)}
/> label={`Sign in with ${value.name}`}
className=" w-full text-center"
loading={submitLoader}
/>
</>
); );
}); });
return Buttons; return Buttons;

View File

@ -59,7 +59,7 @@ export default function Api() {
<div className="divider my-3"></div> <div className="divider my-3"></div>
<div className="flex flex-col gap-3"> <div className="flex flex-col gap-3">
<div className="badge badge-warning rounded-md w-fit p-4"> <div className="badge badge-warning rounded-md w-fit">
Status: Under Development Status: Under Development
</div> </div>

View File

@ -84,7 +84,7 @@ export default function Subscribe() {
Billed {plan === Plan.monthly ? "Monthly" : "Yearly"} Billed {plan === Plan.monthly ? "Monthly" : "Yearly"}
</p> </p>
<fieldset className="w-full flex-col flex justify-evenly px-4 pb-4 pt-1 rounded-md border border-neutral-content"> <fieldset className="w-full flex-col flex justify-evenly px-4 pb-4 pt-1 rounded-md border border-neutral-content">
<legend className="w-fit font-extralight px-2 border border-neutral rounded-md text-xl"> <legend className="w-fit font-extralight px-2 border border-neutral-content rounded-md text-xl">
Total Total
</legend> </legend>

789
types/enviornment.d.ts vendored
View File

@ -1,399 +1,400 @@
declare global { declare global {
namespace NodeJS { namespace NodeJS {
interface ProcessEnv { interface ProcessEnv {
NEXTAUTH_SECRET: string; NEXTAUTH_SECRET: string;
DATABASE_URL: string; DATABASE_URL: string;
NEXTAUTH_URL: string; NEXTAUTH_URL: string;
NEXT_PUBLIC_DISABLE_REGISTRATION?: string; NEXT_PUBLIC_DISABLE_REGISTRATION?: string;
PAGINATION_TAKE_COUNT?: string; PAGINATION_TAKE_COUNT?: string;
STORAGE_FOLDER?: string; STORAGE_FOLDER?: string;
AUTOSCROLL_TIMEOUT?: string; AUTOSCROLL_TIMEOUT?: string;
RE_ARCHIVE_LIMIT?: string; RE_ARCHIVE_LIMIT?: string;
NEXT_PUBLIC_MAX_UPLOAD_SIZE?: string;
SPACES_KEY?: string;
SPACES_SECRET?: string; SPACES_KEY?: string;
SPACES_ENDPOINT?: string; SPACES_SECRET?: string;
SPACES_BUCKET_NAME?: string; SPACES_ENDPOINT?: string;
SPACES_REGION?: string; SPACES_BUCKET_NAME?: string;
SPACES_FORCE_PATH_STYLE?: string; SPACES_REGION?: string;
SPACES_FORCE_PATH_STYLE?: string;
NEXT_PUBLIC_CREDENTIALS_ENABLED?: string;
DISABLE_NEW_SSO_USERS?: string; NEXT_PUBLIC_CREDENTIALS_ENABLED?: string;
DISABLE_NEW_SSO_USERS?: string;
NEXT_PUBLIC_EMAIL_PROVIDER?: string;
EMAIL_FROM?: string; NEXT_PUBLIC_EMAIL_PROVIDER?: string;
EMAIL_SERVER?: string; EMAIL_FROM?: string;
EMAIL_SERVER?: string;
NEXT_PUBLIC_STRIPE?: string;
STRIPE_SECRET_KEY?: string; NEXT_PUBLIC_STRIPE?: string;
MONTHLY_PRICE_ID?: string; STRIPE_SECRET_KEY?: string;
YEARLY_PRICE_ID?: string; MONTHLY_PRICE_ID?: string;
NEXT_PUBLIC_STRIPE_BILLING_PORTAL_URL?: string; YEARLY_PRICE_ID?: string;
NEXT_PUBLIC_TRIAL_PERIOD_DAYS?: string; NEXT_PUBLIC_STRIPE_BILLING_PORTAL_URL?: string;
BASE_URL?: string; NEXT_PUBLIC_TRIAL_PERIOD_DAYS?: string;
BASE_URL?: string;
//
// SSO Providers //
// // SSO Providers
//
// 42 School
NEXT_PUBLIC_FORTYTWO_ENABLED?: string; // 42 School
FORTYTWO_CUSTOM_NAME?: string; NEXT_PUBLIC_FORTYTWO_ENABLED?: string;
FORTYTWO_CLIENT_ID?: string; FORTYTWO_CUSTOM_NAME?: string;
FORTYTWO_CLIENT_SECRET?: string; FORTYTWO_CLIENT_ID?: string;
FORTYTWO_CLIENT_SECRET?: string;
// Apple
NEXT_PUBLIC_APPLE_ENABLED?: string; // Apple
APPLE_CUSTOM_NAME?: string; NEXT_PUBLIC_APPLE_ENABLED?: string;
APPLE_ID?: string; APPLE_CUSTOM_NAME?: string;
APPLE_SECRET?: string; APPLE_ID?: string;
APPLE_SECRET?: string;
// Atlassian
NEXT_PUBLIC_ATLASSIAN_ENABLED?: string; // Atlassian
ATLASSIAN_CUSTOM_NAME?: string; NEXT_PUBLIC_ATLASSIAN_ENABLED?: string;
ATLASSIAN_CLIENT_ID?: string; ATLASSIAN_CUSTOM_NAME?: string;
ATLASSIAN_CLIENT_SECRET?: string; ATLASSIAN_CLIENT_ID?: string;
ATLASSIAN_SCOPE?: string; ATLASSIAN_CLIENT_SECRET?: string;
ATLASSIAN_SCOPE?: string;
// Auth0
NEXT_PUBLIC_AUTH0_ENABLED?: string; // Auth0
AUTH0_CUSTOM_NAME?: string; NEXT_PUBLIC_AUTH0_ENABLED?: string;
AUTH0_ISSUER?: string; AUTH0_CUSTOM_NAME?: string;
AUTH0_CLIENT_SECRET?: string; AUTH0_ISSUER?: string;
AUTH0_CLIENT_ID?: string; AUTH0_CLIENT_SECRET?: string;
AUTH0_CLIENT_ID?: string;
// Authentik
NEXT_PUBLIC_AUTHENTIK_ENABLED?: string; // Authentik
AUTHENTIK_CUSTOM_NAME?: string; NEXT_PUBLIC_AUTHENTIK_ENABLED?: string;
AUTHENTIK_ISSUER?: string; AUTHENTIK_CUSTOM_NAME?: string;
AUTHENTIK_CLIENT_ID?: string; AUTHENTIK_ISSUER?: string;
AUTHENTIK_CLIENT_SECRET?: string; AUTHENTIK_CLIENT_ID?: string;
AUTHENTIK_CLIENT_SECRET?: string;
// TODO: Azure AD B2C
// TODO: Azure AD // TODO: Azure AD B2C
// TODO: Azure AD
// Battle.net
NEXT_PUBLIC_BATTLENET_ENABLED?: string; // Battle.net
BATTLENET_CUSTOM_NAME?: string; NEXT_PUBLIC_BATTLENET_ENABLED?: string;
BATTLENET_CLIENT_ID?: string; BATTLENET_CUSTOM_NAME?: string;
BATTLENET_CLIENT_SECRET?: string; BATTLENET_CLIENT_ID?: string;
BATLLENET_ISSUER?: string; BATTLENET_CLIENT_SECRET?: string;
BATLLENET_ISSUER?: string;
// Box
NEXT_PUBLIC_BOX_ENABLED?: string; // Box
BOX_CUSTOM_NAME?: string; NEXT_PUBLIC_BOX_ENABLED?: string;
BOX_CLIENT_ID?: string; BOX_CUSTOM_NAME?: string;
BOX_CLIENT_SECRET?: string; BOX_CLIENT_ID?: string;
BOX_CLIENT_SECRET?: string;
// TODO: BoxyHQ SAML
// TODO: BoxyHQ SAML
// Bungie
NEXT_PUBLIC_BUNGIE_ENABLED?: string; // Bungie
BUNGIE_CUSTOM_NAME?: string; NEXT_PUBLIC_BUNGIE_ENABLED?: string;
BUNGIE_CLIENT_ID?: string; BUNGIE_CUSTOM_NAME?: string;
BUNGIE_CLIENT_SECRET?: string; BUNGIE_CLIENT_ID?: string;
BUNGIE_API_KEY?: string; BUNGIE_CLIENT_SECRET?: string;
BUNGIE_API_KEY?: string;
// Cognito
NEXT_PUBLIC_COGNITO_ENABLED?: string; // Cognito
COGNITO_CUSTOM_NAME?: string; NEXT_PUBLIC_COGNITO_ENABLED?: string;
COGNITO_CLIENT_ID?: string; COGNITO_CUSTOM_NAME?: string;
COGNITO_CLIENT_SECRET?: string; COGNITO_CLIENT_ID?: string;
COGNITO_ISSUER?: string; COGNITO_CLIENT_SECRET?: string;
COGNITO_ISSUER?: string;
// Coinbase
NEXT_PUBLIC_COINBASE_ENABLED?: string; // Coinbase
COINBASE_CUSTOM_NAME?: string; NEXT_PUBLIC_COINBASE_ENABLED?: string;
COINBASE_CLIENT_ID?: string; COINBASE_CUSTOM_NAME?: string;
COINBASE_CLIENT_SECRET?: string; COINBASE_CLIENT_ID?: string;
COINBASE_CLIENT_SECRET?: string;
// Discord
NEXT_PUBLIC_DISCORD_ENABLED?: string; // Discord
DISCORD_CUSTOM_NAME?: string; NEXT_PUBLIC_DISCORD_ENABLED?: string;
DISCORD_CLIENT_ID?: string; DISCORD_CUSTOM_NAME?: string;
DISCORD_CLIENT_SECRET?: string; DISCORD_CLIENT_ID?: string;
DISCORD_CLIENT_SECRET?: string;
// Dropbox
NEXT_PUBLIC_DROPBOX_ENABLED?: string; // Dropbox
DROPBOX_CUSTOM_NAME?: string; NEXT_PUBLIC_DROPBOX_ENABLED?: string;
DROPBOX_CLIENT_ID?: string; DROPBOX_CUSTOM_NAME?: string;
DROPBOX_CLIENT_SECRET?: string; DROPBOX_CLIENT_ID?: string;
DROPBOX_CLIENT_SECRET?: string;
// DuendeIndentityServer6
NEXT_PUBLIC_DUENDE_IDS6_ENABLED?: string; // DuendeIndentityServer6
DUENDE_IDS6_CUSTOM_NAME?: string; NEXT_PUBLIC_DUENDE_IDS6_ENABLED?: string;
DUENDE_IDS6_CLIENT_ID?: string; DUENDE_IDS6_CUSTOM_NAME?: string;
DUENDE_IDS6_CLIENT_SECRET?: string; DUENDE_IDS6_CLIENT_ID?: string;
DUENDE_IDS6_ISSUER?: string; DUENDE_IDS6_CLIENT_SECRET?: string;
DUENDE_IDS6_ISSUER?: string;
// EVE Online
NEXT_PUBLIC_EVEONLINE_ENABLED?: string; // EVE Online
EVEONLINE_CUSTOM_NAME?: string; NEXT_PUBLIC_EVEONLINE_ENABLED?: string;
EVEONLINE_CLIENT_ID?: string; EVEONLINE_CUSTOM_NAME?: string;
EVEONLINE_CLIENT_SECRET?: string; EVEONLINE_CLIENT_ID?: string;
EVEONLINE_CLIENT_SECRET?: string;
// Facebook
NEXT_PUBLIC_FACEBOOK_ENABLED?: string; // Facebook
FACEBOOK_CUSTOM_NAME?: string; NEXT_PUBLIC_FACEBOOK_ENABLED?: string;
FACEBOOK_CLIENT_ID?: string; FACEBOOK_CUSTOM_NAME?: string;
FACEBOOK_CLIENT_SECRET?: string; FACEBOOK_CLIENT_ID?: string;
FACEBOOK_CLIENT_SECRET?: string;
// FACEIT
NEXT_PUBLIC_FACEIT_ENABLED?: string; // FACEIT
FACEIT_CUSTOM_NAME?: string; NEXT_PUBLIC_FACEIT_ENABLED?: string;
FACEIT_CLIENT_ID?: string; FACEIT_CUSTOM_NAME?: string;
FACEIT_CLIENT_SECRET?: string; FACEIT_CLIENT_ID?: string;
FACEIT_CLIENT_SECRET?: string;
// Foursquare
NEXT_PUBLIC_FOURSQUARE_ENABLED?: string; // Foursquare
FOURSQUARE_CUSTOM_NAME?: string; NEXT_PUBLIC_FOURSQUARE_ENABLED?: string;
FOURSQUARE_CLIENT_ID?: string; FOURSQUARE_CUSTOM_NAME?: string;
FOURSQUARE_CLIENT_SECRET?: string; FOURSQUARE_CLIENT_ID?: string;
FOURSQUARE_APIVERSION?: string; FOURSQUARE_CLIENT_SECRET?: string;
FOURSQUARE_APIVERSION?: string;
// Freshbooks
NEXT_PUBLIC_FRESHBOOKS_ENABLED?: string; // Freshbooks
FRESHBOOKS_CUSTOM_NAME?: string; NEXT_PUBLIC_FRESHBOOKS_ENABLED?: string;
FRESHBOOKS_CLIENT_ID?: string; FRESHBOOKS_CUSTOM_NAME?: string;
FRESHBOOKS_CLIENT_SECRET?: string; FRESHBOOKS_CLIENT_ID?: string;
FRESHBOOKS_CLIENT_SECRET?: string;
// FusionAuth
NEXT_PUBLIC_FUSIONAUTH_ENABLED?: string; // FusionAuth
FUSIONAUTH_CUSTOM_NAME?: string; NEXT_PUBLIC_FUSIONAUTH_ENABLED?: string;
FUSIONAUTH_CLIENT_ID?: string; FUSIONAUTH_CUSTOM_NAME?: string;
FUSIONAUTH_CLIENT_SECRET?: string; FUSIONAUTH_CLIENT_ID?: string;
FUSIONAUTH_ISSUER?: string; FUSIONAUTH_CLIENT_SECRET?: string;
FUSIONAUTH_TENANT_ID?: string; FUSIONAUTH_ISSUER?: string;
FUSIONAUTH_TENANT_ID?: string;
// GitHub
NEXT_PUBLIC_GITHUB_ENABLED?: string; // GitHub
GITHUB_CUSTOM_NAME?: string; NEXT_PUBLIC_GITHUB_ENABLED?: string;
GITHUB_CLIENT_ID?: string; GITHUB_CUSTOM_NAME?: string;
GITHUB_CLIENT_SECRET?: string; GITHUB_CLIENT_ID?: string;
GITHUB_CLIENT_SECRET?: string;
// GitLab
NEXT_PUBLIC_GITLAB_ENABLED?: string; // GitLab
GITLAB_CUSTOM_NAME?: string; NEXT_PUBLIC_GITLAB_ENABLED?: string;
GITLAB_CLIENT_ID?: string; GITLAB_CUSTOM_NAME?: string;
GITLAB_CLIENT_SECRET?: string; GITLAB_CLIENT_ID?: string;
GITLAB_CLIENT_SECRET?: string;
// Google
NEXT_PUBLIC_GOOGLE_ENABLED?: string; // Google
GOOGLE_CUSTOM_NAME?: string; NEXT_PUBLIC_GOOGLE_ENABLED?: string;
GOOGLE_CLIENT_ID?: string; GOOGLE_CUSTOM_NAME?: string;
GOOGLE_CLIENT_SECRET?: string; GOOGLE_CLIENT_ID?: string;
GOOGLE_CLIENT_SECRET?: string;
// HubSpot
NEXT_PUBLIC_HUBSPOT_ENABLED?: string; // HubSpot
HUBSPOT_CUSTOM_NAME?: string; NEXT_PUBLIC_HUBSPOT_ENABLED?: string;
HUBSPOT_CLIENT_ID?: string; HUBSPOT_CUSTOM_NAME?: string;
HUBSPOT_CLIENT_SECRET?: string; HUBSPOT_CLIENT_ID?: string;
HUBSPOT_CLIENT_SECRET?: string;
// IdentityServer4
NEXT_PUBLIC_IDS4_ENABLED?: string; // IdentityServer4
IDS4_CUSTOM_NAME?: string; NEXT_PUBLIC_IDS4_ENABLED?: string;
IDS4_CLIENT_ID?: string; IDS4_CUSTOM_NAME?: string;
IDS4_CLIENT_SECRET?: string; IDS4_CLIENT_ID?: string;
IDS4_ISSUER?: string; IDS4_CLIENT_SECRET?: string;
IDS4_ISSUER?: string;
// TODO: Instagram (Doesn't return email)
// TODO: Instagram (Doesn't return email)
// Kakao
NEXT_PUBLIC_KAKAO_ENABLED?: string; // Kakao
KAKAO_CUSTOM_NAME?: string; NEXT_PUBLIC_KAKAO_ENABLED?: string;
KAKAO_CLIENT_ID?: string; KAKAO_CUSTOM_NAME?: string;
KAKAO_CLIENT_SECRET?: string; KAKAO_CLIENT_ID?: string;
KAKAO_CLIENT_SECRET?: string;
// Keycloak
NEXT_PUBLIC_KEYCLOAK_ENABLED?: string; // Keycloak
KEYCLOAK_CUSTOM_NAME?: string; NEXT_PUBLIC_KEYCLOAK_ENABLED?: string;
KEYCLOAK_ISSUER?: string; KEYCLOAK_CUSTOM_NAME?: string;
KEYCLOAK_CLIENT_ID?: string; KEYCLOAK_ISSUER?: string;
KEYCLOAK_CLIENT_SECRET?: string; KEYCLOAK_CLIENT_ID?: string;
KEYCLOAK_CLIENT_SECRET?: string;
// LINE
NEXT_PUBLIC_LINE_ENABLED?: string; // LINE
LINE_CUSTOM_NAME?: string; NEXT_PUBLIC_LINE_ENABLED?: string;
LINE_CLIENT_ID?: string; LINE_CUSTOM_NAME?: string;
LINE_CLIENT_SECRET?: string; LINE_CLIENT_ID?: string;
LINE_CLIENT_SECRET?: string;
// LinkedIn
NEXT_PUBLIC_LINKEDIN_ENABLED?: string; // LinkedIn
LINKEDIN_CUSTOM_NAME?: string; NEXT_PUBLIC_LINKEDIN_ENABLED?: string;
LINKEDIN_CLIENT_ID?: string; LINKEDIN_CUSTOM_NAME?: string;
LINKEDIN_CLIENT_SECRET?: string; LINKEDIN_CLIENT_ID?: string;
LINKEDIN_CLIENT_SECRET?: string;
// Mailchimp
NEXT_PUBLIC_MAILCHIMP_ENABLED?: string; // Mailchimp
MAILCHIMP_CUSTOM_NAME?: string; NEXT_PUBLIC_MAILCHIMP_ENABLED?: string;
MAILCHIMP_CLIENT_ID?: string; MAILCHIMP_CUSTOM_NAME?: string;
MAILCHIMP_CLIENT_SECRET?: string; MAILCHIMP_CLIENT_ID?: string;
MAILCHIMP_CLIENT_SECRET?: string;
// Mail.ru
NEXT_PUBLIC_MAILRU_ENABLED?: string; // Mail.ru
MAILRU_CUSTOM_NAME?: string; NEXT_PUBLIC_MAILRU_ENABLED?: string;
MAILRU_CLIENT_ID?: string; MAILRU_CUSTOM_NAME?: string;
MAILRU_CLIENT_SECRET?: string; MAILRU_CLIENT_ID?: string;
MAILRU_CLIENT_SECRET?: string;
// TODO: Medium (Doesn't return email)
// TODO: Medium (Doesn't return email)
// Naver
NEXT_PUBLIC_NAVER_ENABLED?: string; // Naver
NAVER_CUSTOM_NAME?: string; NEXT_PUBLIC_NAVER_ENABLED?: string;
NAVER_CLIENT_ID?: string; NAVER_CUSTOM_NAME?: string;
NAVER_CLIENT_SECRET?: string; NAVER_CLIENT_ID?: string;
NAVER_CLIENT_SECRET?: string;
// Netlify
NEXT_PUBLIC_NETLIFY_ENABLED?: string; // Netlify
NETLIFY_CUSTOM_NAME?: string; NEXT_PUBLIC_NETLIFY_ENABLED?: string;
NETLIFY_CLIENT_ID?: string; NETLIFY_CUSTOM_NAME?: string;
NETLIFY_CLIENT_SECRET?: string; NETLIFY_CLIENT_ID?: string;
NETLIFY_CLIENT_SECRET?: string;
// Okta
NEXT_PUBLIC_OKTA_ENABLED?: string; // Okta
OKTA_CUSTOM_NAME?: string; NEXT_PUBLIC_OKTA_ENABLED?: string;
OKTA_CLIENT_ID?: string; OKTA_CUSTOM_NAME?: string;
OKTA_CLIENT_SECRET?: string; OKTA_CLIENT_ID?: string;
OKTA_ISSUER?: string; OKTA_CLIENT_SECRET?: string;
OKTA_ISSUER?: string;
// OneLogin
NEXT_PUBLIC_ONELOGIN_ENABLED?: string; // OneLogin
ONELOGIN_CUSTOM_NAME?: string; NEXT_PUBLIC_ONELOGIN_ENABLED?: string;
ONELOGIN_CLIENT_ID?: string; ONELOGIN_CUSTOM_NAME?: string;
ONELOGIN_CLIENT_SECRET?: string; ONELOGIN_CLIENT_ID?: string;
ONELOGIN_ISSUER?: string; ONELOGIN_CLIENT_SECRET?: string;
ONELOGIN_ISSUER?: string;
// Osso
NEXT_PUBLIC_OSSO_ENABLED?: string; // Osso
OSSO_CUSTOM_NAME?: string; NEXT_PUBLIC_OSSO_ENABLED?: string;
OSSO_CLIENT_ID?: string; OSSO_CUSTOM_NAME?: string;
OSSO_CLIENT_SECRET?: string; OSSO_CLIENT_ID?: string;
OSSO_ISSUER?: string; OSSO_CLIENT_SECRET?: string;
OSSO_ISSUER?: string;
// osu!
NEXT_PUBLIC_OSU_ENABLED?: string; // osu!
OSU_CUSTOM_NAME?: string; NEXT_PUBLIC_OSU_ENABLED?: string;
OSU_CLIENT_ID?: string; OSU_CUSTOM_NAME?: string;
OSU_CLIENT_SECRET?: string; OSU_CLIENT_ID?: string;
OSU_CLIENT_SECRET?: string;
// Patreon
NEXT_PUBLIC_PATREON_ENABLED?: string; // Patreon
PATREON_CUSTOM_NAME?: string; NEXT_PUBLIC_PATREON_ENABLED?: string;
PATREON_CLIENT_ID?: string; PATREON_CUSTOM_NAME?: string;
PATREON_CLIENT_SECRET?: string; PATREON_CLIENT_ID?: string;
PATREON_CLIENT_SECRET?: string;
// Pinterest
NEXT_PUBLIC_PINTEREST_ENABLED?: string; // Pinterest
PINTEREST_CUSTOM_NAME?: string; NEXT_PUBLIC_PINTEREST_ENABLED?: string;
PINTEREST_CLIENT_ID?: string; PINTEREST_CUSTOM_NAME?: string;
PINTEREST_CLIENT_SECRET?: string; PINTEREST_CLIENT_ID?: string;
PINTEREST_CLIENT_SECRET?: string;
// Pipedrive
NEXT_PUBLIC_PIPEDRIVE_ENABLED?: string; // Pipedrive
PIPEDRIVE_CUSTOM_NAME?: string; NEXT_PUBLIC_PIPEDRIVE_ENABLED?: string;
PIPEDRIVE_CLIENT_ID?: string; PIPEDRIVE_CUSTOM_NAME?: string;
PIPEDRIVE_CLIENT_SECRET?: string; PIPEDRIVE_CLIENT_ID?: string;
PIPEDRIVE_CLIENT_SECRET?: string;
// Reddit
// TODO (1h tokens) // Reddit
NEXT_PUBLIC_REDDIT_ENABLED?: string; // TODO (1h tokens)
REDDIT_CUSTOM_NAME?: string; NEXT_PUBLIC_REDDIT_ENABLED?: string;
REDDIT_CLIENT_ID?: string; REDDIT_CUSTOM_NAME?: string;
REDDIT_CLIENT_SECRET?: string; REDDIT_CLIENT_ID?: string;
REDDIT_CLIENT_SECRET?: string;
// Salesforce
NEXT_PUBLIC_SALESFORCE_ENABLED?: string; // Salesforce
SALESFORCE_CUSTOM_NAME?: string; NEXT_PUBLIC_SALESFORCE_ENABLED?: string;
SALESFORCE_CLIENT_ID?: string; SALESFORCE_CUSTOM_NAME?: string;
SALESFORCE_CLIENT_SECRET?: string; SALESFORCE_CLIENT_ID?: string;
SALESFORCE_CLIENT_SECRET?: string;
// Slack
NEXT_PUBLIC_SLACK_ENABLED?: string; // Slack
SLACK_CUSTOM_NAME?: string; NEXT_PUBLIC_SLACK_ENABLED?: string;
SLACK_CLIENT_ID?: string; SLACK_CUSTOM_NAME?: string;
SLACK_CLIENT_SECRET?: string; SLACK_CLIENT_ID?: string;
SLACK_CLIENT_SECRET?: string;
// Spotify
NEXT_PUBLIC_SPOTIFY_ENABLED?: string; // Spotify
SPOTIFY_CUSTOM_NAME?: string; NEXT_PUBLIC_SPOTIFY_ENABLED?: string;
SPOTIFY_CLIENT_ID?: string; SPOTIFY_CUSTOM_NAME?: string;
SPOTIFY_CLIENT_SECRET?: string; SPOTIFY_CLIENT_ID?: string;
SPOTIFY_CLIENT_SECRET?: string;
// Strava
NEXT_PUBLIC_STRAVA_ENABLED?: string; // Strava
STRAVA_CUSTOM_NAME?: string; NEXT_PUBLIC_STRAVA_ENABLED?: string;
STRAVA_CLIENT_ID?: string; STRAVA_CUSTOM_NAME?: string;
STRAVA_CLIENT_SECRET?: string; STRAVA_CLIENT_ID?: string;
STRAVA_CLIENT_SECRET?: string;
// Todoist
NEXT_PUBLIC_TODOIST_ENABLED?: string; // Todoist
TODOIST_CUSTOM_NAME?: string; NEXT_PUBLIC_TODOIST_ENABLED?: string;
TODOIST_CLIENT_ID?: string; TODOIST_CUSTOM_NAME?: string;
TODOIST_CLIENT_SECRET?: string; TODOIST_CLIENT_ID?: string;
TODOIST_CLIENT_SECRET?: string;
// TODO: Trakt (Doesn't return email)
// TODO: Trakt (Doesn't return email)
// Twitch
NEXT_PUBLIC_TWITCH_ENABLED?: string; // Twitch
TWITCH_CUSTOM_NAME?: string; NEXT_PUBLIC_TWITCH_ENABLED?: string;
TWITCH_CLIENT_ID?: string; TWITCH_CUSTOM_NAME?: string;
TWITCH_CLIENT_SECRET?: string; TWITCH_CLIENT_ID?: string;
TWITCH_CLIENT_SECRET?: string;
// TODO: Twitter (OAuth 1.0)
// TODO: Twitter (OAuth 1.0)
// United Effects
NEXT_PUBLIC_UNITED_EFFECTS_ENABLED?: string; // United Effects
UNITED_EFFECTS_CUSTOM_NAME?: string; NEXT_PUBLIC_UNITED_EFFECTS_ENABLED?: string;
UNITED_EFFECTS_CLIENT_ID?: string; UNITED_EFFECTS_CUSTOM_NAME?: string;
UNITED_EFFECTS_CLIENT_SECRET?: string; UNITED_EFFECTS_CLIENT_ID?: string;
UNITED_EFFECTS_ISSUER?: string; UNITED_EFFECTS_CLIENT_SECRET?: string;
UNITED_EFFECTS_ISSUER?: string;
// VK
NEXT_PUBLIC_VK_ENABLED?: string; // VK
VK_CUSTOM_NAME?: string; NEXT_PUBLIC_VK_ENABLED?: string;
VK_CLIENT_ID?: string; VK_CUSTOM_NAME?: string;
VK_CLIENT_SECRET?: string; VK_CLIENT_ID?: string;
VK_CLIENT_SECRET?: string;
// Wikimedia
NEXT_PUBLIC_WIKIMEDIA_ENABLED?: string; // Wikimedia
WIKIMEDIA_CUSTOM_NAME?: string; NEXT_PUBLIC_WIKIMEDIA_ENABLED?: string;
WIKIMEDIA_CLIENT_ID?: string; WIKIMEDIA_CUSTOM_NAME?: string;
WIKIMEDIA_CLIENT_SECRET?: string; WIKIMEDIA_CLIENT_ID?: string;
WIKIMEDIA_CLIENT_SECRET?: string;
// Wordpress.com
NEXT_PUBLIC_WORDPRESS_ENABLED?: string; // Wordpress.com
WORDPRESS_CUSTOM_NAME?: string; NEXT_PUBLIC_WORDPRESS_ENABLED?: string;
WORDPRESS_CLIENT_ID?: string; WORDPRESS_CUSTOM_NAME?: string;
WORDPRESS_CLIENT_SECRET?: string; WORDPRESS_CLIENT_ID?: string;
WORDPRESS_CLIENT_SECRET?: string;
// TODO: WorkOS (Custom flow)
// TODO: WorkOS (Custom flow)
// Yandex
NEXT_PUBLIC_YANDEX_ENABLED?: string; // Yandex
YANDEX_CUSTOM_NAME?: string; NEXT_PUBLIC_YANDEX_ENABLED?: string;
YANDEX_CLIENT_ID?: string; YANDEX_CUSTOM_NAME?: string;
YANDEX_CLIENT_SECRET?: string; YANDEX_CLIENT_ID?: string;
YANDEX_CLIENT_SECRET?: string;
// Zitadel
NEXT_PUBLIC_ZITADEL_ENABLED?: string; // Zitadel
ZITADEL_CUSTOM_NAME?: string; NEXT_PUBLIC_ZITADEL_ENABLED?: string;
ZITADEL_CLIENT_ID?: string; ZITADEL_CUSTOM_NAME?: string;
ZITADEL_CLIENT_SECRET?: string; ZITADEL_CLIENT_ID?: string;
ZITADEL_ISSUER?: string; ZITADEL_CLIENT_SECRET?: string;
ZITADEL_ISSUER?: string;
// Zoho
NEXT_PUBLIC_ZOHO_ENABLED?: string; // Zoho
ZOHO_CUSTOM_NAME?: string; NEXT_PUBLIC_ZOHO_ENABLED?: string;
ZOHO_CLIENT_ID?: string; ZOHO_CUSTOM_NAME?: string;
ZOHO_CLIENT_SECRET?: string; ZOHO_CLIENT_ID?: string;
ZOHO_CLIENT_SECRET?: string;
// Zoom
NEXT_PUBLIC_ZOOM_ENABLED?: string; // Zoom
ZOOM_CUSTOM_NAME?: string; NEXT_PUBLIC_ZOOM_ENABLED?: string;
ZOOM_CLIENT_ID?: string; ZOOM_CUSTOM_NAME?: string;
ZOOM_CLIENT_SECRET?: string; ZOOM_CLIENT_ID?: string;
} ZOOM_CLIENT_SECRET?: string;
} }
}
} }
export {}; export {};