Basic Supabase OAuth integration & project-app binding

This commit is contained in:
Will Chen
2025-04-22 15:22:47 -07:00
parent 3cf93e10a0
commit ec43482d6c
22 changed files with 1469 additions and 9 deletions

View File

@@ -36,6 +36,27 @@ export function readSettings(): UserSettings {
...DEFAULT_SETTINGS,
...rawSettings,
};
const supabase = combinedSettings.supabase;
if (supabase) {
if (supabase.refreshToken) {
const encryptionType = supabase.refreshToken.encryptionType;
if (encryptionType) {
supabase.refreshToken = {
value: decrypt(supabase.refreshToken),
encryptionType,
};
}
}
if (supabase.accessToken) {
const encryptionType = supabase.accessToken.encryptionType;
if (encryptionType) {
supabase.accessToken = {
value: decrypt(supabase.accessToken),
encryptionType,
};
}
}
}
if (combinedSettings.githubAccessToken) {
const encryptionType = combinedSettings.githubAccessToken.encryptionType;
combinedSettings.githubAccessToken = {
@@ -74,7 +95,18 @@ export function writeSettings(settings: Partial<UserSettings>): void {
newSettings.githubAccessToken.value
);
}
if (newSettings.supabase) {
if (newSettings.supabase.accessToken) {
newSettings.supabase.accessToken = encrypt(
newSettings.supabase.accessToken.value
);
}
if (newSettings.supabase.refreshToken) {
newSettings.supabase.refreshToken = encrypt(
newSettings.supabase.refreshToken.value
);
}
}
for (const provider in newSettings.providerSettings) {
if (newSettings.providerSettings[provider].apiKey) {
newSettings.providerSettings[provider].apiKey = encrypt(

View File

@@ -0,0 +1,23 @@
import { writeSettings } from "./settings";
export function handleSupabaseOAuthReturn({
token,
refreshToken,
expiresIn,
}: {
token: string;
refreshToken: string;
expiresIn: number;
}) {
writeSettings({
supabase: {
accessToken: {
value: token,
},
refreshToken: {
value: refreshToken,
},
expiresIn,
},
});
}