feat: add complex user invitation and management features
- Implemented complex member and invitation schemas using Zod for validation. - Created new API endpoints for inviting, accepting, revoking, and canceling complex user invitations. - Developed handlers for managing complex users, including listing, inviting, revoking, and canceling invitations. - Added frontend components for displaying and managing complex users and invitations. - Introduced session storage management for pending invitations. - Integrated Gravatar for user avatars based on email. - Created database migration for complex invitations table.
This commit is contained in:
@@ -13,6 +13,7 @@ import { Route as SelectComplexRouteImport } from './routes/select-complex'
|
||||
import { Route as ResetPasswordRouteImport } from './routes/reset-password'
|
||||
import { Route as OnboardRouteImport } from './routes/onboard'
|
||||
import { Route as LoginRouteImport } from './routes/login'
|
||||
import { Route as InviteRouteImport } from './routes/invite'
|
||||
import { Route as AuthCallbackRouteImport } from './routes/auth-callback'
|
||||
import { Route as AppRouteRouteImport } from './routes/_app/route'
|
||||
import { Route as OnboardIndexRouteImport } from './routes/onboard/index'
|
||||
@@ -49,6 +50,11 @@ const LoginRoute = LoginRouteImport.update({
|
||||
path: '/login',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const InviteRoute = InviteRouteImport.update({
|
||||
id: '/invite',
|
||||
path: '/invite',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const AuthCallbackRoute = AuthCallbackRouteImport.update({
|
||||
id: '/auth-callback',
|
||||
path: '/auth-callback',
|
||||
@@ -128,6 +134,7 @@ const AppAuthenticatedComplexSlugEditRoute =
|
||||
export interface FileRoutesByFullPath {
|
||||
'/': typeof AppAuthenticatedIndexRoute
|
||||
'/auth-callback': typeof AuthCallbackRoute
|
||||
'/invite': typeof InviteRoute
|
||||
'/login': typeof LoginRoute
|
||||
'/onboard': typeof OnboardRouteWithChildren
|
||||
'/reset-password': typeof ResetPasswordRoute
|
||||
@@ -147,6 +154,7 @@ export interface FileRoutesByFullPath {
|
||||
export interface FileRoutesByTo {
|
||||
'/': typeof AppAuthenticatedIndexRoute
|
||||
'/auth-callback': typeof AuthCallbackRoute
|
||||
'/invite': typeof InviteRoute
|
||||
'/login': typeof LoginRoute
|
||||
'/reset-password': typeof ResetPasswordRoute
|
||||
'/select-complex': typeof SelectComplexRoute
|
||||
@@ -165,6 +173,7 @@ export interface FileRoutesById {
|
||||
__root__: typeof rootRouteImport
|
||||
'/_app': typeof AppRouteRouteWithChildren
|
||||
'/auth-callback': typeof AuthCallbackRoute
|
||||
'/invite': typeof InviteRoute
|
||||
'/login': typeof LoginRoute
|
||||
'/onboard': typeof OnboardRouteWithChildren
|
||||
'/reset-password': typeof ResetPasswordRoute
|
||||
@@ -188,6 +197,7 @@ export interface FileRouteTypes {
|
||||
fullPaths:
|
||||
| '/'
|
||||
| '/auth-callback'
|
||||
| '/invite'
|
||||
| '/login'
|
||||
| '/onboard'
|
||||
| '/reset-password'
|
||||
@@ -207,6 +217,7 @@ export interface FileRouteTypes {
|
||||
to:
|
||||
| '/'
|
||||
| '/auth-callback'
|
||||
| '/invite'
|
||||
| '/login'
|
||||
| '/reset-password'
|
||||
| '/select-complex'
|
||||
@@ -224,6 +235,7 @@ export interface FileRouteTypes {
|
||||
| '__root__'
|
||||
| '/_app'
|
||||
| '/auth-callback'
|
||||
| '/invite'
|
||||
| '/login'
|
||||
| '/onboard'
|
||||
| '/reset-password'
|
||||
@@ -246,6 +258,7 @@ export interface FileRouteTypes {
|
||||
export interface RootRouteChildren {
|
||||
AppRouteRoute: typeof AppRouteRouteWithChildren
|
||||
AuthCallbackRoute: typeof AuthCallbackRoute
|
||||
InviteRoute: typeof InviteRoute
|
||||
LoginRoute: typeof LoginRoute
|
||||
OnboardRoute: typeof OnboardRouteWithChildren
|
||||
ResetPasswordRoute: typeof ResetPasswordRoute
|
||||
@@ -283,6 +296,13 @@ declare module '@tanstack/react-router' {
|
||||
preLoaderRoute: typeof LoginRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/invite': {
|
||||
id: '/invite'
|
||||
path: '/invite'
|
||||
fullPath: '/invite'
|
||||
preLoaderRoute: typeof InviteRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/auth-callback': {
|
||||
id: '/auth-callback'
|
||||
path: '/auth-callback'
|
||||
@@ -458,6 +478,7 @@ const ComplexSlugBookingRouteWithChildren =
|
||||
const rootRouteChildren: RootRouteChildren = {
|
||||
AppRouteRoute: AppRouteRouteWithChildren,
|
||||
AuthCallbackRoute: AuthCallbackRoute,
|
||||
InviteRoute: InviteRoute,
|
||||
LoginRoute: LoginRoute,
|
||||
OnboardRoute: OnboardRouteWithChildren,
|
||||
ResetPasswordRoute: ResetPasswordRoute,
|
||||
|
||||
Reference in New Issue
Block a user