Skip to content

Commit

Permalink
added admin part
Browse files Browse the repository at this point in the history
  • Loading branch information
siinghd committed Feb 26, 2024
1 parent 2bdb2f1 commit de241a5
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 3 deletions.
27 changes: 27 additions & 0 deletions src/actions/user/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use server';
import db from '@/db';

export const logoutUser = async (email: string, adminPassword: string) => {
if (adminPassword !== process.env.ADMIN_SECRET) {
return { error: 'Unauthorized' };
}

const user = await db.user.findFirst({
where: {
email,
},
});
if (!user) {
return { message: 'User not found' };
}
await db.user.update({
where: {
id: user.id,
},
data: {
token: '',
},
});

return { message: 'User logged out' };
};
63 changes: 63 additions & 0 deletions src/app/admin/user/LogoutUser.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
'use client';
import { logoutUser } from '@/actions/user';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@radix-ui/react-dropdown-menu';
import React from 'react';
import { toast } from 'sonner';

const LogoutUserComp = () => {
const formRef = React.useRef<HTMLFormElement>(null);

const handlLogout = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
const formData = new FormData(e.target as HTMLFormElement);

const email = formData.get('email') as string;
const adminPassword = formData.get('adminPassword') as string;
const res = await logoutUser(email, adminPassword);
toast.info(res.message);
};
return (
<form onSubmit={handlLogout} ref={formRef}>
<div className="w-full max-w-sm rounded-lg border border-gray-200 grid grid-rows-5 shadow-sm dark:border-gray-800">
<div className="p-6 grid gap-2 items-center row-span-3">
<div className="text-3xl font-bold">Logout the user</div>
<div className="text-sm font-medium leading-none text-gray-500 dark:text-gray-400">
Enter the information below to logout the user
</div>
</div>

<div className="p-6 flex items-center row-span-2">
<Label className="sr-only">EMAIL</Label>
<Input
className="w-full"
id="email"
name="email"
placeholder="[email protected]"
style={{
minWidth: '0',
}}
/>
</div>
<div className="p-6 flex items-center row-span-2">
<Label className="sr-only">Admin password</Label>
<Input
className="w-full"
id="adminPassword"
name="adminPassword"
placeholder="Admin password"
style={{
minWidth: '0',
}}
/>
</div>
<div className="p-6 flex items-center justify-center row-span-2">
<Button className="w-full">Logout</Button>
</div>
</div>
</form>
);
};

export default LogoutUserComp;
11 changes: 8 additions & 3 deletions src/app/admin/user/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import React from 'react';
import LogoutUserComp from './LogoutUser';

const page = () => {
return <div>page</div>;
const UserAdminPage = () => {
return (
<div className="flex justify-center h-[100dvh] items-center">
<LogoutUserComp />
</div>
);
};

export default page;
export default UserAdminPage;

0 comments on commit de241a5

Please sign in to comment.