}) => {
const searchParams = await props.searchParams;
+ const user = await getUser();
+ if (user.success) redirect('/profile');
if ('message' in searchParams) {
return (
{
);
};
-export const resetPassword = async (formData: FormData) => {
- const supabase = await createServerClient();
- const password = formData.get('password') as string;
- const confirmPassword = formData.get('confirmPassword') as string;
+export const resetPassword = async (
+ formData: FormData | {password: string, confirmPassword: string}
+) => {
+ let password = '';
+ let confirmPassword = '';
+
+ if (formData instanceof FormData) {
+ password = formData.get('password') as string;
+ confirmPassword = formData.get('confirmPassword') as string;
+ } else {
+ password = formData.password;
+ confirmPassword = formData.confirmPassword;
+ }
+
if (!password || !confirmPassword) {
encodedRedirect(
'error',
@@ -118,6 +128,39 @@ export const resetPassword = async (formData: FormData) => {
);
}
+ const supabase = await createServerClient();
+
+ if (password !== confirmPassword) {
+ encodedRedirect('error', '/reset-password', 'Passwords do not match');
+ }
+
+ const { error } = await supabase.auth.updateUser({
+ password: password,
+ });
+
+ if (error) {
+ encodedRedirect('error', '/reset-password', 'Password update failed');
+ }
+
+ encodedRedirect('success', '/reset-password', 'Password updated');
+};
+
+
+export const resetPasswordFromEmail = async (formData: FormData) => {
+
+ const password = formData.get('password') as string;
+ const confirmPassword = formData.get('confirmPassword') as string;
+
+ if (!password || !confirmPassword) {
+ encodedRedirect(
+ 'error',
+ '/reset-password',
+ 'Password and confirm password are required',
+ );
+ }
+
+ const supabase = await createServerClient();
+
if (password !== confirmPassword) {
encodedRedirect('error', '/reset-password', 'Passwords do not match');
}
diff --git a/src/utils/supabase/index.ts b/src/utils/supabase/index.ts
index 4ba781d..4e8f72f 100644
--- a/src/utils/supabase/index.ts
+++ b/src/utils/supabase/index.ts
@@ -1,5 +1,5 @@
export { createClient } from './client';
-export { createClient as createServerClient } from './server';
+export { createServerClient } from './server';
export { updateSession } from './middleware';
export type * from './utils';
export type { Database } from './types';
diff --git a/src/utils/supabase/server.ts b/src/utils/supabase/server.ts
index f5efed2..7d3ce88 100644
--- a/src/utils/supabase/server.ts
+++ b/src/utils/supabase/server.ts
@@ -1,11 +1,11 @@
-import { createServerClient } from '@supabase/ssr';
+import { createServerClient as CreateServerClient } from '@supabase/ssr';
import type { Database } from '@/utils/supabase/types';
import { cookies } from 'next/headers';
-export const createClient = async () => {
+export const createServerClient = async () => {
const cookieStore = await cookies();
- return createServerClient(
+ return CreateServerClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
{