Implement Login

This commit is contained in:
Sianida26 2024-01-07 19:17:40 +07:00
parent 0658d110ba
commit 90b36929dc
8 changed files with 334 additions and 262 deletions

4
.env
View File

@ -1 +1,3 @@
DATABASE_URL="mysql://root:root@localhost:3306/dashboard?schema=public"
DATABASE_URL=
NEXTAUTH_SECRET=

View File

@ -9,26 +9,26 @@
"lint": "next lint"
},
"dependencies": {
"@mantine/core": "^7.3.2",
"@mantine/form": "^7.3.2",
"@mantine/hooks": "^7.3.2",
"@mantine/core": "^7.4.0",
"@mantine/form": "^7.4.0",
"@mantine/hooks": "^7.4.0",
"next": "14.0.4",
"next-auth": "^4.24.5",
"react": "^18",
"react-dom": "^18"
"next-auth": "beta",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"autoprefixer": "^10.0.1",
"eslint": "^8",
"@types/node": "^20.10.6",
"@types/react": "^18.2.47",
"@types/react-dom": "^18.2.18",
"autoprefixer": "^10.4.16",
"eslint": "^8.56.0",
"eslint-config-next": "14.0.4",
"postcss": "^8.4.32",
"postcss-preset-mantine": "^1.12.1",
"postcss": "^8.4.33",
"postcss-preset-mantine": "^1.12.3",
"postcss-simple-vars": "^7.0.1",
"prisma": "^5.7.1",
"tailwindcss": "^3.3.0",
"typescript": "^5"
"tailwindcss": "^3.4.1",
"typescript": "^5.3.3"
}
}

View File

