Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions apps/docs/content/guides/auth/passwords.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -960,11 +960,11 @@ Consider configuring a custom SMTP server for production.

See the [Custom SMTP guide](/docs/guides/auth/auth-smtp) for instructions.

#### Local development with Inbucket
#### Local development with Mailpit

You can test email flows on your local machine. The Supabase CLI automatically captures emails sent locally by using [Inbucket](https://github.com/inbucket/inbucket).
You can test email flows on your local machine. The Supabase CLI automatically captures emails sent locally by using [Mailpit](https://github.com/axllent/mailpit).

In your terminal, run `supabase status` to get the Inbucket URL. Go to this URL in your browser, and follow the instructions to find your emails.
In your terminal, run `supabase status` to get the Mailpit URL. Go to this URL in your browser, and follow the instructions to find your emails.

## With phone

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ Started supabase local development setup.
API URL: http://localhost:54321
DB URL: postgresql://postgres:postgres@localhost:54322/postgres
Studio URL: http://localhost:54323
Inbucket URL: http://localhost:54324
Mailpit URL: http://localhost:54324
anon key: eyJh......
service_role key: eyJh......

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Edge Functions are powered by Deno, which provides a [native set of testing tool

## Testing Auth emails

The Supabase CLI uses [Inbucket](https://github.com/inbucket/inbucket) to capture emails sent from your local machine. This is useful for testing emails sent from Supabase Auth.
The Supabase CLI uses [Mailpit](https://github.com/axllent/mailpit) to capture emails sent from your local machine. This is useful for testing emails sent from Supabase Auth.

### Accessing Inbucket
### Accessing Mailpit

By default, Inbucket is available at [localhost:54324](http://localhost:54324) when you run `supabase start`. Open this URL in your browser to view the emails.
By default, Mailpit is available at [localhost:54324](http://localhost:54324) when you run `supabase start`. Open this URL in your browser to view the emails.

### Going into production

Expand Down
7 changes: 4 additions & 3 deletions apps/docs/content/guides/platform/access-control.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -269,11 +269,12 @@ The table below shows the actions each role can take on the resources belonging
| | Revoke | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> | <IconX size={14} /> |
| | List | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> |
| <a href="#branching-permissions" id="branching-permissions">**Branching**</a> | | | | | |
| Enable branching | - | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> | <IconX size={14} /> |
| Disable branching | - | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> | <IconX size={14} /> |
| Production Branch | Read | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> |
| | Write | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> |
| Development Branches | List | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> |
| | Create | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> |
| | Update | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> |
| | Delete | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconX size={14} /> |
| | List | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> | <IconCheck size={14} color="#3FCF8E" /> |

[^1]: Available on the Team and Enterprise Plans.
[^2]: Sending anonymous data to OpenAI is opt in and can improve Studio AI Assistant's responses.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export const MemberRow = ({ member }: MemberRowProps) => {
/>
<div className="flex item-center gap-x-2">
<p className="text-foreground-light truncate">{member.primary_email}</p>
{member.primary_email === profile?.primary_email && <Badge color="scale">You</Badge>}
{member.gotrue_id === profile?.gotrue_id && <Badge color="scale">You</Badge>}
</div>

{(member.metadata as any)?.origin && (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,13 @@ const MembersView = ({ searchString }: MembersViewProps) => {

const [[user], otherMembers] = partition(
filteredMembers,
(m) => m.primary_email === profile?.primary_email
(m) => m.gotrue_id === profile?.gotrue_id
)
const sortedMembers = otherMembers.sort((a, b) =>
(a.primary_email ?? '').localeCompare(b.primary_email ?? '')
)

const userMember = members.find((m) => m.primary_email === profile?.primary_email)
const userMember = members.find((m) => m.gotrue_id === profile?.gotrue_id)
const orgScopedRoleIds = (roles?.org_scoped_roles ?? []).map((r) => r.id)
const isOrgScopedRole = orgScopedRoleIds.includes(userMember?.role_ids?.[0] ?? -1)

Expand Down
2 changes: 1 addition & 1 deletion apps/studio/data/api-keys/api-key-create-mutation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export async function createAPIKey(payload: APIKeyCreateVariables) {
? {
// secret_jwt_template: payload?.secret_jwt_template || null,
secret_jwt_template: {
role: 'service_role', // @mildtomato (Jonny) this should be default in API for type secret
role: 'service_role',
},
}
: name),
Expand Down
2 changes: 1 addition & 1 deletion apps/studio/data/api-keys/keys.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export const apiKeysKeys = {
list: (projectRef?: string, reveal?: boolean) =>
['projects', projectRef, 'api-keys', reveal] as const,
['projects', projectRef, 'api-keys', reveal].filter(Boolean),
single: (projectRef?: string, id?: string) => ['projects', projectRef, 'api-keys', id] as const,
status: (projectRef?: string) => ['projects', projectRef, 'api-keys', 'legacy'] as const,
}
3 changes: 2 additions & 1 deletion apps/studio/state/ai-assistant-state.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type { Message as MessageType } from 'ai/react'
import { DBSchema, IDBPDatabase, openDB } from 'idb'
import { debounce } from 'lodash'
import { createContext, PropsWithChildren, useContext, useEffect, useState } from 'react'
import { v4 as uuidv4 } from 'uuid'
import { proxy, snapshot, subscribe, useSnapshot } from 'valtio'

import { LOCAL_STORAGE_KEYS } from 'common'
Expand Down Expand Up @@ -234,7 +235,7 @@ export const createAiAssistantState = (): AiAssistantState => {
Pick<AiAssistantData, 'open' | 'initialInput' | 'sqlSnippets' | 'suggestions' | 'tables'>
>
) => {
const chatId = crypto.randomUUID()
const chatId = uuidv4()
const newChat: ChatSession = {
id: chatId,
name: options?.name ?? 'Untitled',
Expand Down
2 changes: 1 addition & 1 deletion apps/www/data/features.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ Supabase's Email Login feature enables secure email-based authentication for you
- Secure authentication: Implement industry-standard security practices.
- Customizable workflows: Tailor the signup and login processes to your needs.
- Seamless integration: Works with Supabase's other auth providers and features.
- Local development support: Test email flows using built-in tools like Inbucket.
- Local development support: Test email flows using built-in tools like Mailpit.

## Email login is valuable for:
- SaaS applications requiring user accounts
Expand Down
1 change: 1 addition & 0 deletions supa-mdx-lint/Rule001HeadingCase.toml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ may_uppercase = [
"Llamafile",
"Logs Explorer",
"Magic Link",
"Mailpit",
"Management API",
"Mixpeek",
"Mixpeek Embed",
Expand Down
1 change: 1 addition & 0 deletions supa-mdx-lint/Rule003Spelling.toml
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ allow_list = [
"Logflare",
"Lua",
"Mailgun",
"Mailpit",
"Mailtrap",
"Mansueli",
"Metabase",
Expand Down
Loading