From fae2932ab1f913bdbfbcdffe7f57b7e4b5bb32d8 Mon Sep 17 00:00:00 2001 From: Dkvsb <41582680+Dkvsb@users.noreply.github.com> Date: Tue, 7 Jun 2022 19:15:57 +0200 Subject: [PATCH 01/97] feat:remove unused imports --- apps/www/pages/company.tsx | 6 ------ apps/www/pages/database/Database.tsx | 2 +- apps/www/pages/index.tsx | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/apps/www/pages/company.tsx b/apps/www/pages/company.tsx index 7563952bb65..c3523d7c4d5 100644 --- a/apps/www/pages/company.tsx +++ b/apps/www/pages/company.tsx @@ -1,6 +1,5 @@ import { useRouter } from 'next/router' -import Container from 'components/Container' import Layout from '~/components/Layouts/Default' import SectionHeader from 'components/UI/SectionHeader' @@ -12,17 +11,12 @@ import PressData from 'data/Press' import CommunityData from 'data/Community' import CompaniesData from 'data/Companies' import InvestorData from 'data/Investors' -import TeamData from 'data/Team' import Image from 'next/image' import { Button, Card, - IconChevronRight, - IconGitHub, - IconLinkedin, - IconTwitter, Space, } from '@supabase/ui' import { NextSeo } from 'next-seo' diff --git a/apps/www/pages/database/Database.tsx b/apps/www/pages/database/Database.tsx index 91880ee9280..49d27f747fd 100644 --- a/apps/www/pages/database/Database.tsx +++ b/apps/www/pages/database/Database.tsx @@ -1,4 +1,4 @@ -import { Badge, Button, IconArrowUpRight, IconShuffle, IconX, Space, Tabs } from '@supabase/ui' +import { Badge, Button, IconArrowUpRight, IconX, Tabs } from '@supabase/ui' // data import ApiExamplesData from 'data/products/database/api-examples' import ExtensionsExamplesData from 'data/products/database/extensions-examples' diff --git a/apps/www/pages/index.tsx b/apps/www/pages/index.tsx index 533271b89cf..b77b29eb4a7 100644 --- a/apps/www/pages/index.tsx +++ b/apps/www/pages/index.tsx @@ -8,7 +8,6 @@ import MadeForDevelopers from 'components/MadeForDevelopers/index' import AdminAccess from 'components/AdminAccess/index' import CaseStudies from 'components/CaseStudies/index' import CTABanner from 'components/CTABanner/index' -import SectionContainer from '~/components/Layouts/SectionContainer' import TwitterSocialSection from '~/components/TwitterSocialSection' // Import Swiper styles if swiper used on page From f65723616b50378ce1da02bbd26b4fd79f6fe445 Mon Sep 17 00:00:00 2001 From: Dkvsb <41582680+Dkvsb@users.noreply.github.com> Date: Wed, 8 Jun 2022 01:41:21 +0200 Subject: [PATCH 02/97] Fix format --- apps/www/pages/company.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/www/pages/company.tsx b/apps/www/pages/company.tsx index c3523d7c4d5..bc460c8fe6d 100644 --- a/apps/www/pages/company.tsx +++ b/apps/www/pages/company.tsx @@ -14,11 +14,7 @@ import InvestorData from 'data/Investors' import Image from 'next/image' -import { - Button, - Card, - Space, -} from '@supabase/ui' +import { Button, Card, Space } from '@supabase/ui' import { NextSeo } from 'next-seo' type Props = {} From 7a0278fae476f5356648969a44c709513099034f Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Thu, 16 Jun 2022 15:33:16 +0800 Subject: [PATCH 03/97] chore: moved images to youtube --- .../components/Carousels/ImageCarousel.tsx | 28 +++++++++---------- apps/www/data/home/admin-access.json | 4 ++- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/apps/www/components/Carousels/ImageCarousel.tsx b/apps/www/components/Carousels/ImageCarousel.tsx index dd8c9183843..c1730d4fe43 100644 --- a/apps/www/components/Carousels/ImageCarousel.tsx +++ b/apps/www/components/Carousels/ImageCarousel.tsx @@ -1,5 +1,5 @@ +import { Button, IconCornerRightUp, Tabs } from '@supabase/ui' import { useRouter } from 'next/router' -import { Tabs, Button, IconCornerRightUp, IconArrowUpRight } from '@supabase/ui' import { useState } from 'react' // Import Swiper React components @@ -8,19 +8,18 @@ import { Swiper, SwiperSlide } from 'swiper/react' // Import Swiper styles import 'swiper/swiper.min.css' -import ImageCarouselStyles from './ImageCarousel.module.css' -import Link from 'next/link' import Image from 'next/image' import TextLink from '../TextLink' +import ImageCarouselStyles from './ImageCarousel.module.css' interface Content { title: string label?: string img_url?: string - video_url?: string text?: string cta?: string url?: string + youtube_id?: string } interface ImageCarouselProps { @@ -116,16 +115,17 @@ function ImageCarousel(props: ImageCarouselProps) { height="960" /> )} - {content.video_url && ( - + {content.youtube_id && ( +
+ - ## Overview -Since the first commit of Realtime server back in [September 2019](https://github.com/supabase/realtime/commit/175f649784147af80acfc9ff5be9d160285c76ea), -we've worked hard to improve its usability and scalability. +Since the first commit of Realtime server back in [September 2019](https://github.com/supabase/realtime/commit/175f649784147af80acfc9ff5be9d160285c76ea), +we've worked hard to improve its usability and scalability. -Until now, Realtime did not adhere to RLS policies and instead broadcast all database changes to all clients. +Until now, Realtime did not adhere to RLS policies and instead broadcast all database changes to all clients. The unsafe nature of this behavior is the reason why Realtime has been an opt-in feature, and a key reason why we are still in Beta. -As more developers rely on Realtime to receive and send database changes in their apps and services, +As more developers rely on Realtime to receive and send database changes in their apps and services, security has become a primary concern for us and others in the community who wish to build secure systems with Realtime. -Supabase projects have supported Row Level Security (RLS) for API authorization since our [Auth launch](https://supabase.io/blog/2020/08/05/supabase-auth). +Supabase projects have supported Row Level Security (RLS) for API authorization since our [Auth launch](https://supabase.io/blog/supabase-auth). In that time, it has quickly become the recommended way to implement authorization. As we were evaluating possible solutions to improve Realtime security, we looked to our Auth implementation as inspiration for a cohesive security system. @@ -54,14 +53,14 @@ Before diving deeper into our Realtime RLS implementation, let's briefly cover h ## Row Level Security Primer -When you need to control access to individual rows of data, PostgreSQL has you covered with [Row Level Security (RLS) policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html). +When you need to control access to individual rows of data, PostgreSQL has you covered with [Row Level Security (RLS) policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html). An RLS policy is a snippet of SQL filtering which users have the authority to create/read/update/delete rows in a table. For example, the following policy would allow users to select their own rows in a todos table: ```sql hideCopy -create policy todo_select_policy - on todos for select +create policy todo_select_policy + on todos for select using ( auth.uid() = user_id ); ``` @@ -85,14 +84,14 @@ Our Realtime server receives and decodes binary changes from PostgreSQL logical The challenge, when applying row level security to the replication stream is that the visibility of a row may be different for each user subscribed to a database table. -We recognized that to fully secure Realtime in accordance with row level security, a row's visibility must be checked separately for each user on every change. +We recognized that to fully secure Realtime in accordance with row level security, a row's visibility must be checked separately for each user on every change. However, this quickly becomes a performance bottleneck when the number of changes, or number of subscribers, is large. Since we can't control the number of subscribers or the number of changed records, we instead focused on making the security check for each user on every change as fast as possible. ### Implementation Overview -With these challenges in mind, we upstreamed the security responsibility to the database. Write Ahead Log Realtime Unified Security (WALRUS) exposes a PostgreSQL +With these challenges in mind, we upstreamed the security responsibility to the database. Write Ahead Log Realtime Unified Security (WALRUS) exposes a PostgreSQL function that Realtime server invokes with database changes. ### WALRUS Implementation @@ -100,11 +99,11 @@ function that Realtime server invokes with database changes. [WALRUS](https://github.com/supabase/walrus) inspects each record in the replication change to: - Identify the source table (e.g. `public.notes`). -- Identify the change's action (INSERT/UPDATE/DELETE/TRUNCATE*). +- Identify the change's action (INSERT/UPDATE/DELETE/TRUNCATE\*). - Query the `subscription` table to determine the connected users who are actively subscribed to the source table. The `subscription` table is kept up to date by the Realtime server and tracks all connected users and the tables they are currently subscribed to. - For each subscriber: - - Assume the identity of the subscriber. - - Query the source table to see if the record is visible to that subscriber. + - Assume the identity of the subscriber. + - Query the source table to see if the record is visible to that subscriber. - Report the list of subscribers who are authorized to view the record back to Realtime server. *Realtime server does not broadcast TRUNCATE changes @@ -119,7 +118,7 @@ For example: select exists(select 1 from some_table where id = 806); ``` -When more than one subscriber exists, the query is wrapped in a [prepared statement](https://www.postgresql.org/docs/13/sql-prepare.html) to remove the cost of the PostgreSQL +When more than one subscriber exists, the query is wrapped in a [prepared statement](https://www.postgresql.org/docs/13/sql-prepare.html) to remove the cost of the PostgreSQL query planner on subsequent calls. The query planner time is frequently 2-3x execution time for simple queries, so this immediately multiplies throughput in the most common cases! ```sql hideCopy @@ -129,21 +128,21 @@ query planner on subsequent calls. The query planner time is frequently 2-3x exe **Colocation** -Colocating the security engine with subscriber data inside PostgreSQL allows us to avoid significant overhead when applying RLS policies. -Namely, network round-trip latency and I/O bottlenecks are removed while connection overhead is reduced relative to testing each record's visibility by polling the database from a separate process. +Colocating the security engine with subscriber data inside PostgreSQL allows us to avoid significant overhead when applying RLS policies. +Namely, network round-trip latency and I/O bottlenecks are removed while connection overhead is reduced relative to testing each record's visibility by polling the database from a separate process. Instead, the SQL function only consumes a single connection and performs no network I/O. ### Performance -The throughput performance of the database server is best measured in terms of record processing time. As the number of subscribers to a table grows, the time required to process each record, +The throughput performance of the database server is best measured in terms of record processing time. As the number of subscribers to a table grows, the time required to process each record, and the resultant processing time also grows. ![supabase-realtime-processing-per-subscription](/images/blog/launch-week-three/realtime-row-level-security-in-postgresql/supabase-realtime-processing-per-subscription.png)
-| Subscribers | 1 | 5 | 10 | 25 | 50 | 100 | 250 | 500 | 1,000 | 2,000 | 5,000 | 10,000 | -|------------------------|------|------|------|------|------|------|------|------|-------|-------|-------|--------| +| Subscribers | 1 | 5 | 10 | 25 | 50 | 100 | 250 | 500 | 1,000 | 2,000 | 5,000 | 10,000 | +| -------------------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | | Processing Time (ms) | 11.2 | 12.5 | 14.2 | 16.7 | 18.8 | 24.5 | 27.8 | 29.1 | 64.7 | 75.5 | 158.4 | 303.8 |
@@ -162,7 +161,7 @@ The fastest security policy is one that doesn't exist :) If you do need row level security, make sure that your policies are fast. -Remember that your policy is executed *each* time a query touches the table that the policy is applied to. If your policy is slow, all access to that table will be slow. +Remember that your policy is executed _each_ time a query touches the table that the policy is applied to. If your policy is slow, all access to that table will be slow. Avoid joins within RLS policies when you can, and make sure all filter conditions use an index. Additionally, keep in mind that if you use joins within an RLS policy, any RLS policies on the tables you're joining to will also be executed in turn, adding to the overall overhead. @@ -175,17 +174,17 @@ Use single column primary keys with a fixed field size (integer, uuid, etc.) ove ## Next Steps -Realtime RLS is available today on all existing and new Supabase projects. To get started, upgrade your Supabase JavaScript client to version v1.23.0 +Realtime RLS is available today on all existing and new Supabase projects. To get started, upgrade your Supabase JavaScript client to version v1.23.0 and launch your new PostgreSQL database today: [database.new](https://database.new) ## More Postgres resources -- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/2022/07/18/seen-by-in-postgresql) -- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/2022/06/28/partial-postgresql-data-dumps-with-rls) -- [Postgres Views](https://supabase.com/blog/2020/11/18/postgresql-views) -- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/2022/03/08/audit) -- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/2021/02/27/cracking-postgres-interview) -- [What are PostgreSQL Templates?](https://supabase.com/blog/2020/07/09/postgresql-templates) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Postgres Auditing in 150 lines of SQL](https://supabase.com/blog/audit) +- [Cracking PostgreSQL Interview Questions](https://supabase.com/blog/cracking-postgres-interview) +- [What are PostgreSQL Templates?](https://supabase.com/blog/postgresql-templates) ## Credits diff --git a/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx b/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx index 3df2ccbfa70..30f5eda1b31 100644 --- a/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx +++ b/apps/www/_blog/2021-12-03-launch-week-three-friday-five-more-things.mdx @@ -46,11 +46,11 @@ Usually, negotiating a new SSL connection requires at least 3 round trips betwee ### HTTP/3 -HTTP/3 or HTTP over QUIC is the successor to HTTP/2. This protocol is based on UDP instead of TCP. HTTP/3 is faster than HTTP/2 (conditions apply), is more secure, future proof. +HTTP/3 or HTTP over QUIC is the successor to HTTP/2. This protocol is based on UDP instead of TCP. HTTP/3 is faster than HTTP/2 (conditions apply), is more secure, future proof. ### Brotli -Brotli is a new compression algorithm that performs better than gzip. All text based responses from Supabase (including the massive amount of Javascript required to render websites these days) are compressed with Brotli. +Brotli is a new compression algorithm that performs better than gzip. All text based responses from Supabase (including the massive amount of Javascript required to render websites these days) are compressed with Brotli. We can also ensure a higher degree of reliability of your Supabase APIs with a CDN by defending against Denial of Service Attacks and bots. @@ -58,13 +58,13 @@ We can also ensure a higher degree of reliability of your Supabase APIs with a C ## (Yet another) Supabase Functions update -It's been four months since our [last Functions update](https://supabase.com/blog/2021/07/30/supabase-functions-updates) and (as it's becoming a tradition at the end of Launch Week) we have another update for you. +It's been four months since our [last Functions update](https://supabase.com/blog/supabase-functions-updates) and (as it's becoming a tradition at the end of Launch Week) we have another update for you. -Unfortunately we're still not in a position to release anything. There are a few reasons for this - mainly it's because we've been hyper focused on a couple major milestones: +Unfortunately we're still not in a position to release anything. There are a few reasons for this - mainly it's because we've been hyper focused on a couple major milestones: -Since our last Functions update we've [raised our Series A,](https://supabase.com/blog/2021/10/28/supabase-series-a) [acquired a company](https://supabase.com/blog/2021/12/02/supabase-acquires-logflare), built [Realtime Row Level Security](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql), [open sourced the dashboard](https://supabase.com/blog/2021/11/30/supabase-studio), built a GraphQL extension for PostgreSQL, and added four Auth providers, all while growing the community, supporting open-source tools, and delivering a few other things that the community felt was important. +Since our last Functions update we've [raised our Series A,](https://supabase.com/blog/supabase-series-a) [acquired a company](https://supabase.com/blog/supabase-acquires-logflare), built [Realtime Row Level Security](https://supabase.com/blog/realtime-row-level-security-in-postgresql), [open sourced the dashboard](https://supabase.com/blog/supabase-studio), built a GraphQL extension for PostgreSQL, and added four Auth providers, all while growing the community, supporting open-source tools, and delivering a few other things that the community felt was important. -That being said, we *have* been working on Functions, iterating through different designs to figure out what's going to have the biggest impact for Supabase developers. So today we are going to open up our ideas and designs through our [RFC repo](https://github.com/supabase/rfcs) (request for comments). +That being said, we _have_ been working on Functions, iterating through different designs to figure out what's going to have the biggest impact for Supabase developers. So today we are going to open up our ideas and designs through our [RFC repo](https://github.com/supabase/rfcs) (request for comments). There are two important RFCs related to functions: @@ -91,14 +91,14 @@ You will learn how to build a subscription-based billing project from scratch, a While not everyone will be celebrating the holidays this December, we can all be united in celebrating open-source software, and to do so we're kicking off the "Holiday Hackdays" (loosely inspired by the [12 Pubs of Christmas](https://www.irelandbeforeyoudie.com/12-pubs-of-christmas-rules-tips-everything-you-need-for-a-great-night/) only a bit healthier). -Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 +Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 -[As always](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! +[As always](https://supabase.com/blog/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! -The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and Thor, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. +The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and Thor, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. -Find the full hackathon details and rules in the [blog post](https://supabase.com/blog/2021/12/03/supabase-holiday-hackdays-hackathon). +Find the full hackathon details and rules in the [blog post](https://supabase.com/blog/supabase-holiday-hackdays-hackathon). That's it, that's another Launch Week wrapped. See you at the next one, or in the meantime on Discord, and until then, happy hacking! -![devs.png](/images/blog/launch-week-three/five-more-things/devs.png) \ No newline at end of file +![devs.png](/images/blog/launch-week-three/five-more-things/devs.png) diff --git a/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx b/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx index fb8990ba27b..89d4339c0f7 100644 --- a/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx +++ b/apps/www/_blog/2021-12-03-supabase-holiday-hackdays-hackathon.mdx @@ -16,11 +16,11 @@ toc_depth: 3 While not everyone will be celebrating the holidays this December, we can all be united in celebrating open-source software, and to do so we're kicking off the "Holiday Hackdays" (loosely inspired by the [12 Pubs of Christmas](https://www.irelandbeforeyoudie.com/12-pubs-of-christmas-rules-tips-everything-you-need-for-a-great-night/), only a bit healthier). -Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/2021/12/01/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 +Starting today at 7am PT we'll be hacking together for the next 10 days until 23:59pm PT on Sunday December 12th. And because we've launched [row-level security for our Realtime API](https://supabase.com/blog/realtime-row-level-security-in-postgresql) earlier this week, we'd love for you to use it in your Hackathon project. May it be to build a [Santa Tracker](https://www.freecodecamp.org/news/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/) or that secure family chat app to bring all your relatives together for the festive season, be creative and most importantly have fun 🥳 -[As always](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! +[As always](https://supabase.com/blog/hacktoberfest-hackathon-winners-2021#the-prizes), we'll have some extremely limited edition swag to give away that can only be won by participating in the Hackathon! -The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and I, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. +The Supabase team will be participating as well, for example [Jon](https://twitter.com/_dijonmusters) and I, inspired by [Egghead's "Holiday Course Release Extravaganza"](https://egghead.io/20-days), will be building an Advent Calendar for all the [awesome community content](https://supabase.com/blog/community-day#new-tutorials-and-integration-guides) you've been creating. Get ready for a cool open-source project which will be using a lot of the hottest Supabase features! To make sure you don't miss this one, follow us on [Twitter](https://twitter.com/supabase) and subscribe to our [YouTube channel](https://www.youtube.com/supabase). We'll see you there. ## Details @@ -32,14 +32,21 @@ The Supabase team will be participating as well, for example [Jon](https://twitt - Judges Deliberate (Monday) - We'll be contacting and announcing the winners [on Twitter](https://twitter.com/supabase) throughout the week after. - + ### Prize categories There are multiple chances to win, there will be prizes for: - Most impressive usage of the Realtime API features -- Most fun / holiday themed project +- Most fun / holiday themed project There will be a winner and a runner-up prize for each category. @@ -81,10 +88,7 @@ We'll be contacting and announcing winners [on Twitter](https://twitter.com/supa @supabase hackathon! 🥳{' '} https://t.co/rm5HBuju73

