Update user authentication and sidebar config

This commit involves improving the user authentication process in the billing and accounts pages for better reliability. It also changes the name of 'organization-account-sidebar.config' to 'team-account-sidebar.config' for improved clarity and consistency.
This commit is contained in:
giancarlo
2024-03-28 21:30:12 +08:00
parent 348eec8495
commit efd2a757ff
10 changed files with 69 additions and 40 deletions

View File

@@ -3,7 +3,7 @@
import { SidebarDivider, SidebarGroup, SidebarItem } from '@kit/ui/sidebar';
import { Trans } from '@kit/ui/trans';
import { getOrganizationAccountSidebarConfig } from '~/config/organization-account-sidebar.config';
import { getOrganizationAccountSidebarConfig } from '~/config/team-account-sidebar.config';
export function AppSidebarNavigation({
account,

View File

@@ -24,8 +24,8 @@ import {
import { Trans } from '@kit/ui/trans';
import featureFlagsConfig from '~/config/feature-flags.config';
import { getOrganizationAccountSidebarConfig } from '~/config/organization-account-sidebar.config';
import pathsConfig from '~/config/paths.config';
import { getOrganizationAccountSidebarConfig } from '~/config/team-account-sidebar.config';
const features = {
enableTeamAccounts: featureFlagsConfig.enableTeamAccounts,

View File

@@ -1,5 +1,8 @@
import { SupabaseClient } from '@supabase/supabase-js';
import { PlusCircle } from 'lucide-react';
import { Database } from '@kit/supabase/database';
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
import {
AccountInvitationsTable,
@@ -26,9 +29,20 @@ interface Params {
};
}
async function loadAccountMembers(account: string) {
const client = getSupabaseServerComponentClient();
async function loadUser(client: SupabaseClient<Database>) {
const { data, error } = await client.auth.getUser();
if (error) {
throw error;
}
return data.user;
}
async function loadAccountMembers(
client: SupabaseClient<Database>,
account: string,
) {
const { data, error } = await client.rpc('get_account_members', {
account_slug: account,
});
@@ -41,9 +55,10 @@ async function loadAccountMembers(account: string) {
return data ?? [];
}
async function loadInvitations(account: string) {
const client = getSupabaseServerComponentClient();
async function loadInvitations(
client: SupabaseClient<Database>,
account: string,
) {
const { data, error } = await client.rpc('get_account_invitations', {
account_slug: account,
});
@@ -56,14 +71,22 @@ async function loadInvitations(account: string) {
return data ?? [];
}
async function TeamAccountMembersPage({ params }: Params) {
const slug = params.account;
const [{ account, user }, members, invitations] = await Promise.all([
async function loadData(client: SupabaseClient<Database>, slug: string) {
return Promise.all([
loadTeamWorkspace(slug),
loadAccountMembers(slug),
loadInvitations(slug),
loadAccountMembers(client, slug),
loadInvitations(client, slug),
loadUser(client),
]);
}
async function TeamAccountMembersPage({ params }: Params) {
const client = getSupabaseServerComponentClient();
const [{ account }, members, invitations, user] = await loadData(
client,
params.account,
);
const canManageRoles = account.permissions.includes('roles.manage');
const isPrimaryOwner = account.primary_owner_user_id === user.id;