@ -6,63 +6,63 @@ settings:
dependencies:
'@mantine/core':
specifier: ^7.3.2
version: 7.3.2(@mantine/hooks@7.3.2)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
specifier: ^7.4.0
version: 7.4.0(@mantine/hooks@7.4.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0)
'@mantine/form':
specifier: ^7.3.2
version: 7.3.2(react@18.2.0)
specifier: ^7.4.0
version: 7.4.0(react@18.2.0)
'@mantine/hooks':
specifier: ^7.3.2
version: 7.3.2(react@18.2.0)
specifier: ^7.4.0
version: 7.4.0(react@18.2.0)
next:
specifier: 14.0.4
version: 14.0.4(react-dom@18.2.0)(react@18.2.0)
next-auth:
specifier: ^4.24.5
version: 4.24.5(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)
specifier: beta
version: 5.0.0-beta.4(next@14.0.4)(react@18.2.0)
react:
specifier: ^18
specifier: ^18.2.0
version: 18.2.0
react-dom:
specifier: ^18
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
devDependencies:
'@types/node':
specifier: ^20
version: 20.10.5
specifier: ^20.10.6
version: 20.10.6
'@types/react':
specifier: ^18
version: 18.2.45
specifier: ^18.2.47
version: 18.2.47
'@types/react-dom':
specifier: ^18
specifier: ^18.2.18
version: 18.2.18
autoprefixer:
specifier: ^10.0.1
version: 10.4.16(postcss@8.4.32)
specifier: ^10.4.16
version: 10.4.16(postcss@8.4.33)
eslint:
specifier: ^8
specifier: ^8.56.0
version: 8.56.0
eslint-config-next:
specifier: 14.0.4
version: 14.0.4(eslint@8.56.0)(typescript@5.3.3)
postcss:
specifier: ^8.4.32
version: 8.4.32
specifier: ^8.4.33
version: 8.4.33
postcss-preset-mantine:
specifier: ^1.12.1
version: 1.12.1(postcss@8.4.32)
specifier: ^1.12.3
version: 1.12.3(postcss@8.4.33)
postcss-simple-vars:
specifier: ^7.0.1
version: 7.0.1(postcss@8.4.32)
version: 7.0.1(postcss@8.4.33)
prisma:
specifier: ^5.7.1
version: 5.7.1
tailwindcss:
specifier: ^3.3.0
version: 3.4.0
specifier: ^3.4.1
version: 3.4.1
typescript:
specifier: ^5
specifier: ^5.3.3
version: 5.3.3
packages:
@ -77,8 +77,24 @@ packages:
engines: {node: '>=10'}
dev: true
/@babel/runtime@7.23.6:
resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
/@auth/core@0.18.4:
resolution: {integrity: sha512-GsNhsP1xE/3FoNS3dVkPjqRljLNJ4iyL2OLv3klQGNvw3bMpROFcK4lqhx7+pPHiamnVaYt2vg1xbB+lsNaevg==}
peerDependencies:
nodemailer: ^6.8.0
peerDependenciesMeta:
nodemailer:
optional: true
dependencies:
'@panva/hkdf': 1.1.1
cookie: 0.6.0
jose: 5.2.0
oauth4webapi: 2.4.3
preact: 10.11.3
preact-render-to-string: 5.2.3(preact@10.11.3)
dev: false
/@babel/runtime@7.23.7:
resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
@ -120,26 +136,30 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@floating-ui/core@1.5.2:
resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==}
/@floating-ui/core@1.5.3(react@18.2.0):
resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==}
dependencies:
'@floating-ui/utils': 0.1.6
'@floating-ui/utils': 0.2.0(react@18.2.0)
transitivePeerDependencies:
- react
dev: false
/@floating-ui/dom@1.5.3:
resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
/@floating-ui/dom@1.5.4(react@18.2.0):
resolution: {integrity: sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==}
dependencies:
'@floating-ui/core': 1.5.2
'@floating-ui/utils': 0.1.6
'@floating-ui/core': 1.5.3(react@18.2.0)
'@floating-ui/utils': 0.2.0(react@18.2.0)
transitivePeerDependencies:
- react
dev: false
/@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==}
/@floating-ui/react-dom@2.0.5(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-UsBK30Bg+s6+nsgblXtZmwHhgS2vmbuQK22qgt2pTQM6M3X6H1+cQcLXqgRY3ihVLcZJE6IvqDQozhsnIVqK/Q==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@floating-ui/dom': 1.5.3
'@floating-ui/dom': 1.5.4(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
@ -150,15 +170,19 @@ packages:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0)
'@floating-ui/react-dom': 2.0.5(react-dom@18.2.0)(react@18.2.0)
aria-hidden: 1.2.3
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
tabbable: 6.2.0
dev: false
/@floating-ui/utils@0.1.6:
resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
/@floating-ui/utils@0.2.0(react@18.2.0):
resolution: {integrity: sha512-T4jNeM6dMzXONGkSjk7+O+eFQTVbw7KHi5OYuvFaBer3Wcrmpwi6fHKcT/FdSf7boWC7H9eXTyYTFZOQdJ1AMA==}
peerDependencies:
react: '>=16.8.0'
dependencies:
react: 18.2.0
dev: false
/@humanwhocodes/config-array@0.11.13:
@ -223,28 +247,28 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
/@mantine/core@7.3.2(@mantine/hooks@7.3.2)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-CwAuQogVLcLR7O9e1eOgi3gtk4XX6cnaqevAxzJJpIOIyCnHiQ3cEGINVXyUUjUUipBlvK3sqz3NPGJ2ekLFDQ==}
/@mantine/core@7.4.0(@mantine/hooks@7.4.0)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-wnQOz1aSpqVlCpdyY4XyJKRqlW87mexMADQrbCTwg/5BbxKp8XU6sTcnk1piwyR0mM6SI1uo0Yik2qYNGFlyWw==}
peerDependencies:
'@mantine/hooks': 7.3.2
'@mantine/hooks': 7.4.0
react: ^18.2.0
react-dom: ^18.2.0
dependencies:
'@floating-ui/react': 0.24.8(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 7.3.2(react@18.2.0)
'@mantine/hooks': 7.4.0(react@18.2.0)
clsx: 2.0.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-number-format: 5.3.1(react-dom@18.2.0)(react@18.2.0)
react-remove-scroll: 2.5.7(@types/react@18.2.45)(react@18.2.0)
react-textarea-autosize: 8.5.3(@types/react@18.2.45)(react@18.2.0)
react-remove-scroll: 2.5.7(@types/react@18.2.47)(react@18.2.0)
react-textarea-autosize: 8.5.3(@types/react@18.2.47)(react@18.2.0)
type-fest: 3.13.1
transitivePeerDependencies:
- '@types/react'
dev: false
/@mantine/form@7.3.2(react@18.2.0):
resolution: {integrity: sha512-/qa1KQKVC46XWgIU190r3XM3Xld8Lsvz4L/an//TO67RnAGEdC5OCvr2JCb+fprZZi3YdxaKOkVNvP20W23qkg==}
/@mantine/form@7.4.0(react@18.2.0):
resolution: {integrity: sha512-JI/o2nECWct/Kvn3GF6VplHyJeaLy0q/jGNEB/F4yt12mAYBsux6vPfAhpWrKKZ8Jt31RI+ikn6R4UcY1HGIAw==}
peerDependencies:
react: ^18.2.0
dependencies:
@ -253,8 +277,8 @@ packages:
react: 18.2.0
dev: false
/@mantine/hooks@7.3.2(react@18.2.0):
resolution: {integrity: sha512-xgumuuI3PBWXff5N02HCI7PEy25mDEdyXDQklUYK93J6FKwpcosyZnGVitoUrV1gLtYYa9ZudeAWdhHuh/CpOg==}
/@mantine/hooks@7.4.0(react@18.2.0):
resolution: {integrity: sha512-Swv23D8XmZqE2hohPBcff+ITwv5l8UlwiiEGMhL+ceUvJLnPzdwlW21qnLBtRtZWyQQ59TAav4M0GFGd93JS8Q==}
peerDependencies:
react: ^18.2.0
dependencies:
@ -430,8 +454,8 @@ packages:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
/@types/node@20.10.5:
resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
/@types/node@20.10.6:
resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==}
dependencies:
undici-types: 5.26.5
dev: true
@ -442,11 +466,11 @@ packages:
/@types/react-dom@18.2.18:
resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==}
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
dev: true
/@types/react@18.2.45:
resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==}
/@types/react@18.2.47:
resolution: {integrity: sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==}
dependencies:
'@types/prop-types': 15.7.11
'@types/scheduler': 0.16.8
@ -455,8 +479,8 @@ packages:
/@types/scheduler@0.16.8:
resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
/@typescript-eslint/parser@6.15.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==}
/@typescript-eslint/parser@6.18.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-v6uR68SFvqhNQT41frCMCQpsP+5vySy6IdgjlzUWoo7ALCnpaWYcz/Ij2k4L8cEsL0wkvOviCMpjmtRtHNOKzA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -465,10 +489,10 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.15.0
'@typescript-eslint/types': 6.15.0
'@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.15.0
'@typescript-eslint/scope-manager': 6.18.0
'@typescript-eslint/types': 6.18.0
'@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.18.0
debug: 4.3.4
eslint: 8.56.0
typescript: 5.3.3
@ -476,21 +500,21 @@ packages:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.15.0:
resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==}
/@typescript-eslint/scope-manager@6.18.0:
resolution: {integrity: sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.15.0
'@typescript-eslint/visitor-keys': 6.15.0
'@typescript-eslint/types': 6.18.0
'@typescript-eslint/visitor-keys': 6.18.0
dev: true
/@typescript-eslint/types@6.15.0:
resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==}
/@typescript-eslint/types@6.18.0:
resolution: {integrity: sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/typescript-estree@6.15.0(typescript@5.3.3):
resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==}
/@typescript-eslint/typescript-estree@6.18.0(typescript@5.3.3):
resolution: {integrity: sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -498,11 +522,12 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.15.0
'@typescript-eslint/visitor-keys': 6.15.0
'@typescript-eslint/types': 6.18.0
'@typescript-eslint/visitor-keys': 6.18.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
@ -510,11 +535,11 @@ packages:
- supports-color
dev: true
/@typescript-eslint/visitor-keys@6.15.0:
resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==}
/@typescript-eslint/visitor-keys@6.18.0:
resolution: {integrity: sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.15.0
'@typescript-eslint/types': 6.18.0
eslint-visitor-keys: 3.4.3
dev: true
@ -522,16 +547,16 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
/acorn-jsx@5.3.2(acorn@8.11.2):
/acorn-jsx@5.3.2(acorn@8.11.3):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.11.2
acorn: 8.11.3
dev: true
/acorn@8.11.2:
resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
/acorn@8.11.3:
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
@ -687,7 +712,7 @@ packages:
has-symbols: 1.0.3
dev: true
/autoprefixer@10.4.16(postcss@8.4.32):
/autoprefixer@10.4.16(postcss@8.4.33):
resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
@ -695,11 +720,11 @@ packages:
postcss: ^8.1.0
dependencies:
browserslist: 4.22.2
caniuse-lite: 1.0.30001571
caniuse-lite: 1.0.30001574
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
postcss: 8.4.32
postcss: 8.4.33
postcss-value-parser: 4.2.0
dev: true
@ -753,8 +778,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001571
electron-to-chromium: 1.4.616
caniuse-lite: 1.0.30001574
electron-to-chromium: 1.4.623
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.2)
dev: true
@ -784,8 +809,8 @@ packages:
engines: {node: '>= 6'}
dev: true
/caniuse-lite@1.0.30001571:
resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==}
/caniuse-lite@1.0.30001574:
resolution: {integrity: sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==}
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@ -839,8 +864,8 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
/cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
/cookie@0.6.0:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
dev: false
@ -953,8 +978,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true
/electron-to-chromium@1.4.616:
resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==}
/electron-to-chromium@1.4.623:
resolution: {integrity: sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==}
dev: true
/emoji-regex@8.0.0:
@ -1082,11 +1107,11 @@ packages:
dependencies:
'@next/eslint-plugin-next': 14.0.4
'@rushstack/eslint-patch': 1.6.1
'@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0)
eslint-plugin-react: 7.33.2(eslint@8.56.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0)
@ -1106,7 +1131,7 @@ packages:
- supports-color
dev: true
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0):
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0):
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@ -1116,8 +1141,8 @@ packages:
debug: 4.3.4
enhanced-resolve: 5.15.0
eslint: 8.56.0
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.2
is-core-module: 2.13.1
@ -1129,7 +1154,7 @@ packages:
- supports-color
dev: true
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@ -1150,16 +1175,16 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3)
debug: 3.2.7
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
peerDependencies:
@ -1169,7 +1194,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@ -1178,7 +1203,7 @@ packages:
doctrine: 2.1.0
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.15.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
hasown: 2.0.0
is-core-module: 2.13.1
is-glob: 4.0.3
@ -1200,7 +1225,7 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
'@babel/runtime': 7.23.6
'@babel/runtime': 7.23.7
aria-query: 5.3.0
array-includes: 3.1.7
array.prototype.flatmap: 1.3.2
@ -1317,8 +1342,8 @@ packages:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.11.2
acorn-jsx: 5.3.2(acorn@8.11.2)
acorn: 8.11.3
acorn-jsx: 5.3.2(acorn@8.11.3)
eslint-visitor-keys: 3.4.3
dev: true
@ -1857,8 +1882,8 @@ packages:
hasBin: true
dev: true
/jose@4.15.4:
resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==}
/jose@5.2.0:
resolution: {integrity: sha512-oW3PCnvyrcm1HMvGTzqjxxfnEs9EoFOFWi2HsEGhlFVOXxTE3K9GKWVMFoFw06yPUqwpvEWic1BmtUZBI/tIjw==}
dev: false
/js-tokens@4.0.0:
@ -1971,6 +1996,7 @@ packages:
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
dev: true
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
@ -2032,29 +2058,19 @@ packages:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
/next-auth@4.24.5(next@14.0.4)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-3RafV3XbfIKk6rF6GlLE4/KxjTcuMCifqrmD+98ejFq73SRoj2rmzoca8u764977lH/Q7jo6Xu6yM+Re1Mz/Og==}
/next-auth@5.0.0-beta.4(next@14.0.4)(react@18.2.0):
resolution: {integrity: sha512-vgocjvwPA8gxd/zrIP/vr9lJ/HeNe+C56lPP1D3sdyenHt8KncQV6ro7q0xCsDp1fcOKx7WAWVZH5o8aMxDzgw==}
peerDependencies:
next: ^12.2.5 || ^13 || ^14
next: ^14
nodemailer: ^6.6.5
react: ^17.0.2 || ^18
react-dom: ^17.0.2 || ^18
react: ^18.2.0
peerDependenciesMeta:
nodemailer:
optional: true
dependencies:
'@babel/runtime': 7.23.6
'@panva/hkdf': 1.1.1
cookie: 0.5.0
jose: 4.15.4
'@auth/core': 0.18.4
next: 14.0.4(react-dom@18.2.0)(react@18.2.0)
oauth: 0.9.15
openid-client: 5.6.2
preact: 10.19.3
preact-render-to-string: 5.2.6(preact@10.19.3)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
uuid: 8.3.2
dev: false
/next@14.0.4(react-dom@18.2.0)(react@18.2.0):
@ -2075,7 +2091,7 @@ packages:
'@next/env': 14.0.4
'@swc/helpers': 0.5.2
busboy: 1.6.0
caniuse-lite: 1.0.30001571
caniuse-lite: 1.0.30001574
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.2.0
@ -2111,19 +2127,14 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/oauth@0.9.15:
resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==}
/oauth4webapi@2.4.3:
resolution: {integrity: sha512-mvJqgWMhUUPrKWOikSVA9s3SssYNgxOlyebV4m69rLMUv+EOoLATLxHr+RX9gDCaweiPxr0NhQplYxInFCdLjw==}
dev: false
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
/object-hash@2.2.0:
resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
engines: {node: '>= 6'}
dev: false
/object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
@ -2191,26 +2202,12 @@ packages:
es-abstract: 1.22.3
dev: true
/oidc-token-hash@5.0.3:
resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==}
engines: {node: ^10.13.0 || >=12.0.0}
dev: false
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
/openid-client@5.6.2:
resolution: {integrity: sha512-TIVimoK/fAvpiISLcoGZyNJx2TOfd5AE6TXn58FFj6Y8qbU/jqky54Aws7sYKuCph1bLPWSRUa1r/Rd6K21bhg==}
dependencies:
jose: 4.15.4
lru-cache: 6.0.0
object-hash: 2.2.0
oidc-token-hash: 5.0.3
dev: false
/optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
@ -2294,29 +2291,29 @@ packages:
engines: {node: '>= 6'}
dev: true
/postcss-import@15.1.0(postcss@8.4.32):
/postcss-import@15.1.0(postcss@8.4.33):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.32
postcss: 8.4.33
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
dev: true
/postcss-js@4.0.1(postcss@8.4.32):
/postcss-js@4.0.1(postcss@8.4.33):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.32
postcss: 8.4.33
dev: true
/postcss-load-config@4.0.2(postcss@8.4.32):
/postcss-load-config@4.0.2(postcss@8.4.33):
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
@ -2329,58 +2326,58 @@ packages:
optional: true
dependencies:
lilconfig: 3.0.0
postcss: 8.4.32
postcss: 8.4.33
yaml: 2.3.4
dev: true
/postcss-mixins@9.0.4(postcss@8.4.32):
/postcss-mixins@9.0.4(postcss@8.4.33):
resolution: {integrity: sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==}
engines: {node: '>=14.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
fast-glob: 3.3.2
postcss: 8.4.32
postcss-js: 4.0.1(postcss@8.4.32)
postcss-simple-vars: 7.0.1(postcss@8.4.32)
sugarss: 4.0.1(postcss@8.4.32)
postcss: 8.4.33
postcss-js: 4.0.1(postcss@8.4.33)
postcss-simple-vars: 7.0.1(postcss@8.4.33)
sugarss: 4.0.1(postcss@8.4.33)
dev: true
/postcss-nested@6.0.1(postcss@8.4.32):
/postcss-nested@6.0.1(postcss@8.4.33):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.0.13
postcss: 8.4.33
postcss-selector-parser: 6.0.15
dev: true
/postcss-preset-mantine@1.12.1(postcss@8.4.32):
resolution: {integrity: sha512-N1biscmlvJHYPWN6znrlFre80wh9baAaMETfERn8acQJykioGYmHIJLpQSwUSxqq/PG8QbayUyOnHgBV/tsZyA==}
/postcss-preset-mantine@1.12.3(postcss@8.4.33):
resolution: {integrity: sha512-cCwowf20mIyRXnV1cSVoMGfhYgy8ZqFJWsEJthdMZ3n7LijjucE9l/HO47gv5gAtr9nY1MkaEkpWS7ulhSTbSg==}
peerDependencies:
postcss: '>=8.0.0'
dependencies:
postcss: 8.4.32
postcss-mixins: 9.0.4(postcss@8.4.32)
postcss-nested: 6.0.1(postcss@8.4.32)
postcss: 8.4.33
postcss-mixins: 9.0.4(postcss@8.4.33)
postcss-nested: 6.0.1(postcss@8.4.33)
dev: true
/postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
/postcss-selector-parser@6.0.15:
resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: true
/postcss-simple-vars@7.0.1(postcss@8.4.32):
/postcss-simple-vars@7.0.1(postcss@8.4.33):
resolution: {integrity: sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==}
engines: {node: '>=14.0'}
peerDependencies:
postcss: ^8.2.1
dependencies:
postcss: 8.4.32
postcss: 8.4.33
dev: true
/postcss-value-parser@4.2.0:
@ -2396,8 +2393,8 @@ packages:
source-map-js: 1.0.2
dev: false
/postcss@8.4.32:
resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
/postcss@8.4.33:
resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
@ -2405,17 +2402,17 @@ packages:
source-map-js: 1.0.2
dev: true
/preact-render-to-string@5.2.6(preact@10.19.3):
resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==}
/preact-render-to-string@5.2.3(preact@10.11.3):
resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==}
peerDependencies:
preact: '>=10'
dependencies:
preact: 10.19.3
preact: 10.11.3
pretty-format: 3.8.0
dev: false
/preact@10.19.3:
resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==}
/preact@10.11.3:
resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==}
dev: false
/prelude-ls@1.2.1:
@ -2476,7 +2473,7 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
/react-remove-scroll-bar@2.3.4(@types/react@18.2.45)(react@18.2.0):
/react-remove-scroll-bar@2.3.4(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
engines: {node: '>=10'}
peerDependencies:
@ -2486,13 +2483,13 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
react: 18.2.0
react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.2.0)
tslib: 2.6.2
dev: false
/react-remove-scroll@2.5.7(@types/react@18.2.45)(react@18.2.0):
/react-remove-scroll@2.5.7(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==}
engines: {node: '>=10'}
peerDependencies:
@ -2502,16 +2499,16 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
react: 18.2.0
react-remove-scroll-bar: 2.3.4(@types/react@18.2.45)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0)
react-remove-scroll-bar: 2.3.4(@types/react@18.2.47)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.2.0)
tslib: 2.6.2
use-callback-ref: 1.3.0(@types/react@18.2.45)(react@18.2.0)
use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0)
use-callback-ref: 1.3.1(@types/react@18.2.47)(react@18.2.0)
use-sidecar: 1.1.2(@types/react@18.2.47)(react@18.2.0)
dev: false
/react-style-singleton@2.2.1(@types/react@18.2.45)(react@18.2.0):
/react-style-singleton@2.2.1(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
engines: {node: '>=10'}
peerDependencies:
@ -2521,23 +2518,23 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
get-nonce: 1.0.1
invariant: 2.2.4
react: 18.2.0
tslib: 2.6.2
dev: false
/react-textarea-autosize@8.5.3(@types/react@18.2.45)(react@18.2.0):
/react-textarea-autosize@8.5.3(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
engines: {node: '>=10'}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
'@babel/runtime': 7.23.6
'@babel/runtime': 7.23.7
react: 18.2.0
use-composed-ref: 1.3.0(react@18.2.0)
use-latest: 1.2.1(@types/react@18.2.45)(react@18.2.0)
use-latest: 1.2.1(@types/react@18.2.47)(react@18.2.0)
transitivePeerDependencies:
- '@types/react'
dev: false
@ -2838,13 +2835,13 @@ packages:
ts-interface-checker: 0.1.13
dev: true
/sugarss@4.0.1(postcss@8.4.32):
/sugarss@4.0.1(postcss@8.4.33):
resolution: {integrity: sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.3.3
dependencies:
postcss: 8.4.32
postcss: 8.4.33
dev: true
/supports-color@7.2.0:
@ -2863,8 +2860,8 @@ packages:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
dev: false
/tailwindcss@3.4.0:
resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==}
/tailwindcss@3.4.1:
resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@ -2882,12 +2879,12 @@ packages:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.32
postcss-import: 15.1.0(postcss@8.4.32)
postcss-js: 4.0.1(postcss@8.4.32)
postcss-load-config: 4.0.2(postcss@8.4.32)
postcss-nested: 6.0.1(postcss@8.4.32)
postcss-selector-parser: 6.0.13
postcss: 8.4.33
postcss-import: 15.1.0(postcss@8.4.33)
postcss-js: 4.0.1(postcss@8.4.33)
postcss-load-config: 4.0.2(postcss@8.4.33)
postcss-nested: 6.0.1(postcss@8.4.33)
postcss-selector-parser: 6.0.15
resolve: 1.22.8
sucrase: 3.35.0
transitivePeerDependencies:
@ -3040,8 +3037,8 @@ packages:
punycode: 2.3.1
dev: true
/use-callback-ref@1.3.0(@types/react@18.2.45)(react@18.2.0):
resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==}
/use-callback-ref@1.3.1(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==}
engines: {node: '>=10'}
peerDependencies:
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
@ -3050,7 +3047,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
react: 18.2.0
tslib: 2.6.2
dev: false
@ -3063,7 +3060,7 @@ packages:
react: 18.2.0
dev: false
/use-isomorphic-layout-effect@1.1.2(@types/react@18.2.45)(react@18.2.0):
/use-isomorphic-layout-effect@1.1.2(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
peerDependencies:
'@types/react': '*'
@ -3072,11 +3069,11 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
react: 18.2.0
dev: false
/use-latest@1.2.1(@types/react@18.2.45)(react@18.2.0):
/use-latest@1.2.1(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
peerDependencies:
'@types/react': '*'
@ -3085,12 +3082,12 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
react: 18.2.0
use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.45)(react@18.2.0)
use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.47)(react@18.2.0)
dev: false
/use-sidecar@1.1.2(@types/react@18.2.45)(react@18.2.0):
/use-sidecar@1.1.2(@types/react@18.2.47)(react@18.2.0):
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
engines: {node: '>=10'}
peerDependencies:
@ -3100,7 +3097,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@types/react': 18.2.45
'@types/react': 18.2.47
detect-node-es: 1.1.0
react: 18.2.0
tslib: 2.6.2
@ -3110,11 +3107,6 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
/uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
dev: false
/watchpack@2.4.0:
resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
engines: {node: '>=10.13.0'}
@ -3203,6 +3195,7 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}

