@restnfeel/agentc-starter-kit
Version:
한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템
58 lines (56 loc) • 2.16 kB
JavaScript
// Helper function to convert Supabase user to our User type
const convertSupabaseUser = (supabaseUser) => {
var _a, _b, _c;
if (!supabaseUser)
return null;
return {
id: supabaseUser.id,
email: supabaseUser.email || "",
name: ((_a = supabaseUser.user_metadata) === null || _a === void 0 ? void 0 : _a.full_name) ||
((_b = supabaseUser.user_metadata) === null || _b === void 0 ? void 0 : _b.name) ||
"",
avatar_url: (_c = supabaseUser.user_metadata) === null || _c === void 0 ? void 0 : _c.avatar_url,
role: "customer", // Default role, can be customized
created_at: supabaseUser.created_at || new Date().toISOString(),
updated_at: supabaseUser.updated_at || new Date().toISOString(),
};
};
// Supabase adapter for AuthProvider
const createSupabaseAdapter = (supabase) => {
if (!supabase) {
console.warn("Supabase client not provided to adapter");
return {};
}
return {
getSession: async () => {
const { data: { session }, } = await supabase.auth.getSession();
return {
user: convertSupabaseUser((session === null || session === void 0 ? void 0 : session.user) || null),
};
},
signInAdapter: async (provider, options) => {
if (provider && provider !== "password") {
// OAuth provider
await supabase.auth.signInWithOAuth({
provider,
options,
});
}
else if (options && "email" in options && "password" in options) {
// Email/password sign in
await supabase.auth.signInWithPassword({
email: options.email,
password: options.password,
});
}
else {
throw new Error("Invalid sign in options for Supabase");
}
},
signOutAdapter: async () => {
await supabase.auth.signOut();
},
};
};
export { createSupabaseAdapter };
//# sourceMappingURL=supabase.js.map