Refactor team accounts feature and improve form validation

Updated several components within the team accounts feature to use more specific schema definitions and provide clearer form validation. Several schema files were renamed to better reflect their usage and additional properties were included. The commit also introduces handling for a new accountId property, which provides more accurate user account tracking. Autocomplete was turned off on deletion actions for better security. Changes related to account ownership transfer were also made, including transaction logging and error handling improvements.
This commit is contained in:
giancarlo
2024-03-29 17:39:35 +08:00
parent 9e06d420bd
commit af908ae685
17 changed files with 995 additions and 887 deletions

View File

@@ -1,5 +1,5 @@
import { z } from 'zod';
export const DeleteTeamAccountSchema = z.object({
accountId: z.string(),
accountId: z.string().uuid(),
});

View File

@@ -1,10 +1,8 @@
import { z } from 'zod';
type Role = string;
const InviteSchema = z.object({
email: z.string().email(),
role: z.custom<Role>(() => z.string().min(1)),
role: z.string().min(1),
});
export const InviteMembersSchema = z

View File

@@ -0,0 +1,6 @@
import { z } from 'zod';
export const RemoveMemberSchema = z.object({
accountId: z.string().uuid(),
userId: z.string().uuid(),
});

View File

@@ -2,11 +2,8 @@ import { z } from 'zod';
const confirmationString = 'TRANSFER';
export const TransferOwnershipConfirmationSchema = z
.object({
confirmation: z.string(),
})
.refine((data) => data.confirmation === confirmationString, {
message: `Confirmation must be ${confirmationString}`,
path: ['confirmation'],
});
export const TransferOwnershipConfirmationSchema = z.object({
userId: z.string().uuid(),
confirmation: z.custom((value) => value === confirmationString),
accountId: z.string().uuid(),
});

View File

@@ -0,0 +1,10 @@
import { z } from 'zod';
export const RoleSchema = z.object({
role: z.string().min(1),
});
export const UpdateMemberRoleSchema = RoleSchema.extend({
accountId: z.string().uuid(),
userId: z.string().uuid(),
});

View File

@@ -1,5 +0,0 @@
import { z } from 'zod';
export const UpdateRoleSchema = z.object({
role: z.string().min(1),
});