View File

@ -1,5 +1,7 @@
"use client";
import { auth } from "@/features/auth";
import { signIn } from "next-auth/react";
import {
Paper,
PasswordInput,
@ -13,21 +15,40 @@ import {
import { useForm } from "@mantine/form";
import React from "react";
interface LoginFormType {
email: string,
password: string
}
export default function LoginPage() {
const form = useForm({
const form = useForm<LoginFormType>({
initialValues: {
email: "",
password: "",
},
});
const handleFormSubmit = async (values: LoginFormType) => {
await signIn("credentials", {
email: values.email,
password: values.password,
callbackUrl: "/"
})
}
// const session = await auth()
// const user = session?.user;
// console.log("session", session)
// console.log("user",user);
return (
<div className="w-screen h-screen flex items-center justify-center">
<Paper radius="md" p="xl" withBorder w={400}>
<Text size="lg" fw={500} mb={30}>
Welcome
</Text>
<form>
<form onSubmit={form.onSubmit(handleFormSubmit)}>
<Stack>
<TextInput
label="Email"
@ -53,7 +74,7 @@ export default function LoginPage() {
// onClick={() => toggle()}
size="xs"
>
Don't have an account? Register
Don&apos;t have an account? Register
</Anchor>
<Button type="submit" radius="xl">

View File

@ -1,3 +1 @@
import authHandler from "@/features/auth"
export {authHandler as GET, authHandler as POST}
export {GET, POST} from "@/features/auth"

View File

@ -0,0 +1,17 @@
import { auth } from '@/features/auth'
import React from 'react'
export default async function Dashboard() {
const session = await auth();
const user = session?.user;
console.log("session", session);
console.log("user", user);
return (
<div>Dashbaord</div>
)
}

View File

@ -1,31 +1,37 @@
import NextAuth from "next-auth/next";
import CredentialsProvider from "next-auth/providers/credentials"
import NextAuth from "next-auth";
import emailPasswordProvider from "./providers/emailPasswordProvider";
const auth = NextAuth({
const nextAuth = NextAuth({
session: {
strategy: "jwt"
},
providers:[
CredentialsProvider({
name: "Email/Password",
credentials: {
email: {
label: "Email",
type: "text",
},
password: {
label: "password",
type: "password"
}
},
authorize: async (credentials, req) => {
const user = { id: "1", name: "John Doe", email: "john.doe@example.com" };
if (user){
return user;
}
return null;
},
})
]
emailPasswordProvider
],
callbacks: {
session: async({session, user, token}) => {
if (session.user){
session.user.id = token.userId as string;
}
return session;
},
jwt: async ({ token, user, account, profile }) => {
if(account && account.type === "credentials") {
token.userId = account.providerAccountId; // this is Id that coming from authorize() callback
}
return token
}
},
pages: {
signIn: "/login"
}
})
export default auth;
export const {
signIn,
signOut,
handlers: { GET, POST},
auth
} = nextAuth;
export default nextAuth;

View File

@ -0,0 +1,35 @@
import CredentialsProvider from "next-auth/providers/credentials"
const credential = CredentialsProvider({
name: "email-password",
credentials: {
email: {
label: "Email",
type: "text",
},
password: {
label: "password",
type: "password"
}
},
authorize: async (credentials) => {
// Ensure credentials are defined and properly structured
if (credentials && typeof credentials.email === 'string' && typeof credentials.password === 'string') {
// Implement your authentication logic here
// For the sake of example, we're using a static user object
const user = { id: "1", name: "John Doe", email: "john.doe@example.com" };
// Add your logic to validate the user here
// ...
if (user){
return user;
}
console.log("here inside")
}
console.log("here outside")
return null;
},
})
export default credential;