- — Josh Cawthorne (@cawthornejosh){' '} - - August 10, 2021 - + — Josh Cawthorne (@cawthornejosh) August 10, 2021 {' '} ### Rules @@ -116,12 +120,12 @@ Join our Discord: [discord.gg/bnncdqgBSS](https://discord.gg/bnncdqgBSS) Here's a collection of resources that will help you get started building with Supabase: -- Need some inspiration? [See what folks built last time](/blog/2021/08/09/hackathon-winners)! +- Need some inspiration? [See what folks built last time](/blog/hackathon-winners)! - [Examples and Resources](/docs/guides/examples) - [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video] - [Flutter Quickstart Guide](/docs/guides/with-flutter) - [Nextjs Quickstart Guide](/docs/guides/with-nextjs) -- [Using Supabase inside Replit](/blog/2021/03/11/using-supabase-replit) +- [Using Supabase inside Replit](/blog/using-supabase-replit) - [Full Stack Development with Next.js and Supabase – The Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-full-stack-development-with-supabas/) - [Auth Deep Dive - Learn everything there is to know about Supabase Auth](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos] - [Send SMS notifications using Twilio](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) diff --git a/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx b/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx index 3815cede28a..708d30aeaf5 100644 --- a/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx +++ b/apps/www/_blog/2021-12-15-beta-november-2021-launch-week-recap.mdx @@ -19,7 +19,7 @@ Here's all the awesome stuff that got shipped during Launch Week... ## Supabase Studio -We [open sourced the Dashboard](/blog/2021/11/30/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute, +We [open sourced the Dashboard](/blog/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute, which is going to help us move even faster! Expect many more updates to the dashboard over the coming weeks and months! [Read the code for yourself.](https://github.com/supabase/supabase/tree/master/studio) ![Supabase Studio](/images/blog/2021-nov/studio.jpg) @@ -27,20 +27,20 @@ which is going to help us move even faster! Expect many more updates to the dash ## We acquired Logflare We were early Logflare users, and found it to be one of the most impressive products we'd ever used. So impressive in fact, that we wanted to offer it's capabilities to our entire user base. -You'll now find fully searchable Supabase API and database logs within the dashboard, and we're also in the process of open sourcing the codebase. [Read more about the acquisition](/blog/2021/12/02/supabase-acquires-logflare). +You'll now find fully searchable Supabase API and database logs within the dashboard, and we're also in the process of open sourcing the codebase. [Read more about the acquisition](/blog/supabase-acquires-logflare). ![We acquired Logflare](/images/blog/2021-nov/logflare.png) ## Realtime Row Level Security -[Security rules now work for Realtime](/blog/2021/12/01/realtime-row-level-security-in-postgresql). +[Security rules now work for Realtime](/blog/realtime-row-level-security-in-postgresql). All of your row level security policies now work with the realtime API, so you can limit streams and subscriptions on a per user basis (or any configuration you want!). ![Realtime Row Level Security](/images/blog/2021-nov/realtime.png) ## GraphQL is coming to Supabase -We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/2021/12/03/pg-graphql). +We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/pg-graphql). This means that each GraphQL request is resolved by a single SQL statement and hits the theoretical minimum achievable network IO overhead of any GraphQL to SQL resolver. ![GraphQL is coming to Supabase](/images/blog/2021-nov/graphql.png) @@ -48,7 +48,7 @@ This means that each GraphQL request is resolved by a single SQL statement and h ## Supabase now runs on PostgreSQL 14 One of the most exciting things to happen in databases this year was the release of PG 14. -Which is now the default database used on our hosted platform. Read more here about [why we're so excited about it](/blog/2021/11/28/whats-new-in-postgres-14). +Which is now the default database used on our hosted platform. Read more here about [why we're so excited about it](/blog/whats-new-in-postgres-14). ![Supabase now runs on PostgreSQL 14](/images/blog/2021-nov/pg14.png) @@ -56,7 +56,7 @@ Which is now the default database used on our hosted platform. Read more here ab PostgREST is the tool we use to introspect your schema and make your database available over a RESTful API. We also sponsor and help maintain this amazing open source project. Version 9.0 was just released and has also been rolled out to all new and existing Supabase projects on our hosted platform. -[Check out the blog post](/blog/2021/11/28/postgrest-9) by Steve Chavez, the maintainer of PostgREST. +[Check out the blog post](/blog/postgrest-9) by Steve Chavez, the maintainer of PostgREST. ![PostgREST 9.0 ](/images/blog/2021-nov/postgrest9.png) @@ -70,13 +70,13 @@ It's honestly mind blowing how quickly you can get products out the door with th ## New Storage CDN -Serving your files in no time - Get eye wateringly fast load times for your media files. [Read all about the benefits](/blog/2021/12/03/launch-week-three-friday-five-more-things#supabase-cdn). +Serving your files in no time - Get eye wateringly fast load times for your media files. [Read all about the benefits](/blog/launch-week-three-friday-five-more-things#supabase-cdn). ![New Storage CDN](/images/blog/2021-nov/too_damn_high.png) ## How we Launch -We "open sourced" our launch methodology - Learn about how we plan, execute, and retrospect launch weeks internally. [Read the post](/blog/2021/11/26/supabase-how-we-launch). +We "open sourced" our launch methodology - Learn about how we plan, execute, and retrospect launch weeks internally. [Read the post](/blog/supabase-how-we-launch). supabase monthly growth ![How we Launch](/images/blog/2021-nov/supabase-universe.jpg) @@ -85,10 +85,10 @@ supabase monthly growth ### Highlights -- Community Day [blog](/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) -- The SupaSquad has been busy [blog](/blog/2021/11/29/community-day#supasquad-updates) +- Community Day [blog](/blog/community-day#new-tutorials-and-integration-guides) +- The SupaSquad has been busy [blog](/blog/community-day#supasquad-updates) - 10 startups on what they're building with Supabase [video](https://www.youtube.com/watch?v=QAm1x7KaLq4&list=PL5S4mPUpp4OuzQN-a_FY3OZQuYo4NmXvb&t=3s) -- New official integration guides [blog](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides) +- New official integration guides [blog](https://supabase.com/blog/community-day#new-tutorials-and-integration-guides) - Add Supabase in Teta [video](https://www.youtube.com/watch?v=lt-Vebxk-Mk) - Auth flow with Remix and Supabase [video](https://www.youtube.com/watch?v=-KiH8feOHSc) - Discovering Supabase [video](https://www.youtube.com/watch?v=WToGeMIdoSY) diff --git a/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx b/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx index b770f4e4c8a..2f5af7e9a03 100644 --- a/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx +++ b/apps/www/_blog/2021-12-17-holiday-hackdays-winners-2021.mdx @@ -14,7 +14,7 @@ date: '2021-12-17' toc_depth: 2 --- -To cool down from [our latest launch week](/blog/2021/12/15/beta-november-2021-launch-week-recap) we (virtually) [sat down with y'all](https://youtu.be/TijBVcV4jXw) and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way! +To cool down from [our latest launch week](/blog/beta-november-2021-launch-week-recap) we (virtually) [sat down with y'all](https://youtu.be/TijBVcV4jXw) and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way! As always, it was challenging to pick the winners from all the great submissions! You can see all the amazing projects submitted on [madewithsupabase.com](https://www.madewithsupabase.com/holiday-hackdays). And now, without further ado, let's look at some of our favourites in more detail: @@ -88,9 +88,9 @@ This visually stunning website allows you to create a wishlist to share with you ### Runner Up -[card creator](https://github.com/maggie-j-liu/card-creator) - by [maggie-j-liu](https://github.com/maggie-j-liu), [Arash](https://github.com/arashnrim), [@eiilla11](https://twitter.com/eiilla11), and [@_pranavnt](https://twitter.com/_pranavnt) +[card creator](https://github.com/maggie-j-liu/card-creator) - by [maggie-j-liu](https://github.com/maggie-j-liu), [Arash](https://github.com/arashnrim), [@eiilla11](https://twitter.com/eiilla11), and [@\_pranavnt](https://twitter.com/_pranavnt) -This team of high school hackers just keeps knocking it out of the park again. In our [Hacktoberfest Hackathon](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#most-spookyfun) they already made it onto the podium. This time around they built this stunning greeting card platform that lets you send well wishes to your friends around the globe in no time. We love it! +This team of high school hackers just keeps knocking it out of the park again. In our [Hacktoberfest Hackathon](https://supabase.com/blog/hacktoberfest-hackathon-winners-2021#most-spookyfun) they already made it onto the podium. This time around they built this stunning greeting card platform that lets you send well wishes to your friends around the globe in no time. We love it! [![card creator](https://madewithsupabase.com/api/resize?link=Card%20Creator-vs9hc-Screen%20Shot%202021-12-12%20at%2011.12.23%20PM.png&w=1000)](https://youtu.be/Yx4N2bONA44) diff --git a/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx b/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx index e7a6a33fc6c..c8255439139 100644 --- a/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx +++ b/apps/www/_blog/2022-01-20-supabase-beta-december-2021.mdx @@ -19,9 +19,9 @@ Here's a bunch of stuff we shipped throughout December... ## Hackathon Winners -We had a ton of awesome projects [submitted for our Holiday Hackdays](/blog/2021/12/17/holiday-hackdays-winners-2021), all of the submissions are open source so come and check out the code for some of our top picks! +We had a ton of awesome projects [submitted for our Holiday Hackdays](/blog/holiday-hackdays-winners-2021), all of the submissions are open source so come and check out the code for some of our top picks! -[![hackathon winners](/images/blog/2021-dec/hackathon.png)](/blog/2021/12/17/holiday-hackdays-winners-2021) +[![hackathon winners](/images/blog/2021-dec/hackathon.png)](/blog/holiday-hackdays-winners-2021) ## New crypto extension - pg_crypto @@ -160,7 +160,7 @@ We hit 26K stars!!: [github.com/supabase/supabase](http://github.com/supabase/su Source: [repository.surf/supabase](https://repository.surf/supabase) -Check out some of our other community stats in our latest [Series A Blog Post](/blog/2021/10/28/supabase-series-a). +Check out some of our other community stats in our latest [Series A Blog Post](/blog/supabase-series-a). ## Get started diff --git a/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx b/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx index e20790dd937..da70c2b978c 100644 --- a/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx +++ b/apps/www/_blog/2022-02-22-supabase-beta-january-2022.mdx @@ -106,7 +106,7 @@ Our React Native example has been correctly updated to be an Expo example. There's no stopping [Jon Meyers](https://jonmeyers.io/videos)! He’s back with an in-depth video on how to easily [automate API requests](https://www.youtube.com/watch?v=codAs9-NeHM&feature=emb_title) using our very own Database Webhooks. -You'll learn how to listen to _any_ database change, then send those changes [in a payload](https://supabase.com/blog/2021/07/30/supabase-functions-updates#hook-payload) via HTTP request. +You'll learn how to listen to _any_ database change, then send those changes [in a payload](https://supabase.com/blog/supabase-functions-updates#hook-payload) via HTTP request. + ## Key Facts - You have 10 days to build a new **Open Source** project using Supabase. From b7610ede67a2b10c64e9b84153ce3edc56ae3b78 Mon Sep 17 00:00:00 2001 From: Ant Wilson Date: Tue, 9 Aug 2022 16:10:27 -0600 Subject: [PATCH 78/97] chore: adds gold cap link --- apps/www/_blog/2022-08-08-launch-week-5-hackathon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/_blog/2022-08-08-launch-week-5-hackathon b/apps/www/_blog/2022-08-08-launch-week-5-hackathon index 6550212c7dc..6fd9c80826d 100644 --- a/apps/www/_blog/2022-08-08-launch-week-5-hackathon +++ b/apps/www/_blog/2022-08-08-launch-week-5-hackathon @@ -16,7 +16,7 @@ Now is the perfect time to start your new Open Source project! [Launch Week](https://supabase.com/launch-week) is about to start and we're running a hackathon in parallel for the entire duration. -There's $1500 and gold Supabase caps to be won! +There's a $1500 GitHub sponsorship and [gold Supabase caps](https://store.supabase.com/products/gold-supacap) to be won! [Supabase-js v2.0](https://github.com/supabase/supabase-js/releases) and [Flutter SDK v1.0](https://supabase.com/blog/supabase-flutter-sdk-1-developer-preview) will both be announced during Launch Week, they are both available already and using them in your project will gain extra credit! From 8e2ad38a28953eeb3d5799357f8b7ed0a2a8bcdb Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Tue, 9 Aug 2022 19:21:10 -0300 Subject: [PATCH 79/97] Update managing-passwords.mdx --- web/docs/guides/database/managing-passwords.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/docs/guides/database/managing-passwords.mdx b/web/docs/guides/database/managing-passwords.mdx index 63d1d8b67fb..2d878632b43 100644 --- a/web/docs/guides/database/managing-passwords.mdx +++ b/web/docs/guides/database/managing-passwords.mdx @@ -15,7 +15,7 @@ If you use special symbols in your postgres password, you must remember to [perc ### Changing your project password When you created your project you were also asked to enter a password. This is actually the password for your database, specifically for the `postgres` user. -You can update this from the Dashboard under the database settings page. +You can update this from the Dashboard under the [database settings](https://app.supabase.com/project/_/settings/database) page. ## Creating a secure password From a0ba29bd3bc997904ba5d23b7b6c705027f7f34f Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Fri, 5 Aug 2022 12:52:50 +0800 Subject: [PATCH 80/97] Update ABAC naming for resource and actions --- .../interfaces/Authentication/Templates.tsx | 5 +---- .../Billing/Subscription/Subscription.tsx | 5 +---- .../DeleteOrganizationButton.tsx | 5 +---- .../GeneralSettings/GeneralSettings.tsx | 9 +++----- .../InvoicesSettings/InvoicesSettings.tsx | 2 +- .../TeamSettings/MemberActions.tsx | 10 ++------- .../TeamSettings/TeamSettings.utils.ts | 4 ++-- .../DeleteProjectButton.tsx | 2 +- .../interfaces/Settings/General/General.tsx | 2 +- .../interfaces/TableGridEditor/EmptyState.tsx | 5 ----- .../TableGridEditor/TableGridEditor.tsx | 6 ++--- .../NavigationBar/NavigationBar.utils.tsx | 22 +++++-------------- .../TableEditorLayout/TableEditorMenu.tsx | 4 ---- studio/package-lock.json | 14 ++++++------ studio/package.json | 2 +- studio/pages/new/[slug].tsx | 2 +- studio/pages/project/[ref]/auth/settings.tsx | 5 +---- studio/pages/project/[ref]/reports/[id].tsx | 8 +++---- studio/pages/project/[ref]/reports/index.tsx | 8 +++---- 19 files changed, 38 insertions(+), 82 deletions(-) diff --git a/studio/components/interfaces/Authentication/Templates.tsx b/studio/components/interfaces/Authentication/Templates.tsx index f8bbd23ee66..b64e561504f 100644 --- a/studio/components/interfaces/Authentication/Templates.tsx +++ b/studio/components/interfaces/Authentication/Templates.tsx @@ -23,10 +23,7 @@ const Templates: FC = ({ project }) => { semver.coerce('kps-v2.5.3') ) - const canUpdateTemplates = checkPermissions( - PermissionAction.SQL_UPDATE, - 'postgres.public.custom_config_gotrue' - ) + const canUpdateTemplates = checkPermissions(PermissionAction.UPDATE, 'custom_config_gotrue') const { config, error, mutateAuthConfig } = useProjectAuthConfig(project.ref) if (error) { diff --git a/studio/components/interfaces/Billing/Subscription/Subscription.tsx b/studio/components/interfaces/Billing/Subscription/Subscription.tsx index 5bf62c8601c..65fd5ae48fa 100644 --- a/studio/components/interfaces/Billing/Subscription/Subscription.tsx +++ b/studio/components/interfaces/Billing/Subscription/Subscription.tsx @@ -43,10 +43,7 @@ const Subscription: FC = ({ const enablePermissions = useFlag('enablePermissions') const projectUpdateDisabled = useFlag('disableProjectCreationAndUpdate') - const canReadSubscription = checkPermissions( - PermissionAction.SQL_SELECT, - 'postgres.public.subscriptions' - ) + const canReadSubscription = checkPermissions(PermissionAction.READ, 'subscriptions') const canUpdateSubscription = enablePermissions ? checkPermissions(PermissionAction.BILLING_WRITE, 'stripe.subscriptions') : isOrgOwner diff --git a/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx b/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx index 9843afa4982..0219aa1d31f 100644 --- a/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx +++ b/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx @@ -19,10 +19,7 @@ const DeleteOrganizationButton = observer(() => { const [isOpen, setIsOpen] = useState(false) const [value, setValue] = useState('') - const canDeleteOrganization = checkPermissions( - PermissionAction.SQL_UPDATE, - 'postgres.public.organizations' - ) + const canDeleteOrganization = checkPermissions(PermissionAction.UPDATE, 'organizations') const onValidate = (values: any) => { const errors: any = {} diff --git a/studio/components/interfaces/Organization/GeneralSettings/GeneralSettings.tsx b/studio/components/interfaces/Organization/GeneralSettings/GeneralSettings.tsx index 78d79557f89..7416d6bfd1c 100644 --- a/studio/components/interfaces/Organization/GeneralSettings/GeneralSettings.tsx +++ b/studio/components/interfaces/Organization/GeneralSettings/GeneralSettings.tsx @@ -31,17 +31,14 @@ const GeneralSettings = observer(() => { const enablePermissions = useFlag('enablePermissions') const canUpdateOrganization = enablePermissions - ? checkPermissions(PermissionAction.SQL_UPDATE, 'postgres.public.organizations') + ? checkPermissions(PermissionAction.UPDATE, 'organizations') : ui.selectedOrganization?.is_owner const canDeleteOrganization = enablePermissions - ? checkPermissions(PermissionAction.SQL_UPDATE, 'postgres.public.organizations') + ? checkPermissions(PermissionAction.UPDATE, 'organizations') : ui.selectedOrganization?.is_owner - const canReadBillingEmail = checkPermissions( - PermissionAction.SQL_SELECT, - 'postgres.public.organizations' - ) + const canReadBillingEmail = checkPermissions(PermissionAction.READ, 'organizations') const onUpdateOrganization = async (values: any, { setSubmitting, resetForm }: any) => { if (!canUpdateOrganization) { diff --git a/studio/components/interfaces/Organization/InvoicesSettings/InvoicesSettings.tsx b/studio/components/interfaces/Organization/InvoicesSettings/InvoicesSettings.tsx index fb054f6474a..b2f022a6f4c 100644 --- a/studio/components/interfaces/Organization/InvoicesSettings/InvoicesSettings.tsx +++ b/studio/components/interfaces/Organization/InvoicesSettings/InvoicesSettings.tsx @@ -37,7 +37,7 @@ const InvoicesSettings: FC = ({ organization }) => { const { stripe_customer_id } = organization const offset = (page - 1) * PAGE_LIMIT - const canReadInvoices = checkPermissions(PermissionAction.SQL_SELECT, 'postgres.public.invoices') + const canReadInvoices = checkPermissions(PermissionAction.READ, 'invoices') useEffect(() => { if (!canReadInvoices) return diff --git a/studio/components/interfaces/Organization/TeamSettings/MemberActions.tsx b/studio/components/interfaces/Organization/TeamSettings/MemberActions.tsx index b4d32ad4f02..d39d2342bab 100644 --- a/studio/components/interfaces/Organization/TeamSettings/MemberActions.tsx +++ b/studio/components/interfaces/Organization/TeamSettings/MemberActions.tsx @@ -39,14 +39,8 @@ const MemberActions: FC = ({ members, member, roles }) => { const canRemoveMember = enablePermissions ? rolesRemovable.includes((member?.role_ids ?? [-1])[0]) : true - const canResendInvite = checkPermissions( - PermissionAction.SQL_INSERT, - 'postgres.public.user_invites' - ) - const canRevokeInvite = checkPermissions( - PermissionAction.SQL_DELETE, - 'postgres.public.user_invites' - ) + const canResendInvite = checkPermissions(PermissionAction.CREATE, 'user_invites') + const canRevokeInvite = checkPermissions(PermissionAction.DELETE, 'user_invites') const handleMemberDelete = async () => { confirmAlert({ diff --git a/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts b/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts index ae7283b5bf3..fb6dc9c7005 100644 --- a/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts +++ b/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts @@ -15,12 +15,12 @@ export const getRolesManagementPermissions = ( const selectedRole = roles.find((r) => r.name === role) if (!selectedRole) return - const canAdd = checkPermissions(PermissionAction.SQL_INSERT, 'postgres.auth.subject_roles', { + const canAdd = checkPermissions(PermissionAction.CREATE, 'postgres.auth.subject_roles', { resource: { role_id: selectedRole!.id }, }) if (canAdd) rolesAddable.push(selectedRole.id) - const canRemove = checkPermissions(PermissionAction.SQL_DELETE, 'postgres.auth.subject_roles', { + const canRemove = checkPermissions(PermissionAction.DELETE, 'postgres.auth.subject_roles', { resource: { role_id: selectedRole!.id }, }) if (canRemove) rolesRemovable.push(selectedRole.id) diff --git a/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectButton.tsx b/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectButton.tsx index 0f3c5fbec57..4d433bfccd4 100644 --- a/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectButton.tsx +++ b/studio/components/interfaces/Settings/General/DeleteProjectPanel/DeleteProjectButton.tsx @@ -22,7 +22,7 @@ const DeleteProjectButton: FC = ({ type = 'danger' }) => { const [isOpen, setIsOpen] = useState(false) const [loading, setLoading] = useState(false) - const canDeleteProject = checkPermissions(PermissionAction.SQL_UPDATE, 'postgres.public.projects') + const canDeleteProject = checkPermissions(PermissionAction.UPDATE, 'projects') const toggle = () => { if (loading) return diff --git a/studio/components/interfaces/Settings/General/General.tsx b/studio/components/interfaces/Settings/General/General.tsx index 3ef3a4a89de..9bd14c4ee58 100644 --- a/studio/components/interfaces/Settings/General/General.tsx +++ b/studio/components/interfaces/Settings/General/General.tsx @@ -22,7 +22,7 @@ const General: FC = ({}) => { const formId = 'project-general-settings' const initialValues = { name: project?.name ?? '', ref: project?.ref ?? '' } - const canUpdateProject = checkPermissions(PermissionAction.SQL_UPDATE, 'postgres.public.projects') + const canUpdateProject = checkPermissions(PermissionAction.UPDATE, 'projects') const onSubmit = async (values: any, { setSubmitting, resetForm }: any) => { const response = await post(`${API_URL}/projects/${project?.ref}/update`, { name: values.name }) diff --git a/studio/components/interfaces/TableGridEditor/EmptyState.tsx b/studio/components/interfaces/TableGridEditor/EmptyState.tsx index c96fd4a0009..92d91dcb02a 100644 --- a/studio/components/interfaces/TableGridEditor/EmptyState.tsx +++ b/studio/components/interfaces/TableGridEditor/EmptyState.tsx @@ -13,11 +13,6 @@ const EmptyState: FC = ({ selectedSchema, onAddTable }) => { const { meta } = useStore() const tables = meta.tables.list((table: PostgresTable) => table.schema === selectedSchema) - const canCreateTables = checkPermissions( - PermissionAction.TENANT_SQL_CREATE_TABLE, - 'postgres.public' - ) - const renderNoTablesCTA = () => { return (
diff --git a/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx b/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx index ec9eb877257..743aaf714bf 100644 --- a/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx +++ b/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx @@ -64,9 +64,9 @@ const TableGridEditor: FC = ({ } const tableId = selectedTable?.id - const canAdminWrite = checkPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, String(tableId)) - const canInsert = checkPermissions(PermissionAction.TENANT_SQL_INSERT, String(tableId)) - const canUpdate = checkPermissions(PermissionAction.TENANT_SQL_UPDATE, String(tableId)) + // const canAdminWrite = checkPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, String(tableId)) + // const canInsert = checkPermissions(PermissionAction.CREATE, String(tableId)) + // const canUpdate = checkPermissions(PermissionAction.UPDATE, String(tableId)) // const canEdit = canAdminWrite && canInsert && canUpdate // @ts-ignore diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx index c34fcc22c61..b08d1dbc460 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx @@ -32,7 +32,6 @@ export const generateProductRoutes = (ref: string, project?: ProjectBase): Route /> ), link: isProjectBuilding ? buildingUrl : `/project/${ref}/editor`, - // disabled: !checkPermissions(PermissionAction.SQL_SELECT, 'postgres.public'), }, { key: 'auth', @@ -85,20 +84,12 @@ export const generateOtherRoutes = (ref: string, project?: ProjectBase): Route[] const isProjectBuilding = project?.status !== PROJECT_STATUS.ACTIVE_HEALTHY const buildingUrl = `/project/${ref}/building` - const canReadStats = checkPermissions( - PermissionAction.SQL_SELECT, - 'postgres.public.stats_daily_projects', - { - resource: { type: 'report' }, - } - ) - const canReadReport = checkPermissions( - PermissionAction.SQL_SELECT, - 'postgres.public.user_content', - { - resource: { type: 'report' }, - } - ) + const canReadStats = checkPermissions(PermissionAction.READ, 'stats_daily_projects', { + resource: { type: 'report' }, + }) + const canReadReport = checkPermissions(PermissionAction.READ, 'user_content', { + resource: { type: 'report' }, + }) return [ ...(IS_PLATFORM @@ -134,7 +125,6 @@ export const generateOtherRoutes = (ref: string, project?: ProjectBase): Route[] label: 'Settings', icon: , link: `/project/${ref}/settings/general`, - // disabled: !checkPermissions(PermissionAction.SQL_SELECT, 'postgres.public.projects'), }, ] : []), diff --git a/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx b/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx index 2c9a6938019..f57a4038000 100644 --- a/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx +++ b/studio/components/layouts/TableEditorLayout/TableEditorMenu.tsx @@ -60,10 +60,6 @@ const TableEditorMenu: FC = ({ const [searchText, setSearchText] = useState('') const [schemaViews, setSchemaViews] = useState([]) const [isRefreshing, setIsRefreshing] = useState(false) - const canCreateTables = checkPermissions( - PermissionAction.TENANT_SQL_CREATE_TABLE, - 'postgres.public.*' - ) // We may need to shift this to the schema store and do something like meta.schema.loadViews() // I don't need we need a separate store for views diff --git a/studio/package-lock.json b/studio/package-lock.json index 532fc71a8cb..233ffc938df 100644 --- a/studio/package-lock.json +++ b/studio/package-lock.json @@ -20,7 +20,7 @@ "@stripe/stripe-js": "^1.25.0", "@supabase/postgres-meta": "^0.26.1", "@supabase/react-data-grid": "^7.1.0-beta.7", - "@supabase/shared-types": "^0.1.24", + "@supabase/shared-types": "^0.1.25", "@supabase/supabase-js": "^1.36.0-next.9", "@supabase/ui": "0.37.0-alpha.80", "ajv": "^8.6.3", @@ -8376,9 +8376,9 @@ } }, "node_modules/@supabase/shared-types": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.24.tgz", - "integrity": "sha512-zvGWWLLh5ZAeiSR4VfJGBY9KbRb1Jh8//gJVmZwiaRv0i6F4i9qTsFOmWjpFgLY5+grAqwSfyIfB+jG8rxcidQ==" + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.25.tgz", + "integrity": "sha512-nKIwMc/Ig22s58FxH9lyCJ+hAqp3D4Qq7LDCTlGlzTV7sOeKXFyMQuevwGdCVfIuQbp99QC1y2rS9pyV+R7RFA==" }, "node_modules/@supabase/storage-js": { "version": "1.7.2", @@ -36107,9 +36107,9 @@ } }, "@supabase/shared-types": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.24.tgz", - "integrity": "sha512-zvGWWLLh5ZAeiSR4VfJGBY9KbRb1Jh8//gJVmZwiaRv0i6F4i9qTsFOmWjpFgLY5+grAqwSfyIfB+jG8rxcidQ==" + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@supabase/shared-types/-/shared-types-0.1.25.tgz", + "integrity": "sha512-nKIwMc/Ig22s58FxH9lyCJ+hAqp3D4Qq7LDCTlGlzTV7sOeKXFyMQuevwGdCVfIuQbp99QC1y2rS9pyV+R7RFA==" }, "@supabase/storage-js": { "version": "1.7.2", diff --git a/studio/package.json b/studio/package.json index 3482959eca0..d999b79baad 100644 --- a/studio/package.json +++ b/studio/package.json @@ -26,7 +26,7 @@ "@stripe/stripe-js": "^1.25.0", "@supabase/postgres-meta": "^0.26.1", "@supabase/react-data-grid": "^7.1.0-beta.7", - "@supabase/shared-types": "^0.1.24", + "@supabase/shared-types": "^0.1.25", "@supabase/supabase-js": "^1.36.0-next.9", "@supabase/ui": "0.37.0-alpha.80", "ajv": "^8.6.3", diff --git a/studio/pages/new/[slug].tsx b/studio/pages/new/[slug].tsx index 44c83085c71..589a768b650 100644 --- a/studio/pages/new/[slug].tsx +++ b/studio/pages/new/[slug].tsx @@ -63,7 +63,7 @@ const Wizard: NextPageWithLayout = () => { const availableRegions = getAvailableRegions() const isAdmin = enablePermissions - ? checkPermissions(PermissionAction.SQL_INSERT, 'postgres.public.projects') + ? checkPermissions(PermissionAction.CREATE, 'projects') : isOrganizationOwner const isEmptyOrganizations = organizations.length <= 0 && app.organizations.isInitialized diff --git a/studio/pages/project/[ref]/auth/settings.tsx b/studio/pages/project/[ref]/auth/settings.tsx index 0ac9c8774e2..2762edc57c9 100644 --- a/studio/pages/project/[ref]/auth/settings.tsx +++ b/studio/pages/project/[ref]/auth/settings.tsx @@ -17,10 +17,7 @@ const PageLayout: NextPageWithLayout = () => { authConfig.load() }, [ui.selectedProjectRef]) - const canUpdate = checkPermissions( - PermissionAction.SQL_UPDATE, - 'postgres.public.custom_config_gotrue' - ) + // const canUpdate = checkPermissions(PermissionAction.UPDATE, 'custom_config_gotrue') if (authConfig) { return ( diff --git a/studio/pages/project/[ref]/reports/[id].tsx b/studio/pages/project/[ref]/reports/[id].tsx index c4d9f1a7b65..1c36a62281f 100644 --- a/studio/pages/project/[ref]/reports/[id].tsx +++ b/studio/pages/project/[ref]/reports/[id].tsx @@ -66,11 +66,9 @@ const Reports = () => { const [startDate, setStartDate] = useState(null) const [endDate, setEndDate] = useState(null) - const canSaveReport = checkPermissions( - PermissionAction.SQL_UPDATE, - 'postgres.public.user_content', - { resource: { type: 'report' } } - ) + // const canSaveReport = checkPermissions(PermissionAction.UPDATE, 'user_content', { + // resource: { type: 'report' }, + // }) const contentStore = useProjectContentStore(ref) /* diff --git a/studio/pages/project/[ref]/reports/index.tsx b/studio/pages/project/[ref]/reports/index.tsx index 78e7021edb5..d49fb9663fa 100644 --- a/studio/pages/project/[ref]/reports/index.tsx +++ b/studio/pages/project/[ref]/reports/index.tsx @@ -22,11 +22,9 @@ const PageLayout: NextPageWithLayout = () => { const { ui } = useStore() const project = ui.selectedProject - const canCreateReport = checkPermissions( - PermissionAction.SQL_INSERT, - 'postgres.public.user_content', - { resource: { type: 'report' } } - ) + // const canCreateReport = checkPermissions(PermissionAction.CREATE, 'user_content', { + // resource: { type: 'report' }, + // }) const contentStore = useProjectContentStore(ref) useEffect(() => { From 930a09fbbf71fbda09c9770349abb1e5ba63bc15 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 10 Aug 2022 15:33:57 +0800 Subject: [PATCH 81/97] Resolve comments --- .../Organization/TeamSettings/TeamSettings.utils.ts | 4 ++-- .../components/interfaces/TableGridEditor/TableGridEditor.tsx | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts b/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts index fb6dc9c7005..c301a667fcd 100644 --- a/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts +++ b/studio/components/interfaces/Organization/TeamSettings/TeamSettings.utils.ts @@ -15,12 +15,12 @@ export const getRolesManagementPermissions = ( const selectedRole = roles.find((r) => r.name === role) if (!selectedRole) return - const canAdd = checkPermissions(PermissionAction.CREATE, 'postgres.auth.subject_roles', { + const canAdd = checkPermissions(PermissionAction.CREATE, 'auth.subject_roles', { resource: { role_id: selectedRole!.id }, }) if (canAdd) rolesAddable.push(selectedRole.id) - const canRemove = checkPermissions(PermissionAction.DELETE, 'postgres.auth.subject_roles', { + const canRemove = checkPermissions(PermissionAction.DELETE, 'auth.subject_roles', { resource: { role_id: selectedRole!.id }, }) if (canRemove) rolesRemovable.push(selectedRole.id) diff --git a/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx b/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx index 743aaf714bf..cf30488cb21 100644 --- a/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx +++ b/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx @@ -64,6 +64,7 @@ const TableGridEditor: FC = ({ } const tableId = selectedTable?.id + // const canUpdate = checkPermissions(PermissionAction.TENANT_SQL_UPDATE, String(tableId)) // const canAdminWrite = checkPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, String(tableId)) // const canInsert = checkPermissions(PermissionAction.CREATE, String(tableId)) // const canUpdate = checkPermissions(PermissionAction.UPDATE, String(tableId)) From a9cb9c33754219c1339f28881cf8b8c0e7f5a1e4 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 10 Aug 2022 15:35:44 +0800 Subject: [PATCH 82/97] Add comment --- .../components/interfaces/TableGridEditor/TableGridEditor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx b/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx index cf30488cb21..6bb22177eff 100644 --- a/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx +++ b/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx @@ -64,10 +64,10 @@ const TableGridEditor: FC = ({ } const tableId = selectedTable?.id + // [Joshen] When we get to this, double check again what are the actions // const canUpdate = checkPermissions(PermissionAction.TENANT_SQL_UPDATE, String(tableId)) // const canAdminWrite = checkPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, String(tableId)) // const canInsert = checkPermissions(PermissionAction.CREATE, String(tableId)) - // const canUpdate = checkPermissions(PermissionAction.UPDATE, String(tableId)) // const canEdit = canAdminWrite && canInsert && canUpdate // @ts-ignore From d47e2992cf24148a33cabe2c0c05338306ec938a Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 10 Aug 2022 16:15:18 +0800 Subject: [PATCH 83/97] Add abac for reset db password --- .../pages/project/[ref]/settings/database.tsx | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index a44b572a97a..36981ea51b9 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -1,5 +1,6 @@ import dayjs from 'dayjs' import useSWR from 'swr' +import * as Tooltip from '@radix-ui/react-tooltip' import { FC, useState, useRef, useEffect } from 'react' import { toJS } from 'mobx' import { observer } from 'mobx-react-lite' @@ -7,8 +8,9 @@ import { useRouter } from 'next/router' import { debounce } from 'lodash' import generator from 'generate-password' import { Typography, Input, Button, IconDownload, IconArrowRight, Tabs, Modal } from '@supabase/ui' +import { PermissionAction } from '@supabase/shared-types/out/constants' -import { useStore } from 'hooks' +import { checkPermissions, useStore } from 'hooks' import { get, patch } from 'lib/common/fetch' import { pluckObjectFields, passwordStrength } from 'lib/helpers' import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH, TIME_PERIODS_INFRA } from 'lib/constants' @@ -150,6 +152,8 @@ const ResetDbPassword: FC = () => { const { ui } = useStore() const projectRef = ui.selectedProject?.ref + const canResetDbPassword = checkPermissions(PermissionAction.UPDATE, 'projects') + const [showResetDbPass, setShowResetDbPass] = useState(false) const [isUpdatingPassword, setIsUpdatingPassword] = useState(false) @@ -226,9 +230,32 @@ const ResetDbPassword: FC = () => {
- + + + + + {!canResetDbPassword && ( + + +
+ + You need additional permissions to reset the database password + +
+
+ )} +
From ede7727eeb8016eb5a88e5ce70e06a3bf3e07751 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 10 Aug 2022 11:39:03 +0200 Subject: [PATCH 84/97] prettify --- apps/reference/_auth_helpers/next-js.md | 130 ++++++++++----------- apps/reference/_auth_helpers/svelte-kit.md | 130 +++++++++++---------- 2 files changed, 134 insertions(+), 126 deletions(-) diff --git a/apps/reference/_auth_helpers/next-js.md b/apps/reference/_auth_helpers/next-js.md index e9f6990506c..3cc90c70794 100644 --- a/apps/reference/_auth_helpers/next-js.md +++ b/apps/reference/_auth_helpers/next-js.md @@ -20,6 +20,7 @@ npm install @supabase/auth-helpers-react ``` Using [yarn](https://yarnpkg.com/): + ```sh yarn add @supabase/auth-helpers-nextjs @@ -54,9 +55,9 @@ NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key The path to your dynamic API route file would be `/pages/api/auth/[...supabase].js`. Populate that file as follows: ```js -import { handleAuth } from '@supabase/auth-helpers-nextjs'; +import { handleAuth } from '@supabase/auth-helpers-nextjs' -export default handleAuth({ logout: { returnTo: '/' } }); +export default handleAuth({ logout: { returnTo: '/' } }) ``` Executing `handleAuth()` creates the following route handlers under the hood that perform different parts of the authentication flow: @@ -71,16 +72,16 @@ Wrap your `pages/_app.js` component with the `UserProvider` component: ```jsx // pages/_app.js -import React from 'react'; -import { UserProvider } from '@supabase/auth-helpers-react'; -import { supabaseClient } from '@supabase/auth-helpers-nextjs'; +import React from 'react' +import { UserProvider } from '@supabase/auth-helpers-react' +import { supabaseClient } from '@supabase/auth-helpers-nextjs' export default function App({ Component, pageProps }) { return ( - ); + ) } ``` @@ -91,23 +92,23 @@ You can now determine if a user is authenticated by checking that the `user` obj For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) to work properly when fetching data client-side, you need to make sure to import the `{ supabaseClient }` from `# @supabase/auth-helpers-nextjs` and only run your query once the user is defined client-side in the `useUser()` hook: ```js -import { Auth } from '@supabase/ui'; -import { useUser } from '@supabase/auth-helpers-react'; -import { supabaseClient } from '@supabase/auth-helpers-nextjs'; -import { useEffect, useState } from 'react'; +import { Auth } from '@supabase/ui' +import { useUser } from '@supabase/auth-helpers-react' +import { supabaseClient } from '@supabase/auth-helpers-nextjs' +import { useEffect, useState } from 'react' const LoginPage = () => { - const { user, error } = useUser(); - const [data, setData] = useState(); + const { user, error } = useUser() + const [data, setData] = useState() useEffect(() => { async function loadData() { - const { data } = await supabaseClient.from('test').select('*'); - setData(data); + const { data } = await supabaseClient.from('test').select('*') + setData(data) } // Only run query once user is logged in. - if (user) loadData(); - }, [user]); + if (user) loadData() + }, [user]) if (!user) return ( @@ -120,7 +121,7 @@ const LoginPage = () => { socialButtonSize="xlarge" /> - ); + ) return ( <> @@ -130,10 +131,10 @@ const LoginPage = () => {

client-side data fetching with RLS

{JSON.stringify(data, null, 2)}
- ); -}; + ) +} -export default LoginPage; +export default LoginPage ``` ### Server-side rendering (SSR) - withPageAuth @@ -142,13 +143,13 @@ If you wrap your `getServerSideProps` with `withPageAuth` your props object will ```js // pages/profile.js -import { withPageAuth } from '@supabase/auth-helpers-nextjs'; +import { withPageAuth } from '@supabase/auth-helpers-nextjs' export default function Profile({ user }) { - return
Hello {user.name}
; + return
Hello {user.name}
} -export const getServerSideProps = withPageAuth({ redirectTo: '/login' }); +export const getServerSideProps = withPageAuth({ redirectTo: '/login' }) ``` If there is no authenticated user, they will be redirect to your home page, unless you specify the `redirectTo` option. @@ -158,20 +159,20 @@ user props. You can also access the user session data by calling `getUser` insid ```js // pages/protected-page.js -import { withPageAuth, getUser } from '@supabase/auth-helpers-nextjs'; +import { withPageAuth, getUser } from '@supabase/auth-helpers-nextjs' export default function ProtectedPage({ user, customProp }) { - return
Protected content
; + return
Protected content
} export const getServerSideProps = withPageAuth({ redirectTo: '/foo', async getServerSideProps(ctx) { // Access the user object - const { user, accessToken } = await getUser(ctx); - return { props: { email: user?.email } }; - } -}); + const { user, accessToken } = await getUser(ctx) + return { props: { email: user?.email } } + }, +}) ``` ### Server-side data fetching with RLS @@ -182,15 +183,15 @@ For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row import { User, withPageAuth, - supabaseServerClient -} from '@supabase/auth-helpers-nextjs'; + supabaseServerClient, +} from '@supabase/auth-helpers-nextjs' export default function ProtectedPage({ user, - data + data, }: { user: User, - data: any + data: any, }) { return ( <> @@ -198,17 +199,17 @@ export default function ProtectedPage({
{JSON.stringify(data, null, 2)}
{JSON.stringify(user, null, 2)}
- ); + ) } export const getServerSideProps = withPageAuth({ redirectTo: '/', async getServerSideProps(ctx) { // Run queries with RLS on the server - const { data } = await supabaseServerClient(ctx).from('test').select('*'); - return { props: { data } }; - } -}); + const { data } = await supabaseServerClient(ctx).from('test').select('*') + return { props: { data } } + }, +}) ``` ### Server-side data fetching to OAuth APIs using `provider_token` @@ -216,7 +217,7 @@ export const getServerSideProps = withPageAuth({ When using third-party auth providers, sessions are initiated with an additional `provider_token` field which is persisted as an HTTPOnly cookie upon logging in to enabled usage on the server side. The `provider_token` can be used to make API requests to the OAuth provider's API endpoints on behalf of the logged-in user. In the following example, we fetch the user's full profile from the third-party API during SSR using their id and auth token: ```js -import { User, withPageAuth, getUser } from '@supabase/auth-helpers-nextjs'; +import { User, withPageAuth, getUser } from '@supabase/auth-helpers-nextjs' interface Profile { /* ... */ @@ -224,33 +225,33 @@ interface Profile { export default function ProtectedPage({ user, - data + data, }: { user: User, - profile: Profile + profile: Profile, }) { - return
Protected content
; + return
Protected content
} export const getServerSideProps = withPageAuth({ redirectTo: '/', async getServerSideProps(ctx) { // Retrieve provider_token from cookies - const provider_token = ctx.req.cookies['sb-provider-token']; + const provider_token = ctx.req.cookies['sb-provider-token'] // Get logged in user's third-party id from metadata - const { user } = await getUser(ctx); - const userId = user?.user_metadata.provider_id; + const { user } = await getUser(ctx) + const userId = user?.user_metadata.provider_id const profile: Profile = await ( await fetch(`https://api.example.com/users/${userId}`, { method: 'GET', headers: { - Authorization: `Bearer ${provider_token}` - } + Authorization: `Bearer ${provider_token}`, + }, }) - ).json(); - return { props: { profile } }; - } -}); + ).json() + return { props: { profile } } + }, +}) ``` ## Protecting API routes @@ -262,16 +263,16 @@ Wrap an API Route to check that the user has a valid session. If they're not log // pages/api/protected-route.js import { withApiAuth, - supabaseServerClient -} from '@supabase/auth-helpers-nextjs'; + supabaseServerClient, +} from '@supabase/auth-helpers-nextjs' export default withApiAuth(async function ProtectedRoute(req, res) { // Run queries with RLS on the server const { data } = await supabaseServerClient({ req, res }) .from('test') - .select('*'); - res.json(data); -}); + .select('*') + res.json(data) +}) ``` If you visit `/api/protected-route` without a valid session cookie, you will get a 401 response. @@ -282,25 +283,24 @@ As an alternative to protecting individual pages using `getServerSideProps` with ```ts // pages/protected/_middleware.ts -import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/middleware'; +import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/middleware' -export const middleware = withMiddlewareAuth({ redirectTo: '/login' }); +export const middleware = withMiddlewareAuth({ redirectTo: '/login' }) ``` It is also possible to add finer granularity based on the user logged in. I.e. you can specify a promise to determine if a specific user has permission or not. - ```ts // pages/protected/_middleware.ts -import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/dist/middleware'; +import { withMiddlewareAuth } from '@supabase/auth-helpers-nextjs/dist/middleware' -export const middleware = withMiddlewareAuth({ +export const middleware = withMiddlewareAuth({ redirectTo: '/login', authGuard: { isPermitted: async (user) => user.email?.endsWith('@example.com') ?? false, - redirectTo: '/insufficient-permissions' - } -}); + redirectTo: '/insufficient-permissions', + }, +}) ``` ## Migrating from @supabase/supabase-auth-helpers to @supabase/auth-helpers @@ -312,4 +312,4 @@ This is a step by step guide on migrating away from the `@supabase/supabase-auth 3. Replace all imports of `@supabase/supabase-auth-helpers/react` in your project with `@supabase/auth-helpers-react`. 4. Replace all instances of `withAuthRequired` in any of your NextJS pages with `withPageAuth`. 5. Replace all instances of `withAuthRequired` in any of your NextJS API endpoints with `withApiAuth`. -6. Uninstall `@supabase/supabase-auth-helpers`. \ No newline at end of file +6. Uninstall `@supabase/supabase-auth-helpers`. diff --git a/apps/reference/_auth_helpers/svelte-kit.md b/apps/reference/_auth_helpers/svelte-kit.md index 65fcfc7525f..0b868d560eb 100644 --- a/apps/reference/_auth_helpers/svelte-kit.md +++ b/apps/reference/_auth_helpers/svelte-kit.md @@ -20,6 +20,7 @@ npm install @supabase/auth-helpers-svelte ``` Using [yarn](https://yarnpkg.com/): + ```sh yarn add @supabase/auth-helpers-sveltekit @@ -49,14 +50,14 @@ We will start off by creating a `db.ts` file inside of our `src/lib` directory. ```ts // src/lib/db.ts -import { createSupabaseClient } from '@supabase/auth-helpers-sveltekit'; +import { createSupabaseClient } from '@supabase/auth-helpers-sveltekit' const { supabaseClient } = createSupabaseClient( import.meta.env.VITE_SUPABASE_URL as string, import.meta.env.VITE_SUPABASE_ANON_KEY as string -); +) -export { supabaseClient }; +export { supabaseClient } ``` Edit your `__layout.svelte` file and add import the `SupaAuthHelper` component, the `supabaseClient` we just instantiated and the `session` store. @@ -64,15 +65,15 @@ Edit your `__layout.svelte` file and add import the `SupaAuthHelper` component, ```html // src/routes/__layout.svelte -```` +``` ### Hooks setup @@ -80,18 +81,18 @@ Our `hooks.ts` file is where the heavy lifting of this library happens, we need ```ts // src/hooks.ts -import { handleAuth } from '@supabase/auth-helpers-sveltekit'; -import type { GetSession, Handle } from '@sveltejs/kit'; -import { sequence } from '@sveltejs/kit/hooks'; +import { handleAuth } from '@supabase/auth-helpers-sveltekit' +import type { GetSession, Handle } from '@sveltejs/kit' +import { sequence } from '@sveltejs/kit/hooks' -export const handle: Handle = sequence(...handleAuth()); +export const handle: Handle = sequence(...handleAuth()) export const getSession: GetSession = async (event) => { - const { user, accessToken, error } = event.locals; - return { - user, - accessToken, - error + const { user, accessToken, error } = event.locals + return { + user, + accessToken, + error, } } ``` @@ -103,6 +104,7 @@ These will create the handlers under the hood that perform different parts of th - `/api/auth/logout`: You can logout the user. ### Typings + In order to get the most out of TypeScript and its intellisense, you should import our types into the `app.d.ts` type definition file that comes with your SvelteKit project. ```ts @@ -111,19 +113,15 @@ In order to get the most out of TypeScript and its intellisense, you should impo // See https://kit.svelte.dev/docs/types#app // for information about these interfaces declare namespace App { -  interface UserSession { -    user: import('@supabase/supabase-js').User; -    accessToken?: string; -  } -  -  interface Locals extends UserSession { -    error: import('@supabase/supabase-js').ApiError; -  } + interface UserSession { + user: import('@supabase/supabase-js').User + accessToken?: string + } + interface Locals extends UserSession { + error: import('@supabase/supabase-js').ApiError + } -  interface Session extends UserSession {} - -  // interface Platform {} -  // interface Stuff {} + interface Session extends UserSession {} // interface Platform {} // interface Stuff {} } ``` @@ -144,9 +142,11 @@ In your `src/hooks.ts` file the logout handler is already setup and you can conf > By default the redirect path after logging out will be `/`. ```ts -export const handle = sequence(...handleAuth({ - logout: { returnTo: '/auth/signin' } -})); +export const handle = sequence( + ...handleAuth({ + logout: { returnTo: '/auth/signin' }, + }) +) ``` ### Basic Setup @@ -156,14 +156,14 @@ You can now determine if a user is authenticated on the client-side by checking ```html // example {#if !$session.user} -

I am not logged in

+

I am not logged in

{:else} -

Welcome {$session.user.email}

-

I am logged in!

+

Welcome {$session.user.email}

+

I am logged in!

{/if} ``` @@ -216,8 +216,8 @@ For [row level security](https://supabase.com/docs/learn/auth-deep-dive/auth-row ```html
Protected content for {user.email}
@@ -227,38 +227,41 @@ export let data; ```ts // src/routes/profile.ts -import { supabaseServerClient, withApiAuth } from "@supabase/auth-helpers-sveltekit"; -import type { RequestHandler } from "./__types/profile"; +import { + supabaseServerClient, + withApiAuth, +} from '@supabase/auth-helpers-sveltekit' +import type { RequestHandler } from './__types/profile' interface TestTable { - id: string; - created_at: string; + id: string + created_at: string } interface GetOutput { - user: User; - data: TestTable[]; + user: User + data: TestTable[] } export const GET: RequestHandler = async ({ locals }) => withApiAuth( { - redirectTo: "/", - user: locals.user + redirectTo: '/', + user: locals.user, }, async () => { const { data } = await supabaseServerClient(session.accessToken) - .from("test") - .select("*"); + .from('test') + .select('*') return { body: { user: locals.user, - data - } - }; + data, + }, + } } - ); + ) ``` ## Protecting API routes @@ -268,28 +271,33 @@ Wrap an API Route to check that the user has a valid session. If they're not log ```ts // src/routes/api/protected-route.ts -import { supabaseServerClient, withApiAuth } from "@supabase/auth-helpers-sveltekit"; -import type { RequestHandler } from "./__types/protected-route"; +import { + supabaseServerClient, + withApiAuth, +} from '@supabase/auth-helpers-sveltekit' +import type { RequestHandler } from './__types/protected-route' interface TestTable { - id: string; - created_at: string; + id: string + created_at: string } interface GetOutput { - data: TestTable[]; + data: TestTable[] } export const GET: RequestHandler = async ({ locals, request }) => withApiAuth({ user: locals.user }, async () => { // Run queries with RLS on the server - const { data } = await supabaseServerClient(request).from("test").select("*"); + const { data } = await supabaseServerClient(request) + .from('test') + .select('*') return { status: 200, - body: { data } - }; - }); + body: { data }, + } + }) ``` -If you visit `/api/protected-route` without a valid session cookie, you will get a 303 response. \ No newline at end of file +If you visit `/api/protected-route` without a valid session cookie, you will get a 303 response. From a1b99b8b130fbfda73d8d03322ba337772f92022 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 10 Aug 2022 17:06:59 +0800 Subject: [PATCH 85/97] Fix wrong await statement --- .../interfaces/Auth/RedirectDomains/RedirectDomains.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx b/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx index f8f3f3c4596..621fd3f2241 100644 --- a/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx +++ b/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx @@ -27,9 +27,9 @@ const RedirectDomains = () => { setSubmitting(true) try { const payload = URI_ALLOW_LIST_ARRAY - await payload.push(values.domain) + payload.push(values.domain) // convert payload to comma seperated string and update - authConfig.update({ URI_ALLOW_LIST: payload.toString() }) + await authConfig.update({ URI_ALLOW_LIST: payload.toString() }) setSubmitting(false) setOpen(false) ui.setNotification({ category: 'success', message: 'Successfully added domain' }) From d80d101aa25700120425f7b56bab3fa3db8127e0 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 10 Aug 2022 17:24:19 +0800 Subject: [PATCH 86/97] Fix cancel logic wrong in provider form --- .../Auth/AuthProvidersForm/ProviderForm.tsx | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx b/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx index dd6ba809d51..41a5c52f44a 100644 --- a/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx +++ b/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx @@ -1,4 +1,4 @@ -import { FC, useEffect, useState } from 'react' +import { FC, useState } from 'react' import ReactMarkdown from 'react-markdown' import { Alert, Button, Collapsible, Form, IconCheck, IconChevronUp, Input } from '@supabase/ui' @@ -15,28 +15,22 @@ const ProviderForm: FC = ({ provider }) => { const [open, setOpen] = useState(false) const { authConfig, ui } = useStore() - const isActive = authConfig.config[`EXTERNAL_${provider?.title?.toUpperCase()}_ENABLED`] - const INITIAL_VALUES: { [x: string]: string } = {} - const doubleNegativeKeys = ['MAILER_AUTOCONFIRM', 'SMS_AUTOCONFIRM'] - useEffect(() => { - /** - * Construct values for INITIAL_VALUES - * Return empty string `""` rather than `null` - * as it breaks form. null is not a valid value. - */ + const generateInitialValues = () => { + const initialValues: { [x: string]: string } = {} Object.keys(provider.properties).forEach((key) => { // When the key is a 'double negative' key, we must reverse the boolean before adding it to the form const isDoubleNegative = doubleNegativeKeys.includes(key) - - INITIAL_VALUES[key] = isDoubleNegative - ? !authConfig.config[key] - : authConfig.config[key] ?? '' + initialValues[key] = isDoubleNegative ? !authConfig.config[key] : authConfig.config[key] ?? '' }) - }, [provider]) + return initialValues + } - const onSubmit = async (values: any, { setSubmitting }: any) => { + const isActive = authConfig.config[`EXTERNAL_${provider?.title?.toUpperCase()}_ENABLED`] + const INITIAL_VALUES = generateInitialValues() + + const onSubmit = async (values: any, { setSubmitting, resetForm }: any) => { try { const payload = { ...values } @@ -48,7 +42,7 @@ const ProviderForm: FC = ({ provider }) => { }) await authConfig.update(payload) - + resetForm({ values: payload, initialValues: payload }) setSubmitting(false) setOpen(false) ui.setNotification({ category: 'success', message: 'Successfully updated settings' }) From d2471834951996de3a3c43fd24811e3de9d3b85a Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 10 Aug 2022 17:33:29 +0800 Subject: [PATCH 87/97] Fix loader for functions page --- .../interfaces/Functions/FunctionsLayout.tsx | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/studio/components/interfaces/Functions/FunctionsLayout.tsx b/studio/components/interfaces/Functions/FunctionsLayout.tsx index 3614be8ea50..fb84c92b03c 100644 --- a/studio/components/interfaces/Functions/FunctionsLayout.tsx +++ b/studio/components/interfaces/Functions/FunctionsLayout.tsx @@ -2,7 +2,7 @@ import Link from 'next/link' import { useRouter } from 'next/router' import React, { useEffect } from 'react' import { observer } from 'mobx-react-lite' -import { IconCode, Loading } from '@supabase/ui' +import { IconCode } from '@supabase/ui' import { useStore, withAuth } from 'hooks' import FunctionsNav from './FunctionsNav' @@ -20,14 +20,6 @@ const FunctionsLayout = ({ children }: { children?: React.ReactNode }) => { } }, [ui.selectedProjectRef]) - if (!functions.isLoaded) { - return ( - - {''} - - ) - } - const item = id ? functions.byId(id) : null const name = item?.name || '' @@ -35,7 +27,7 @@ const FunctionsLayout = ({ children }: { children?: React.ReactNode }) => { const centered = !hasFunctions return ( - + {centered ? ( <>
From cff7cd61c56168d64474cea25a06575e12722839 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 10 Aug 2022 12:23:01 +0200 Subject: [PATCH 88/97] Update web/docs/guides/integrations/directus.mdx --- web/docs/guides/integrations/directus.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/docs/guides/integrations/directus.mdx b/web/docs/guides/integrations/directus.mdx index 630ebc764c5..663f5a498be 100644 --- a/web/docs/guides/integrations/directus.mdx +++ b/web/docs/guides/integrations/directus.mdx @@ -26,7 +26,7 @@ The two platforms share an overlap of capabilities that deepens their integratio The ability to generate *powerful* APIs dynamically to connect data User management and fine-grained access control -Digital asset storage and management +Digital asset storage and management. More importantly, Directus and Supabase share a common vision for your data, making them quite symbiotic. Both solutions are completely open-source, with self-hosted and cloud deployment options available. They are unopinionated in their approach, with vendor-agnostic data storage, and they both focus on providing a polished developer experience along with comprehensive documentation. From a4baee8b38cc0b2b8704efe1c4283fb38be23419 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 10 Aug 2022 12:23:08 +0200 Subject: [PATCH 89/97] Update web/docs/guides/integrations/directus.mdx --- web/docs/guides/integrations/directus.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/docs/guides/integrations/directus.mdx b/web/docs/guides/integrations/directus.mdx index 663f5a498be..73a8962fddc 100644 --- a/web/docs/guides/integrations/directus.mdx +++ b/web/docs/guides/integrations/directus.mdx @@ -121,7 +121,7 @@ Below are some additional resources to dive in and start exploring these two pla **Directus** - See the [Directus guides](https://directus.io/guides/). - Join the Directus community on [Discord](https://directus.chat/). -- Check out the source code and give us a star on the official [Directus GitHub Repo](https://github.com/directus/directus). +- Check out the source code on the official [Directus GitHub Repo](https://github.com/directus/directus). **Supabase** - Explore the [Supabase documentation](https://supabase.com/docs) From c2284b7b40c3000f14a86c90a02c8f523d7412d1 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Wed, 10 Aug 2022 12:23:19 +0200 Subject: [PATCH 90/97] Update web/docs/guides/integrations/directus.mdx --- web/docs/guides/integrations/directus.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/docs/guides/integrations/directus.mdx b/web/docs/guides/integrations/directus.mdx index 73a8962fddc..ef9a8855a5c 100644 --- a/web/docs/guides/integrations/directus.mdx +++ b/web/docs/guides/integrations/directus.mdx @@ -126,4 +126,3 @@ Below are some additional resources to dive in and start exploring these two pla **Supabase** - Explore the [Supabase documentation](https://supabase.com/docs) - Join the Supabase community on [Discord](https://discord.supabase.com/) -- Give Supabase a star on [Github](https://github.com/supabase/supabase) From cd4ab00d957f82c38568a3075accbcd5358a735a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Wed, 10 Aug 2022 13:23:59 +0100 Subject: [PATCH 91/97] Added section with Python resources. --- apps/www/_blog/2022-06-15-loading-data-supabase-python.mdx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/www/_blog/2022-06-15-loading-data-supabase-python.mdx b/apps/www/_blog/2022-06-15-loading-data-supabase-python.mdx index 3d5f8a75394..e6294216290 100644 --- a/apps/www/_blog/2022-06-15-loading-data-supabase-python.mdx +++ b/apps/www/_blog/2022-06-15-loading-data-supabase-python.mdx @@ -176,3 +176,10 @@ Note: In case you cannot see any of the data, you should hit the Refresh button With Python, data loading into Supabase is easy. It just takes a few easy steps to get started with the Python SDK and Supabase. In the next part of this blog series, we will learn [how to visualize the data that we just loaded into Supabase using Metabase](blog/visualizing-supabase-data-using-metabase). Stay tuned! If you have any questions please reach out via [Twitter](https://twitter.com/supabase) or join our [Discord](https://discord.supabase.com). + +## More Python and Supabase resources +- [supabase-py](https://github.com/supabase-community/supabase-py) +- [Slack Consolidate: a slackbot built with Python and Supabase](blog/slack-consolidate-slackbot-to-consolidate-messages) +- [Supabase-py (Database) on Replit](https://replit.com/@Supabase/Supabase-py-Database?v=1) + + From e78a1a7ce8cb7d9f3980e4bcaf7fe9e30fde7a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Wed, 10 Aug 2022 13:27:11 +0100 Subject: [PATCH 92/97] Added section with Python resources. --- ...2022-06-29-visualizing-supabase-data-using-metabase.mdx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx b/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx index cc6c11d2c73..62931872587 100644 --- a/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx +++ b/apps/www/_blog/2022-06-29-visualizing-supabase-data-using-metabase.mdx @@ -16,7 +16,7 @@ Data helps organizations make better decisions. With a programming language like With Metabase, a powerful visualization tool, you can quickly turn your data into easy-to-understand visuals like graphs, pie charts, flow diagrams, and much more. Then, using Metabase’s intuitive interface, you can cut through the data noise and focus on what’s essential for your business. -In the previous blog of this series**,** we explained [how to use Python to load data into Supabase](https://supabase.com/blog/loading-data-supabase-python). In this blog, we will create different kinds of charts out of the data stored in Supabase using Metabase. +In the previous blog of this series, we explained [how to use Python to load data into Supabase](https://supabase.com/blog/loading-data-supabase-python). In this blog, we will create different kinds of charts out of the data stored in Supabase using Metabase. ## Prerequisites @@ -133,3 +133,8 @@ Data visualization empowers organizations to turn unused data into actionable in With our [free tier Supabase account](https://app.supabase.com/), you can start a new project today and use Metabase to visualize your app data. If you have any questions please reach out via [Twitter](https://twitter.com/supabase) or join our [Discord](https://discord.supabase.com). + +## More Python and Supabase resources +- [supabase-py](https://github.com/supabase-community/supabase-py) +- [Slack Consolidate: a slackbot built with Python and Supabase](blog/slack-consolidate-slackbot-to-consolidate-messages) +- [Supabase-py (Database) on Replit](https://replit.com/@Supabase/Supabase-py-Database?v=1) From 7e03ae76ad5fb21ad0cc85d4eaa68a708a66c41b Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Wed, 10 Aug 2022 10:21:05 -0300 Subject: [PATCH 93/97] fix: issue with blog urls --- apps/www/_alternatives/supabase-vs-firebase.mdx | 4 +--- apps/www/_alternatives/supabase-vs-heroku-postgres.mdx | 2 -- apps/www/layouts/comparison.tsx | 2 +- apps/www/pages/alternatives/[slug].tsx | 2 +- apps/www/pages/blog.tsx | 5 +---- apps/www/pages/blog/[slug].tsx | 4 +++- apps/www/public/rss.xml | 2 +- 7 files changed, 8 insertions(+), 13 deletions(-) diff --git a/apps/www/_alternatives/supabase-vs-firebase.mdx b/apps/www/_alternatives/supabase-vs-firebase.mdx index 893233e3517..20355efa97a 100644 --- a/apps/www/_alternatives/supabase-vs-firebase.mdx +++ b/apps/www/_alternatives/supabase-vs-firebase.mdx @@ -2,8 +2,6 @@ title: Supabase vs Firebase description: Supabase is an Open Source Firebase Alternative with a SQL based Database, Auth, and Cloud Functions author: ant_wilson -image: partner-gallery/partner-showcase-thumb.png -thumb: partner-gallery/partner-showcase-thumb.png tags: - comparison date: '2022-05-26' @@ -44,7 +42,7 @@ Both Firebase and Supabase have invested heavily in client side libraries so you ## How are they different? -Firebase and Supabase differ in several ways. The main one being that Firebase is a document store, whereas Supabase is based on PostgreSQL - a relational, SQL-based database management system. +Firebase and Supabase differ in several ways. The main one being that Firebase is a document store, whereas Supabase is based on PostgreSQL - a relational, SQL-based database management system. There are some other important differences. diff --git a/apps/www/_alternatives/supabase-vs-heroku-postgres.mdx b/apps/www/_alternatives/supabase-vs-heroku-postgres.mdx index 50fadb5b16c..b1fa67553dc 100644 --- a/apps/www/_alternatives/supabase-vs-heroku-postgres.mdx +++ b/apps/www/_alternatives/supabase-vs-heroku-postgres.mdx @@ -2,8 +2,6 @@ title: Supabase vs Heroku Postgres description: Supabase is an alternative to Heroku Postgres with Enterprise Grade Support available author: ant_wilson -image: partner-gallery/partner-showcase-thumb.png -thumb: partner-gallery/partner-showcase-thumb.png tags: - comparison date: '2022-05-26' diff --git a/apps/www/layouts/comparison.tsx b/apps/www/layouts/comparison.tsx index 65dd6b61d72..8146f6b4d80 100644 --- a/apps/www/layouts/comparison.tsx +++ b/apps/www/layouts/comparison.tsx @@ -64,7 +64,7 @@ const LayoutComparison = ({ components, props, gfm, slug }: Props) => { openGraph={{ title: props.blog.title, description: props.blog.description, - url: `https://supabase.com/blog/${props.blog.slug}`, + url: `https://supabase.com/alternatives/${props.blog.slug}`, type: 'article', article: { // diff --git a/apps/www/pages/alternatives/[slug].tsx b/apps/www/pages/alternatives/[slug].tsx index ff08d81f396..6ee4340fa47 100644 --- a/apps/www/pages/alternatives/[slug].tsx +++ b/apps/www/pages/alternatives/[slug].tsx @@ -70,7 +70,7 @@ export async function getStaticProps({ params }: any) { nextPost: currentIndex === allPosts.length ? null : nextPost ? nextPost : null, relatedPosts, blog: { - slug: `${params.year}/${params.month}/${params.day}/${params.slug}`, + slug: `${params.slug}`, content: mdxSource, ...data, toc: toc(content, { maxdepth: data.toc_depth ? data.toc_depth : 2 }), diff --git a/apps/www/pages/blog.tsx b/apps/www/pages/blog.tsx index 77040dfafd2..1276cfae372 100644 --- a/apps/www/pages/blog.tsx +++ b/apps/www/pages/blog.tsx @@ -104,10 +104,7 @@ function Blog(props: any) {
{props.categories.map((categoryId: string) => ( - - {/*

{categoryId}

*/} - <> -
+ ))}
diff --git a/apps/www/pages/blog/[slug].tsx b/apps/www/pages/blog/[slug].tsx index 9c05e24c8d1..e7589fe4c26 100644 --- a/apps/www/pages/blog/[slug].tsx +++ b/apps/www/pages/blog/[slug].tsx @@ -100,7 +100,7 @@ export async function getStaticProps({ params }: any) { nextPost: currentIndex === allPosts.length ? null : nextPost ? nextPost : null, relatedPosts, blog: { - slug: `${params.year}/${params.month}/${params.day}/${params.slug}`, + slug: `${params.slug}`, content: mdxSource, ...data, toc: toc(content, { maxdepth: data.toc_depth ? data.toc_depth : 2 }), @@ -181,6 +181,7 @@ function BlogPostPage(props: any) { description: props.blog.description, url: `https://supabase.com/blog/${props.blog.slug}`, type: 'article', + article: { // // to do: add expiration and modified dates @@ -199,6 +200,7 @@ function BlogPostPage(props: any) { url: `https://supabase.com${basePath}/images/blog/${ props.blog.image ? props.blog.image : props.blog.thumb }`, + alt: `${props.blog.title} thumbnail`, }, ], }} diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index f5333d175a5..d84e6214071 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -11,7 +11,7 @@ https://supabase.com/blog/slack-consolidate-slackbot-to-consolidate-messages Slack Consolidate: a slackbot built with Python and Supabase https://supabase.com/blog/slack-consolidate-slackbot-to-consolidate-messages - Different approaches for tracking visitor counts with PostgreSQL. + A slackbot to consolidate messages from different channels using Supabase, Slack SDK and Python Mon, 08 Aug 2022 03:03:00 From 5bf0c934d27649224d63032ccef13015fb30ad80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Wed, 10 Aug 2022 15:31:01 +0100 Subject: [PATCH 94/97] Changed date. --- ...ch-week-5-hackathon => 2022-08-10-launch-week-5-hackathon} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename apps/www/_blog/{2022-08-08-launch-week-5-hackathon => 2022-08-10-launch-week-5-hackathon} (98%) diff --git a/apps/www/_blog/2022-08-08-launch-week-5-hackathon b/apps/www/_blog/2022-08-10-launch-week-5-hackathon similarity index 98% rename from apps/www/_blog/2022-08-08-launch-week-5-hackathon rename to apps/www/_blog/2022-08-10-launch-week-5-hackathon index 6fd9c80826d..b41f8c73060 100644 --- a/apps/www/_blog/2022-08-08-launch-week-5-hackathon +++ b/apps/www/_blog/2022-08-10-launch-week-5-hackathon @@ -6,7 +6,7 @@ image: lw5-hackathon/thumb.png thumb: lw5-hackathon/thumb.png tags: - launch-week -date: '2022-08-08' +date: '2022-08-10' toc_depth: 3 --- @@ -47,7 +47,7 @@ There's a $1500 GitHub sponsorship and [gold Supabase caps](https://store.supaba ### Schedule -- The Hackathon begins **NOW**! (8:00am PT Friday 12th August 2022) +- The Hackathon begins at 8:00am PT Friday 12th August 2022 - Work on your project any time for the next 10 days - Submission deadline (11:59pm PT Sunday 21st August 2021) - Winners Announced (10pm PT Monday 22nd August 2022) From 603eb020e4dc573e992efc4e1beb436b46f9a9ad Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 10 Aug 2022 12:23:27 -0230 Subject: [PATCH 95/97] Allows producthunt as an image source, dangerously-Allows-SVG --- apps/www/next.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/www/next.config.js b/apps/www/next.config.js index b3592d6bf27..669d2505efb 100644 --- a/apps/www/next.config.js +++ b/apps/www/next.config.js @@ -6,6 +6,7 @@ module.exports = withMDX({ trailingSlash: false, images: { + dangerouslyAllowSVG: true, domains: [ 'avatars.githubusercontent.com', 'github.com', @@ -16,6 +17,7 @@ module.exports = withMDX({ 'obuldanrptloktxcffvn.supabase.co', 'avatars.githubusercontent.com', 'colab.research.google.com', + 'api.producthunt.com', ], }, async headers() { From e78c954c90cadfc4b2234660f2c0182278a7bf2b Mon Sep 17 00:00:00 2001 From: awalias Date: Wed, 10 Aug 2022 11:44:53 -0600 Subject: [PATCH 96/97] chore: adds hackathon thumb --- .../_blog/2022-08-08-launch-week-5-hackathon | 4 ++-- .../images/blog/lw5-hackathon/thumbnail.jpg | Bin 0 -> 238619 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 apps/www/public/images/blog/lw5-hackathon/thumbnail.jpg diff --git a/apps/www/_blog/2022-08-08-launch-week-5-hackathon b/apps/www/_blog/2022-08-08-launch-week-5-hackathon index f6f902628cb..1c848a59703 100644 --- a/apps/www/_blog/2022-08-08-launch-week-5-hackathon +++ b/apps/www/_blog/2022-08-08-launch-week-5-hackathon @@ -2,8 +2,8 @@ title: 'Launch Week 5 Hackathon' description: Build to win $1500 - Friday 12th to Monday 21st August 2022 author: ant_wilson -image: lw5-hackathon/thumb.png -thumb: lw5-hackathon/thumb.png +image: lw5-hackathon/thumbnail.jpg +thumb: lw5-hackathon/thumbnail.jpg tags: - launch-week date: '2022-08-08' diff --git a/apps/www/public/images/blog/lw5-hackathon/thumbnail.jpg b/apps/www/public/images/blog/lw5-hackathon/thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9379f38bf9158b5f66caf9313ea2378f00cb0b68 GIT binary patch literal 238619 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�~_rj{59Z+dlZq*r=o;RL)fIJf$i~57Y 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�dV<7# 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 Date: Wed, 10 Aug 2022 12:04:35 -0600 Subject: [PATCH 97/97] fix: hackathon blog --- ...=> 2022-08-10-launch-week-5-hackathon.mdx} | 33 +++---------------- apps/www/public/rss.xml | 4 +-- 2 files changed, 6 insertions(+), 31 deletions(-) rename apps/www/_blog/{2022-08-10-launch-week-5-hackathon => 2022-08-10-launch-week-5-hackathon.mdx} (70%) diff --git a/apps/www/_blog/2022-08-10-launch-week-5-hackathon b/apps/www/_blog/2022-08-10-launch-week-5-hackathon.mdx similarity index 70% rename from apps/www/_blog/2022-08-10-launch-week-5-hackathon rename to apps/www/_blog/2022-08-10-launch-week-5-hackathon.mdx index 8d0ad749add..2b3243dfb86 100644 --- a/apps/www/_blog/2022-08-10-launch-week-5-hackathon +++ b/apps/www/_blog/2022-08-10-launch-week-5-hackathon.mdx @@ -50,7 +50,6 @@ There's a $1500 GitHub sponsorship and [gold Supabase caps](https://store.supaba - The Hackathon begins at 8:00am PT Friday 12th August 2022 - Work on your project any time for the next 10 days - Submission deadline (11:59pm PT Sunday 21st August 2021) -- Winners Announced (10pm PT Monday 22nd August 2022) ### Prizes @@ -61,6 +60,7 @@ There are 5 chances to win, there will be prizes for: - Most Technically Impressive (Gold Cap) - Most Fun/Interesting (Gold Cap) - Best Flutter Project (Gold Cap) +- *new* Best Realtime Project (Gold Cap) There will be a winner and a runner-up prize for each category. Every team member gets a cap. @@ -68,20 +68,7 @@ There will be a winner and a runner-up prize for each category. Every team membe ### Submission -You should submit your project using [this form](https://forms.gle/erYrSFKSErKVBFFC8). - -You will be asked to send a link to a GitHub (or similar) repo, in the README you should include: - -- link to hosted demo (if applicable) -- list of team members GitHub handles (and Twitter if they have one) -- any demo videos, instructions, or memes -- a brief description of how you used Supabase: - - to store data? - - realtime? - - auth? - - storage? -- any other info you want the judges to know (motivations/ideas/process) -- optional team photo +You should submit your project using [this form](https://www.madewithsupabase.com/submission). ### Judges @@ -120,21 +107,9 @@ If you need help or advice when building, find other people to join your team, o ![Discord Hangout](/images/blog/hackathon/community.png) -### Guides +### Launch Week -Here's a collection of resources that will help you get started building with Supabase: - -- [Examples and Resources](/docs/guides/examples) -- [Supabase Crash Course](https://www.youtube.com/watch?v=7uKQBl9uZ00) [video] -- [Flutter Quickstart Guide](/docs/guides/with-flutter) -- [Nextjs Quickstart Guide](/docs/guides/with-nextjs) -- [Using Supabase inside Replit](/blog/using-supabase-replit) -- [Full Stack Development with Next.js and Supabase – The Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-full-stack-development-with-supabas/) -- [Auth Deep Dive - Learn everything there is to know about Supabase Auth](/docs/learn/auth-deep-dive/auth-deep-dive-jwts) [videos] -- [Send SMS notifications using Twilio](https://www.twilio.com/blog/send-sms-notifications-supabase-users-node-js-twilio-messaging) -- [How to Integrate Supabase in Your Ionic App](https://www.youtube.com/watch?v=pl9XfIWutKE) [video] -- [Building a Slack clone with authentication and realtime data syncing using Supabase](https://www.youtube.com/watch?v=LUMxJ4w-MUU) [video] -- [Creating Protected Routes In NextJS With Supabase](https://aboutmonica.com/blog/creating-protected-routes-in-next-js-with-supabase) +Don't forget to checkout the new feature's being announced as part of [Launch Week](/launch-week). ### Additional Info diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index c4d0211cb69..bee14705d48 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -5,14 +5,14 @@ https://supabase.com Latest news from Supabase en - Sun, 07 Aug 2022 06:06:00 + Tue, 09 Aug 2022 06:06:00 https://supabase.com/blog/launch-week-5-hackathon Launch Week 5 Hackathon https://supabase.com/blog/launch-week-5-hackathon Build to win $1500 - Friday 12th to Monday 21st August 2022 - Sun, 07 Aug 2022 06:06:00 + Tue, 09 Aug 2022 06:06:00 https://supabase.com/blog/supabase-beta-update-july-2022