* feat: new components, deploy storybook * refactor: simplify component field definitions and enhance button loading state - Removed unnecessary type imports and simplified the FIELDS array definitions across multiple components in Storybook. - Updated button component to use a loading state instead of isLoading, improving clarity and consistency in props. - Adjusted button stories to reflect the new loading prop and enhanced the button's loading visual feedback. - Minor CSS adjustments for better layout and styling consistency. * chore: add field, card, password components * feat: improve page component & update AuthUI path * chore: update bits-ui to version 2.14.4 and all org related UI's - Updated bits-ui dependency in pnpm-lock.yaml and package.json to version 2.14.4. - Refactored imports for RoleBasedSecurity and UpgradeBanner components to use the new ui feature directory. - Removed unused Course components and related files to clean up the codebase. - Enhanced various components to improve consistency and maintainability. * chore: move all setting buttons to the top and update auth ui styles * chore: remove svelte-loading-spinners and replace with @cio/ui/base/spinner - Removed all instances of svelte-loading-spinners from the project. - Updated components to use the new Spinner from @cio/ui/base/spinner. - Cleaned up pnpm-lock.yaml and package.json to reflect the removal of svelte-loading-spinners. - Added new CSS animations for rocket launch effects in app.css. - Enhanced email change flow with updated verification messages in translations. * chore: remove supabase file upload from dashboard and move to r2 * chore: update organization API and UI components - Added new API methods for organization plan operations and team management. - Introduced middleware for API key authentication and organization admin checks. - Refactored organization-related components to utilize the new API structure. - Updated various UI components to improve consistency and maintainability. - Enhanced error handling and validation for organization-related actions. - Removed deprecated services and streamlined the codebase.
78 lines
1.9 KiB
TypeScript
78 lines
1.9 KiB
TypeScript
import * as CONSTANTS from './constants';
|
|
import * as schema from '@db/schema';
|
|
|
|
import { admin, anonymous } from 'better-auth/plugins';
|
|
import { sendChangeEmailConfirmation, sendVerificationEmail } from './auth/email-verification';
|
|
|
|
import { betterAuth } from 'better-auth/minimal';
|
|
import { createProfileHook } from './auth/hooks/create-profile';
|
|
import { db } from '@db/drizzle';
|
|
import { drizzleAdapter } from 'better-auth/adapters/drizzle';
|
|
import { config as emailAndPassword } from './auth/email-password';
|
|
import { syncUserWithProfile } from './auth/hooks/sync-user';
|
|
|
|
export const auth = betterAuth({
|
|
baseURL: CONSTANTS.BASE_URL,
|
|
database: drizzleAdapter(db, {
|
|
provider: 'pg',
|
|
schema
|
|
// debugLogs: true
|
|
}),
|
|
emailAndPassword: emailAndPassword,
|
|
user: {
|
|
changeEmail: {
|
|
enabled: true,
|
|
sendChangeEmailConfirmation
|
|
}
|
|
},
|
|
emailVerification: {
|
|
enabled: true,
|
|
sendVerificationEmail
|
|
},
|
|
socialProviders: {
|
|
google: {
|
|
clientId: process.env.GOOGLE_CLIENT_ID!,
|
|
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
|
|
accessType: 'offline',
|
|
prompt: 'select_account consent'
|
|
}
|
|
},
|
|
trustedOrigins: CONSTANTS.TRUSTED_ORIGINS,
|
|
advanced: {
|
|
cookiePrefix: 'classroomio',
|
|
crossSubDomainCookies: {
|
|
enabled: true
|
|
},
|
|
database: {
|
|
generateId: false
|
|
}
|
|
},
|
|
account: {
|
|
storeAccountCookie: true
|
|
},
|
|
session: {
|
|
expiresIn: 60 * 60 * 24 * 7, // 7 days
|
|
updateAge: 60 * 60 * 24, // 1 day (every 1 day the session expiration is updated)
|
|
cookieCache: {
|
|
enabled: true,
|
|
maxAge: 60 * 60 // 1 hour
|
|
}
|
|
},
|
|
databaseHooks: {
|
|
user: {
|
|
create: {
|
|
after: async (user) => {
|
|
await createProfileHook(user);
|
|
}
|
|
},
|
|
update: {
|
|
after: async (user) => {
|
|
console.log('update user', user);
|
|
await syncUserWithProfile(user);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
plugins: [admin(), anonymous()]
|
|
});
|