B2B-30: adds personal code to account, company admins invites members

This commit is contained in:
devmc-ee
2025-06-22 15:22:07 +03:00
parent 39c02c6d34
commit 251f2a4ef1
50 changed files with 3546 additions and 2611 deletions

View File

@@ -30,6 +30,7 @@ interface PasswordSignUpFormProps {
displayTermsCheckbox?: boolean;
onSubmit: (params: {
personalCode: string;
email: string;
password: string;
repeatPassword: string;
@@ -48,6 +49,7 @@ export function PasswordSignUpForm({
const form = useForm({
resolver: zodResolver(PasswordSignUpSchema),
defaultValues: {
personalCode: '',
email: defaultValues?.email ?? '',
password: '',
repeatPassword: '',
@@ -60,6 +62,29 @@ export function PasswordSignUpForm({
className={'flex w-full flex-col gap-y-4'}
onSubmit={form.handleSubmit(onSubmit)}
>
<FormField
control={form.control}
name={'personalCode'}
render={({ field }) => (
<FormItem>
<FormLabel>
<Trans i18nKey={'common:personalCode'} />
</FormLabel>
<FormControl>
<Input
data-test={'personal-code-input'}
required
type="text"
placeholder={t('personalCodePlaceholder')}
{...field}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name={'email'}

View File

@@ -11,6 +11,7 @@ import { Trans } from '@kit/ui/trans';
import { MagicLinkAuthContainer } from './magic-link-auth-container';
import { OauthProviders } from './oauth-providers';
import { EmailPasswordSignUpContainer } from './password-sign-up-container';
import { redirect } from 'next/navigation';
export function SignUpMethodsContainer(props: {
paths: {
@@ -41,6 +42,7 @@ export function SignUpMethodsContainer(props: {
emailRedirectTo={redirectUrl}
defaultValues={defaultValues}
displayTermsCheckbox={props.displayTermsCheckbox}
onSignUp={() => redirect(redirectUrl)}
/>
</If>

View File

@@ -8,6 +8,7 @@ import { useAppEvents } from '@kit/shared/events';
import { useSignUpWithEmailAndPassword } from '@kit/supabase/hooks/use-sign-up-with-email-password';
type SignUpCredentials = {
personalCode: string;
email: string;
password: string;
};
@@ -46,7 +47,6 @@ export function usePasswordSignUpFlow({
emailRedirectTo,
captchaToken,
});
// emit event to track sign up
appEvents.emit({
type: 'user.signedUp',

View File

@@ -4,6 +4,9 @@ import { RefinedPasswordSchema, refineRepeatPassword } from './password.schema';
export const PasswordSignUpSchema = z
.object({
personalCode: z.string().regex(/^[1-6]\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}\d$/, {
message: 'Invalid Estonian personal code format',
}),
email: z.string().email(),
password: RefinedPasswordSchema,
repeatPassword: RefinedPasswordSchema,