From f9f6ed656ba447bd23158363ac03bd044ce3d5e2 Mon Sep 17 00:00:00 2001 From: Aditya Pawar <34043950+adityapawar1@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:12:28 -0700 Subject: [PATCH] Use rpc to check if password is the same (#80) --- src/app/auth/resetPassword/index.tsx | 7 ++++++- src/queries/profiles.tsx | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/app/auth/resetPassword/index.tsx b/src/app/auth/resetPassword/index.tsx index 024fcf06..19a193bd 100644 --- a/src/app/auth/resetPassword/index.tsx +++ b/src/app/auth/resetPassword/index.tsx @@ -10,9 +10,10 @@ import colors from '../../../styles/colors'; import globalStyles from '../../../styles/globalStyles'; import { useSession } from '../../../utils/AuthContext'; import PasswordComplexityText from '../../../components/PasswordComplexityText/PasswordComplexityText'; +import { isPasswordSameAsBefore } from '../../../queries/profiles'; function ResetPasswordScreen() { - const { updateUser, signOut } = useSession(); + const { session, updateUser, signOut } = useSession(); const [password, setPassword] = useState(''); const [passwordTextHidden, setPasswordTextHidden] = useState(true); const [confirmPassword, setConfirmPassword] = useState(''); @@ -36,6 +37,9 @@ function ResetPasswordScreen() { const checkPassword = (text: string) => { if (text !== '') { + isPasswordSameAsBefore(text, session?.user?.id).then(isSame => + setIsDifferent(!isSame), + ); setHasUppercase(text !== text.toLowerCase()); setHasLowercase(text !== text.toUpperCase()); setHasNumber(/[0-9]/.test(text)); @@ -70,6 +74,7 @@ function ResetPasswordScreen() { const { error } = await updateUser({ password }); if (error) { + console.error(error); Alert.alert('Updating password failed'); } else { await signOut(); diff --git a/src/queries/profiles.tsx b/src/queries/profiles.tsx index 7bc979aa..dfdaea4c 100644 --- a/src/queries/profiles.tsx +++ b/src/queries/profiles.tsx @@ -25,3 +25,20 @@ export async function isEmailTaken(newEmail: string) { const emailIsTaken = (count ?? 0) >= 1; return emailIsTaken as boolean; } + +export async function isPasswordSameAsBefore( + new_plain_password: string, + user_id: string | undefined, +): Promise { + let { data, error } = await supabase.rpc('check_same_as_old_pass', { + new_plain_password, + user_id, + }); + + if (error) { + console.error(error); + return false; + } else { + return data; + } +}