feat: migrate auth from supabase to better auth (#596)
* feat: add README for @cio/db package and remove existingAccounts.json * load session, load profile and organization, add create profile hook * chore: cache session request The trick was passing all the cookies to the backend. Previously I was only passing the better-auth.session_token and not better-auth.session_data. Read about the difference here https://www.better-auth.com/docs/concepts/cookies#custom-cookies * feat: login, logout, onboarding, verify email, reset password. * feat: complete change email and email verification * feat: standardise how we make rpc calls and create org endpoints * fix ui errors * fix: handle potential undefined customerId and standardize avatar URL property * refactor: standardize custom domain handling and update telegram chat ID references * chore: add tailwind prefix to @cio/ui this fixed the media query issues because @cio/ui classes were overriding this dashboard tailwind build * chore: clean up org sidebar * chore: persist mode state * feat: implement order breadcrumbs * chore: upgrade to better auth 1.4 * chore: address common auth flow bugs and setup app for others to setup locally.
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { ALLOWED_CONTENT_TYPES, ALLOWED_DOCUMENT_TYPES } from '../constants';
|
||||
|
||||
import { z } from 'zod';
|
||||
|
||||
export const ZCourseClone = z.object({
|
||||
id: z.string().min(1),
|
||||
title: z.string().min(1),
|
||||
description: z.string().optional(),
|
||||
slug: z.string().min(1),
|
||||
organizationId: z.string().min(1)
|
||||
});
|
||||
export type TCourseClone = z.infer<typeof ZCourseClone>;
|
||||
|
||||
export const ZCertificateDownload = z.object({
|
||||
theme: z.string().min(1),
|
||||
studentName: z.string().min(1),
|
||||
courseName: z.string().min(1),
|
||||
courseDescription: z.string().min(1),
|
||||
orgName: z.string().min(1),
|
||||
orgLogoUrl: z.string().url().optional(),
|
||||
facilitator: z.string().optional()
|
||||
});
|
||||
export type TCertificateDownload = z.infer<typeof ZCertificateDownload>;
|
||||
|
||||
export const ZCourseDownloadContent = z.object({
|
||||
courseTitle: z.string().min(1),
|
||||
orgName: z.string().min(1),
|
||||
orgTheme: z.string().min(1),
|
||||
lessons: z.array(
|
||||
z.object({
|
||||
lessonTitle: z.string().min(1),
|
||||
lessonNumber: z.string().min(1),
|
||||
lessonNote: z.string(),
|
||||
slideUrl: z.string().url().optional(),
|
||||
video: z.array(z.string().url()).optional()
|
||||
})
|
||||
)
|
||||
});
|
||||
export type TCourseDownloadContent = z.infer<typeof ZCourseDownloadContent>;
|
||||
|
||||
export const ZLessonDownloadContent = z.object({
|
||||
title: z.string().min(1),
|
||||
number: z.string().min(1),
|
||||
orgName: z.string().min(1),
|
||||
note: z.string(),
|
||||
slideUrl: z.string().url().optional(),
|
||||
video: z.array(z.string().url()).optional(),
|
||||
courseTitle: z.string().min(1)
|
||||
});
|
||||
export type TLessonDownloadContent = z.infer<typeof ZLessonDownloadContent>;
|
||||
|
||||
export const ZCoursePresignUrlUpload = z.object({
|
||||
fileName: z.string().min(1),
|
||||
fileType: z.enum(ALLOWED_CONTENT_TYPES)
|
||||
});
|
||||
export type TCoursePresignUrlUpload = z.infer<typeof ZCoursePresignUrlUpload>;
|
||||
|
||||
export const ZCourseDocumentPresignUrlUpload = z.object({
|
||||
fileName: z.string().min(1),
|
||||
fileType: z.enum(ALLOWED_DOCUMENT_TYPES)
|
||||
});
|
||||
export type TCourseDocumentPresignUrlUpload = z.infer<typeof ZCourseDocumentPresignUrlUpload>;
|
||||
|
||||
export const ZCourseDownloadPresignedUrl = z.object({
|
||||
keys: z.array(z.string().min(1)).min(1)
|
||||
});
|
||||
export type TCourseDownloadPresignedUrl = z.infer<typeof ZCourseDownloadPresignedUrl>;
|
||||
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Course Validation Module
|
||||
*
|
||||
* Exports all course-related validation schemas and types.
|
||||
* Use these schemas for validating course operations across API and frontend.
|
||||
*/
|
||||
|
||||
export * from './course';
|
||||
Reference in New Issue
Block a user