Thank you very much, I have been looking for a long time for a tutorial that shows how to really create such a system with usernames and passwords. I even stopped a project because I couldn't find a solution for it. Now I have my passion back thanks to you.
Great Video! I am a React developer and I just started messing around with Next.js and this project really helped me gain valuable knowledge about how Next.js works and the different tools available in the framework. One tip though: for security reasons it is better to have the id in the prisma model as a string and then set the default to uuid(), that way even if you dont have route protection someone cant just change the end of the route from number 1 to 2 for example and log in as the admin. instead the route will have something like this: 8624d47d-ceb0-4288-bd0a-876bb68985f0. which is a universally unique identifier that once generated can never be re-created so there is no chance of route manipulation in that way
The redirect after login at 43:00 can now also be implemented directly in the signIn-call. Just set redirect: true and provide a callbackUrl to which to redirect the user to.
I am halfway through the tutorial, encountered many errors (not the creator's fault - updates, installation, etc.) and I can say with certainty this is one of those tutorials I really want to follow through, it is so informative and just MAKES SENSE! Big kudos to you, @Cand Dev :)
this is the best nextjs tutorial I've seen, I always find difficult on following tutorials but this is the first that really helped me and I learned a lot of useful things, great work and nice didactic!!
Love Love Love this video. So simple and very informative. I followed along and learnt a lot. Thank you for this 😊..... Now the "Like so" is stuck to my head 😅
"Fantastic! This video is like discovering a treasure trove. It's filled with invaluable insights. I'm convinced he's the best lecturer I've ever come across. Thank you so much. Your assistance has been instrumental in helping me create a practical, real-world product.
so what we if want to use a genuine backend for this instead? do we still need to use the next /api approach and then reach out to our api from there or can we just use fetch and session tokens in components?
Sir, this tutorial was really helpful you covered all the points. One more thing, I want to ask you can you please make a tutorial in which you're using both the credentials provider and also the google provider together. You can make that video in continue to this playlist.
Yes, add the following lines of code: In the SignInForm.tsx file, add a 'redirect: false' in the onSubmit function: so it would look like this: const onSubmit = async (values: z.infer) => { const signInData = await signIn("credentials", { email: values.email, password: values.password, redirect: false, }); if (signInData?.error) { console.log("error----", signInData.error); } else { router.push("/admin"); } };
I tried myself as well, it does redirect me to the admin page, but it stays for 1 second and then it re-routes me back to the sign-in page. Putting the redirect: false, it will end up remaining on the sign in page, it doesn't lead me at all to the admin page. My issue is that on Application/Cookies, I don't get the "session" next-auth cookie....I only have the callback and the csrf-token@@Jdsg1234
Something seems to not be working because the same url you entered to see the sign in form is taking me to a 404 error page I have checked the git repo and everything looks fine, I also see that others are facing the same issue here in the comment section
I have an error in production mode in the sign out section, because when I click sign out, it still calls localhost, how can I make it not localhost anymore? 🙏🙏🙏🙏🙏
Thanks for the video! but how to implement throttling in the register API? and how to guard the pages to always redirect to login if user is unauthenticated?
i really love how you give me the folder template to code and how you explain really really love the video. i hope u will make more videos about tricks and nextjs project 😊😊
Great video! I was wondering if you had any idea how to make this expandable for multiple different logins. I am working on having two login pages with seperate admin pages, storing sign up data in two different prisma tables and using those to sign in. I managed to get the sign up post request to work, but my sign-in to redirect to the new admin page is causing me trouble that routes to me an error page. Any ideas?
I am not able to singin.. it is redirecting me back to the home page.. Showing warning about NEXTAUTH_URL and NEXTAUTH_SECRETKEY... someone please help
I am getting this error Error: @prisma/client did not initialize yet. Please run "prisma generate" and try to import it again. at new PrismaClient Any fix? I tired running npx prisma generate EDIT: Fixed it follow the official docs for prisma client after that import it from import { PrismaClient } from "../node_modules/.prisma/client";
got the same issue as the others mention in the comment "Warning: Prop `htmlFor` did not match. Server: ":R2irb6qcq:-form-item" Client: ":Rabdcr9j9:-form-item" it happen in sign-in part 41:53, please help us there are many others that has the same problem, the best solution would be that you provide the source code as mentioned before
I think i solve that part by changing the SignInForm.tsx as in the following lines of code into: const signInData = await signIn("credentials", { email: values.email, password: values.password, redirect: false, });
The issue of "Warning: Prop `htmlFor` did not match. Server: ":R2irb6qcq:-form-item" is because of that you need to update eslint & nextjs by the following cmd: npm install -D eslint-config-next@latest npm install next@latest react@latest react-dom@latest
Hey bro! nice tutorial! I'm stuck with the signIn part, because I'm having an issue after submit it redirect to /api/auth/error. Can you please help me with that? thanks :)
I solve the redirect issue by chainging to the following code: " const signInData = await signIn("credentials", { email: values.email, password: values.password, redirect: false, }); " in the signInForm.tsx file
I'm getting a "Warning: Prop `htmlFor` did not match. Server: ":R2irb6qcq:-form-item" Client: ":Rabdcr9j9:-form-item" error when trying to log in. Tried to debug it but can't find the issue. Any help? ^^'
this htmlFor is just a warning from 1 of the shadcn components hes using in the starter template.. but i dont think thats causing your login error.. u manage to fix the error?
When I try to Login with the account I signed up for, I can't continue due to a 401 unauthorized error in the console. I guess it depends on the Credentials provider.
Excellent tutorial, dude..! But, is there a tip to make this role based authentication? Btw don't forget to post nextauth authentication using google credentials.. 😊
i cant configure the nextauth credentials provider i tried everything but i am failing again and again even though i am correctly returning the user inside authorize and also i gave made my submit function correct everything is correct i dont know why is it still undefined the result that signIn is givng undefined always i do not know why is that happeing wasted ours in it searched it everywhere i logged the values of my email and pass that was correct but result from sign in is undeifned PLEASE HELP
kalau error Unexpected token } in JSON at position 121 kenapa ya ? padahal kodingnya secara step by step udah sama, udah coba search juga katanya minta downgrade efect di windows tapi coba di linux juga sama kenapa ya ?
Thank you very much, I have been looking for a long time for a tutorial that shows how to really create such a system with usernames and passwords. I even stopped a project because I couldn't find a solution for it. Now I have my passion back thanks to you.
Let's get back to coding 🧑🏻💻. Thanks for the tip
I think this is one of the most comprehensive tutorials that guides how to implement credentials provider using Prisma. Thank you!
It just covering the basic stuff you find everywhere... pointless, useless
🎉
Great Video! I am a React developer and I just started messing around with Next.js and this project really helped me gain valuable knowledge about how Next.js works and the different tools available in the framework.
One tip though: for security reasons it is better to have the id in the prisma model as a string and then set the default to uuid(), that way even if you dont have route protection someone cant just change the end of the route from number 1 to 2 for example and log in as the admin. instead the route will have something like this: 8624d47d-ceb0-4288-bd0a-876bb68985f0. which is a universally unique identifier that once generated can never be re-created so there is no chance of route manipulation in that way
Dude, this is the only one usefull tutorial about next-auth with prisma db, that i found on the internet !! Keep doing what you do
Yeah, litterly i have been searching for long time and i did not find anything, yet by accident i discovered this tutorial.
The redirect after login at 43:00 can now also be implemented directly in the signIn-call. Just set redirect: true and provide a callbackUrl to which to redirect the user to.
I am halfway through the tutorial, encountered many errors (not the creator's fault - updates, installation, etc.) and I can say with certainty this is one of those tutorials I really want to follow through, it is so informative and just MAKES SENSE! Big kudos to you, @Cand Dev :)
I looked up multiple tutorials. Only yours seemed to help me out of this hell hole called next-auth.
Thank you!
this is the best nextjs tutorial I've seen, I always find difficult on following tutorials but this is the first that really helped me and I learned a lot of useful things, great work and nice didactic!!
That is the best tutorial on RUclips, related to authentication in Nextjs. Bro,, please make a complete course related to Nextjs in detail
This is the tutorial I've been looking for!
Great video dude. Your video is straight to the point unlike other youtubers who pad out their tutorials with unnecessary CSS stylings.
Too good to believe, session are being introduced so well, why such good youtuber only have few people watch, what a lost for them.
Love Love Love this video. So simple and very informative. I followed along and learnt a lot. Thank you for this 😊.....
Now the "Like so" is stuck to my head 😅
"Fantastic! This video is like discovering a treasure trove. It's filled with invaluable insights. I'm convinced he's the best lecturer I've ever come across. Thank you so much. Your assistance has been instrumental in helping me create a practical, real-world product.
github whit final code please
Hey, can you please give the final code Github repo. Thanks.
am stuck at 44:51.. It doesn't redirect me to the Admin page even when the credentials are correct. please help
я так сделал:
auth.ts
export const authOptions: NextAuthOptions = {
adapter: PrismaAdapter(prisma),
session: {
strategy: 'jwt'
},
pages: {
signIn: "/sign-in"
},
providers: [
CredentialsProvider({
name: "Credentials",
credentials: {
email: { label: "Email", type: "email", placeholder: "jsmith" },
password: { label: "Password", type: "password" }
},
async authorize(credentials) {
if (!credentials?.email || !credentials?.password) {
return null
}
const existingUser = await prisma.user.findUnique({
where: { email: credentials?.email }
})
if (!existingUser) {
return null
}
const passwordMatch = await compare(credentials.password, existingUser.password)
if(!passwordMatch){
return null
}
return {
id: `${existingUser.id}`,
username: existingUser.username,
email: existingUser.email
}
}
})
],
callbacks: {
session: ({ session, token }) => {
console.log("Session Callback", { session, token });
return {
...session,
user: {
...session.user,
id: token.id,
randomKey: token.randomKey,
},
};
},
jwt: ({ token, user }) => {
console.log("JWT Callback", { token, user });
if (user) {
const u = user as unknown as any;
return {
...token,
id: u.id,
randomKey: u.randomKey,
};
}
return token;
},
},
}
You are not alone. If you have solved it, let me know what you did to solve this problem.
@@АлександрАлександр-ъ4ъ1р thanks u are a legend !
@@omalaydrinks1847 solved the issue?
@@omalaydrinks1847 did u solve?
I cannot remember any other coding tutorial that was as well done in terms of following up as this one. And I have been on this for years.
awesome. subbed. please continue this series. like role based auth. email verification. forget and reset password.
Thank you Cand! I was struggling to extend the session user data and i got the solution.
Have you released the next part of this series, incorporating Google authentication implementation? The series has been excellent so far! :)
so what we if want to use a genuine backend for this instead? do we still need to use the next /api approach and then reach out to our api from there or can we just use fetch and session tokens in components?
Sir, this tutorial was really helpful you covered all the points. One more thing, I want to ask you can you please make a tutorial in which you're using both the credentials provider and also the google provider together. You can make that video in continue to this playlist.
Amazing video! all your videos are amazing and this one is clearly seen at another level. Thank u bro so much for charing.
This actually is awesome. you make it so simple Thank you. I would love you to make another video on role based access on top of this. 👌
Thanks 🤍
Sub so fast , great videos series bro , thank you so much !
Thanks for the sub! 🤍
Is there any one who had challenge moving pass 44:56 - getting to admin page. If you did, i would like to know why it happened and how to solved it
Yes, add the following lines of code:
In the SignInForm.tsx file, add a 'redirect: false' in the onSubmit function:
so it would look like this:
const onSubmit = async (values: z.infer) => {
const signInData = await signIn("credentials", {
email: values.email,
password: values.password,
redirect: false,
});
if (signInData?.error) {
console.log("error----", signInData.error);
} else {
router.push("/admin");
}
};
I tried myself as well, it does redirect me to the admin page, but it stays for 1 second and then it re-routes me back to the sign-in page. Putting the redirect: false, it will end up remaining on the sign in page, it doesn't lead me at all to the admin page. My issue is that on Application/Cookies, I don't get the "session" next-auth cookie....I only have the callback and the csrf-token@@Jdsg1234
Another professional tutorial!👍
Brilliant, just brilliant
You know how to write code very well and you explain it. Thank you very much 😎🙌👌
Something seems to not be working because the same url you entered to see the sign in form is taking me to a 404 error page I have checked the git repo and everything looks fine, I also see that others are facing the same issue here in the comment section
Hey Candid, i have an issue when i run npx prisma migrate dev --name init, the terminal stands still and doesn't give any response. Can you help me ?
I find the solution, the default port seems to not work (6543), i switched it on 5432 and its working now !
thansk alot i was crying from last night😭
I'm glad I could help 😁
at 43:17 when I click login it logs undefined and reloads even after I put redirect false and preventDefault
x2
Hey, I fixed it, i added the session provider hook from next-auth on the layout.tsx, also i add an try/catch block on the authorize in the authOptions
@@samuelpalacios9661 can you share the code i facing same issue
I have an error in production mode in the sign out section, because when I click sign out, it still calls localhost, how can I make it not localhost anymore?
🙏🙏🙏🙏🙏
Exactly what I was looking for🎉
Have you released the next part to this series, implementing google auth? Great series so far! :)
I have already uploaded that, but RUclips just deleted that video 😥.
@@CandDev upload it again we really need it
@@CandDev can u pls try to upload the same video again ?
Excellent tutorial! Thank you
Thanks for the video! but how to implement throttling in the register API? and how to guard the pages to always redirect to login if user is unauthenticated?
itsthe final code available?
my signIn() doesnt seem to execute the autorize function and i have no idea what im doing wrong.
great tutorial btw!
did u ever find out?
Is this example basically safe to use in real website (with some additions)?
Hi Cand. When I run npx prisma migrate dev --name init. The terminal stands still and doesn't give any response. please help me!
Hey i have the same issue , did u find an answear for this problem ?
I love using PostgreSQL and Prisma
Great tutorial, inspired me a lot for making a tutorial.. :)
Bro is doing god's work. Thank you!!!
Can you update your source code please?
there is no api folder and prisma folder. Just only forms?!
Thanks bro, for this NEXTJS and POSTGRESQL Video... More NextJS and PostgreSql CRUD video please....
Sure bro 🚀
thanks a lot for this tutorial
stuck in signin authentication it says bad request
This series is awesome.
Thanks a lot! And how we can use API session? In others api`s reqests?
do we need rls when working with prisma? if yes how to write policies?
Thank you for content, could you please explain where are you using "export const authOptions: NextAuthOptions"? I can't find it where are you using
i use that on my [...nextauth].js, app/page.tsx, navbar, and many more.
i really love how you give me the folder template to code and how you explain really really love the video. i hope u will make more videos about tricks and nextjs project 😊😊
and i hope you always support me, with like and comment 😁
@@CandDev i hope you will make a project with nextauth and other technologies ❤❤
Great video! I was wondering if you had any idea how to make this expandable for multiple different logins. I am working on having two login pages with seperate admin pages, storing sign up data in two different prisma tables and using those to sign in. I managed to get the sign up post request to work, but my sign-in to redirect to the new admin page is causing me trouble that routes to me an error page. Any ideas?
I wonder if you have any tutor with progress bar with shadcn ui in future?
thank you , eveything is cool , but in my vscode everything is broken even the next auth page is updated , i can't get the default sign in page
I am not able to singin.. it is redirecting me back to the home page..
Showing warning about NEXTAUTH_URL and NEXTAUTH_SECRETKEY...
someone please help
Hi can you add remember me functionality where my credentials Store in local storage and password should be encrypted...
Thank you for the video :) Can I ask where we can find the repo will the full code please ?
I am getting this error Error: @prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.
at new PrismaClient
Any fix? I tired running npx prisma generate
EDIT: Fixed it follow the official docs for prisma client after that import it from
import { PrismaClient } from "../node_modules/.prisma/client";
Great job 🚀
Amazing tutorial!! thanks so much🤩!
can we have a video showing login + google auth + 2factor auth at the same time...?
my login is redirecting me to /api/auth/error can someone help me please
got the same issue as the others mention in the comment "Warning: Prop `htmlFor` did not match. Server: ":R2irb6qcq:-form-item" Client: ":Rabdcr9j9:-form-item"
it happen in sign-in part 41:53, please help us there are many others that has the same problem, the best solution would be that you provide the source code as mentioned before
I think i solve that part by changing the SignInForm.tsx as in the following lines of code into:
const signInData = await signIn("credentials", {
email: values.email,
password: values.password,
redirect: false,
});
The issue of "Warning: Prop `htmlFor` did not match. Server: ":R2irb6qcq:-form-item" is because of that you need to update eslint & nextjs by the following cmd:
npm install -D eslint-config-next@latest
npm install next@latest react@latest react-dom@latest
htmlFor is just a label warning.. its not an actual error.. wont crash your application
@@lxespadatv2342 it is not but it is always good practice to solve the warning, becuase it can lead to other problem
man you are a lifesaver been stuck on this for so long@@Osmanity
3:32 itu pake apa bang? postgre gw ga kek gitu, apa karena mac?
iya, beda tampilan aja kayaknya. aku gak pernah coba juga sih tampilan selain di mac.
great video mate!
Hey bro! nice tutorial! I'm stuck with the signIn part, because I'm having an issue after submit it redirect to /api/auth/error. Can you please help me with that? thanks :)
did you solve it i have the same issue and are desperate to solve it
I solve the redirect issue by chainging to the following code:
"
const signInData = await signIn("credentials", {
email: values.email,
password: values.password,
redirect: false,
});
"
in the signInForm.tsx file
+ other thing just look for my comment in the comment section of the video
@@Osmanity I did this and still am getting the error: const onSubmit = async (values: z.infer) => {
const signInData = await signIn("credentials", {
email: values.email,
password: values.password,
redirect: false,
});
if (signInData?.error) {
console.log("error----", signInData.error);
} else {
router.push("/admin");
}
};
its the final code available?
my signIn() doesnt seem to execute the autorize function and i have no idea what im doing wrong.
great tutorial btw!
hey did you figure it out? getting the same unauthorized error
@@Wansi did u ever figure it out?
hy dear , i want to create otp section when user is register and login. please create otp verification video
Why the GitHub Repo codes not completly ?
Thank you man. I'm from 🇧🇷
Olá, Brasil 👋🏻
Where is the Signup flow ?
I'm getting a "Warning: Prop `htmlFor` did not match. Server: ":R2irb6qcq:-form-item" Client: ":Rabdcr9j9:-form-item" error when trying to log in. Tried to debug it but can't find the issue. Any help? ^^'
got the same did you solve?
this htmlFor is just a warning from 1 of the shadcn components hes using in the starter template.. but i dont think thats causing your login error.. u manage to fix the error?
@@lxespadatv2342 took some time but manage to fix it actually :)
to fix this warning just look for my comment somewhere in the comments section, I think it was that you need to update nextjs & eslint
Detailed and clear explaination...
Thanks for the video!
amazing tutorial. Thank you!
After how much time a session is expired and can we manually set an expiry for session
did u ever figure this out
When I try to Login with the account I signed up for, I can't continue due to a 401 unauthorized error in the console. I guess it depends on the Credentials provider.
я так сделал:
в файл auth.ts добавил callback
],
callbacks: {
session: ({ session, token }) => {
console.log("Session Callback", { session, token });
return {
...session,
user: {
...session.user,
id: token.id,
randomKey: token.randomKey,
},
};
},
jwt: ({ token, user }) => {
console.log("JWT Callback", { token, user });
if (user) {
const u = user as unknown as any;
return {
...token,
id: u.id,
randomKey: u.randomKey,
};
}
return token;
},
},
}
dude, how to implement this code for rest-api ?...
regards..
Excellent tutorial, dude..! But, is there a tip to make this role based authentication? Btw don't forget to post nextauth authentication using google credentials.. 😊
awesome tutorial very complete and easy to understand
i cant configure the nextauth credentials provider i tried everything but i am failing again and again even though i am correctly returning the user inside authorize and also i gave made my submit function correct everything is correct i dont know why is it still undefined the result that signIn is givng undefined always i do not know why is that happeing wasted ours in it searched it everywhere i logged the values of my email and pass that was correct but result from sign in is undeifned
PLEASE HELP
Please send me your code, and I will check it.
I had this same issue, try adding redirect: false to the object in the signIn function
Did you manage to fix it?
I dont get it, when did you create the forms and ui lmao, am i meant to create my own form or?
Can we host this on hostinger premium webhosting
How can I use access tokens with this?
In next js 13 app directory next auth we can not authenticate user without using prisma?
Yes, of course
kalau error Unexpected token } in JSON at position 121 kenapa ya ? padahal kodingnya secara step by step udah sama, udah coba search juga katanya minta downgrade efect di windows tapi coba di linux juga sama kenapa ya ?
btw, aq kira bule, english keren hahaha
kemungkinan penempatan kurung kurawal yg salah, atau hilang.
masih belibet bro hahaha
udah bisa thanks
Great video!
25:02 if did use axios most efficient and less code!! over all i really like video
yup axios makes it more better and easier
you're much better than lamadev
I am new with both channels, but in which way he's better if you can explain
Awesome mate!
amazing video!
God bless you...
God bless you to.
good video, it would be awesome if you create another branch on your project witht he final code!
I have tried twice my code is showing internal server error 500 can any one help me with it
restart your local server
nicee tutorial 👍
was very very happy until there was no source code in description... your provide it in other videos, please put it, awesome content
where is the video with google login?
here: ruclips.net/video/k1TL-AzavvY/видео.htmlsi=gJXa-sF8jKcS7J9u
Terimakasih bro ilmunya
makasih juga bro udah mampir