feat: add delete user
This commit is contained in:
parent
4746374ce4
commit
caaefa72c5
11
app/routes/account/delete.tsx
Normal file
11
app/routes/account/delete.tsx
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import type { ActionFunction, LoaderFunction } from "remix";
|
||||||
|
import { redirect } from "remix";
|
||||||
|
import { deleteUser } from "~/utils/session.server";
|
||||||
|
|
||||||
|
export const action: ActionFunction = async ({ request }) => {
|
||||||
|
return deleteUser(request);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const loader: LoaderFunction = async () => {
|
||||||
|
return redirect("/");
|
||||||
|
};
|
||||||
|
|
@ -353,6 +353,34 @@ export default function AccountPreferencesRoute() {
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
|
|
||||||
|
<div className="flex justify-center align-center mt-6">
|
||||||
|
<label
|
||||||
|
htmlFor="delete-user-modal"
|
||||||
|
className="btn btn-error modal-button"
|
||||||
|
>
|
||||||
|
Delete user
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="delete-user-modal" className="modal-toggle" />
|
||||||
|
<div className="modal">
|
||||||
|
<div className="modal-box absolute left-[10%] right-[10%] top-[40%] w-[80%] rounded-lg">
|
||||||
|
<p>
|
||||||
|
Do you really want to delete your account? All your data will be
|
||||||
|
permanently deleted.
|
||||||
|
</p>
|
||||||
|
<div className="modal-action">
|
||||||
|
<Form action="/account/delete" method="post">
|
||||||
|
<button type="submit" className="btn btn-error">
|
||||||
|
Delete
|
||||||
|
</button>
|
||||||
|
</Form>
|
||||||
|
<label htmlFor="delete-user-modal" className="btn">
|
||||||
|
Cancel
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,21 @@ export async function updateUser({ id, ...data }: UpdateUserForm) {
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function deleteUser(request: Request) {
|
||||||
|
const userId = await getUserId(request);
|
||||||
|
if (!userId) return null;
|
||||||
|
|
||||||
|
const deletedUser = await db.user.delete({ where: { id: userId } });
|
||||||
|
if (!deletedUser) return null;
|
||||||
|
|
||||||
|
const session = await storage.getSession(request.headers.get("Cookie"));
|
||||||
|
return redirect("/", {
|
||||||
|
headers: {
|
||||||
|
"Set-Cookie": await storage.destroySession(session),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export async function login({ username, password }: LoginForm) {
|
export async function login({ username, password }: LoginForm) {
|
||||||
const user = await db.user.findUnique({
|
const user = await db.user.findUnique({
|
||||||
where: { username },
|
where: { username },
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue