nuxt-supabase-team-auth
Version:
Drop-in Nuxt 3 module for team-based authentication with Supabase
381 lines (372 loc) • 10.9 kB
text/typescript
export type Json =
| string
| number
| boolean
| null
| { [key: string]: Json | undefined }
| Json[]
export type Database = {
graphql_public: {
Tables: {
[_ in never]: never
}
Views: {
[_ in never]: never
}
Functions: {
graphql: {
Args: {
operationName?: string
query?: string
variables?: Json
extensions?: Json
}
Returns: Json
}
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
}
public: {
Tables: {
impersonation_sessions: {
Row: {
admin_user_id: string
created_at: string
ended_at: string | null
expires_at: string
id: string
reason: string
started_at: string
target_user_id: string
updated_at: string
}
Insert: {
admin_user_id: string
created_at?: string
ended_at?: string | null
expires_at?: string
id?: string
reason: string
started_at?: string
target_user_id: string
updated_at?: string
}
Update: {
admin_user_id?: string
created_at?: string
ended_at?: string | null
expires_at?: string
id?: string
reason?: string
started_at?: string
target_user_id?: string
updated_at?: string
}
Relationships: []
}
profiles: {
Row: {
avatar_url: string | null
bio: string | null
created_at: string
email: string | null
email_notifications: boolean | null
full_name: string | null
id: string
language: string | null
marketing_emails: boolean | null
phone: string | null
timezone: string | null
updated_at: string
}
Insert: {
avatar_url?: string | null
bio?: string | null
created_at?: string
email?: string | null
email_notifications?: boolean | null
full_name?: string | null
id: string
language?: string | null
marketing_emails?: boolean | null
phone?: string | null
timezone?: string | null
updated_at?: string
}
Update: {
avatar_url?: string | null
bio?: string | null
created_at?: string
email?: string | null
email_notifications?: boolean | null
full_name?: string | null
id?: string
language?: string | null
marketing_emails?: boolean | null
phone?: string | null
timezone?: string | null
updated_at?: string
}
Relationships: []
}
team_members: {
Row: {
joined_at: string
role: Database['public']['Enums']['team_role']
team_id: string
user_id: string
}
Insert: {
joined_at?: string
role?: Database['public']['Enums']['team_role']
team_id: string
user_id: string
}
Update: {
joined_at?: string
role?: Database['public']['Enums']['team_role']
team_id?: string
user_id?: string
}
Relationships: [
{
foreignKeyName: 'fk_team_members_profiles'
columns: ['user_id']
isOneToOne: false
referencedRelation: 'profiles'
referencedColumns: ['id']
},
{
foreignKeyName: 'team_members_team_id_fkey'
columns: ['team_id']
isOneToOne: false
referencedRelation: 'teams'
referencedColumns: ['id']
},
]
}
teams: {
Row: {
company_address_line1: string | null
company_address_line2: string | null
company_city: string | null
company_country: string | null
company_name: string | null
company_postal_code: string | null
company_state: string | null
company_vat_number: string | null
created_at: string
id: string
name: string
vat_number: string | null
}
Insert: {
company_address_line1?: string | null
company_address_line2?: string | null
company_city?: string | null
company_country?: string | null
company_name?: string | null
company_postal_code?: string | null
company_state?: string | null
company_vat_number?: string | null
created_at?: string
id?: string
name: string
vat_number?: string | null
}
Update: {
company_address_line1?: string | null
company_address_line2?: string | null
company_city?: string | null
company_country?: string | null
company_name?: string | null
company_postal_code?: string | null
company_state?: string | null
company_vat_number?: string | null
created_at?: string
id?: string
name?: string
vat_number?: string | null
}
Relationships: []
}
}
Views: {
[_ in never]: never
}
Functions: {
cleanup_all_test_data: {
Args: Record<PropertyKey, never>
Returns: {
users_deleted: number
teams_deleted: number
}[]
}
cleanup_test_team: {
Args: { team_id_param: string }
Returns: undefined
}
debug_user_context: {
Args: Record<PropertyKey, never>
Returns: {
auth_uid: string
auth_role: string
is_super_admin_result: boolean
}[]
}
get_team_member_ids: {
Args: { team_uuid: string }
Returns: string[]
}
get_team_members_with_profiles: {
Args: { team_id_param: string }
Returns: {
user_id: string
role: Database['public']['Enums']['team_role']
joined_at: string
full_name: string
email: string
}[]
}
get_test_user_ids: {
Args: Record<PropertyKey, never>
Returns: {
user_id: string
email: string
}[]
}
get_user_team_ids: {
Args: { user_uuid?: string }
Returns: string[]
}
is_super_admin: {
Args: Record<PropertyKey, never>
Returns: boolean
}
user_team_role: {
Args: { team_id: string }
Returns: Database['public']['Enums']['team_role']
}
}
Enums: {
team_role: 'owner' | 'admin' | 'member' | 'super_admin'
}
CompositeTypes: {
[_ in never]: never
}
}
}
type DefaultSchema = Database[Extract<keyof Database, 'public'>]
export type Tables<
DefaultSchemaTableNameOrOptions extends
| keyof (DefaultSchema['Tables'] & DefaultSchema['Views'])
| { schema: keyof Database },
TableName extends DefaultSchemaTableNameOrOptions extends {
schema: keyof Database
}
? keyof (Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
Database[DefaultSchemaTableNameOrOptions['schema']]['Views'])
: never = never,
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
? (Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'] &
Database[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends {
Row: infer R
}
? R
: never
: DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema['Tables'] &
DefaultSchema['Views'])
? (DefaultSchema['Tables'] &
DefaultSchema['Views'])[DefaultSchemaTableNameOrOptions] extends {
Row: infer R
}
? R
: never
: never
export type TablesInsert<
DefaultSchemaTableNameOrOptions extends
| keyof DefaultSchema['Tables']
| { schema: keyof Database },
TableName extends DefaultSchemaTableNameOrOptions extends {
schema: keyof Database
}
? keyof Database[DefaultSchemaTableNameOrOptions['schema']]['Tables']
: never = never,
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
? Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
Insert: infer I
}
? I
: never
: DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables']
? DefaultSchema['Tables'][DefaultSchemaTableNameOrOptions] extends {
Insert: infer I
}
? I
: never
: never
export type TablesUpdate<
DefaultSchemaTableNameOrOptions extends
| keyof DefaultSchema['Tables']
| { schema: keyof Database },
TableName extends DefaultSchemaTableNameOrOptions extends {
schema: keyof Database
}
? keyof Database[DefaultSchemaTableNameOrOptions['schema']]['Tables']
: never = never,
> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
? Database[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends {
Update: infer U
}
? U
: never
: DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables']
? DefaultSchema['Tables'][DefaultSchemaTableNameOrOptions] extends {
Update: infer U
}
? U
: never
: never
export type Enums<
DefaultSchemaEnumNameOrOptions extends
| keyof DefaultSchema['Enums']
| { schema: keyof Database },
EnumName extends DefaultSchemaEnumNameOrOptions extends {
schema: keyof Database
}
? keyof Database[DefaultSchemaEnumNameOrOptions['schema']]['Enums']
: never = never,
> = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database }
? Database[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName]
: DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums']
? DefaultSchema['Enums'][DefaultSchemaEnumNameOrOptions]
: never
export type CompositeTypes<
PublicCompositeTypeNameOrOptions extends
| keyof DefaultSchema['CompositeTypes']
| { schema: keyof Database },
CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
schema: keyof Database
}
? keyof Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes']
: never = never,
> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
? Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName]
: PublicCompositeTypeNameOrOptions extends keyof DefaultSchema['CompositeTypes']
? DefaultSchema['CompositeTypes'][PublicCompositeTypeNameOrOptions]
: never
export const Constants = {
graphql_public: {
Enums: {},
},
public: {
Enums: {
team_role: ['owner', 'admin', 'member', 'super_admin'],
},
},
} as const