shellphone.app/app/features/auth/actions/sign-in.ts

24 lines
894 B
TypeScript
Raw Normal View History

2022-05-14 10:22:06 +00:00
import { type ActionFunction, json } from "@remix-run/node";
import { SignIn } from "../validations";
import { type FormError, validate } from "~/utils/validation.server";
import { authenticate } from "~/utils/auth.server";
export type SignInActionData = { errors: FormError<typeof SignIn> };
const action: ActionFunction = async ({ request }) => {
const formData = Object.fromEntries(await request.clone().formData());
const validation = validate(SignIn, formData);
if (validation.errors) {
return json<SignInActionData>({ errors: validation.errors });
}
const searchParams = new URL(request.url).searchParams;
const redirectTo = searchParams.get("redirectTo");
2022-05-19 22:29:12 +00:00
const successRedirect = redirectTo ? decodeURIComponent(redirectTo) : null;
2022-05-14 10:22:06 +00:00
const { email, password } = validation.data;
2022-05-19 22:29:12 +00:00
return authenticate({ email, password, request, successRedirect });
2022-05-14 10:22:06 +00:00
};
export default action;