Next Auth V5 - Advanced Guide (2024)

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024

Комментарии • 1,8 тыс.

  • @codewithantonio
    @codewithantonio  10 месяцев назад +429

    Hello everyone 👋 Thank you for choosing this video, and I hope you will enjoy this next auth v5 masterclass. I listened to your requests and decided to dive deep into creating our own auth toolkit with reuseable components, hooks and utils to use auth in server & client components, api routes and server actions. We will also deeply explore the middleware and learn how to extend next auth session, use callbacks, pages and events configuration. Thank you all for an amazing 2023, and see you in 2024! ❤

    • @NaniwaRocky
      @NaniwaRocky 10 месяцев назад +6

      Professional stuff as to be expected from Antonio! Many thanks! ❤

    • @ilyaasomar9173
      @ilyaasomar9173 10 месяцев назад +2

      thank you you did awasome tutorial.

    • @raymondmichael4987
      @raymondmichael4987 10 месяцев назад +4

      This looks loaded 😊😊, ❤; I’m at 48 minutes now.
      You have done a lot of wonderful works this year, stay safe Brother.
      Greetings from Tanzania 🇹🇿

    • @baptistefuseau1332
      @baptistefuseau1332 10 месяцев назад +1

      Thank you very much for the quality of the content you offer!
      We see that you keep improving from one video to another and that's what makes you teach us a lot!
      For the next video, would it be possible to achieve the same with image hosting without going through an external provider or using base64?
      From my point of view, it would be interesting to store the images on our server directly 😉
      Thank you again and happy new year 2024! ❤

    • @Yahya_Umar
      @Yahya_Umar 10 месяцев назад +2

      Your content is amazing! Could you consider creating a video about Inventory Management Systems? Your expertise would make it incredibly valuable. Thanks!.

  • @santech5669
    @santech5669 10 месяцев назад +260

    8hrs of content on Next Auth? Brother you're awesome, I am definitely contriuting once I get a frontend job, the amount of value you give out for free is priceless. Awesome tutor!!!!!

  • @adabooost
    @adabooost 9 месяцев назад +102

    for those of you getting errors at 2:31:45. Just end the control with a simple return.
    After the update the function signature you're using for the middleware does not match what the new auth package expects... so if you don't wanna downgrade from auth beta.9 ... just return a native Response, or just do a simple return without the null.

    • @eness_ctnn
      @eness_ctnn 9 месяцев назад +8

      i was searching all of the internet for this solution thank you mate

    • @thiettruong7381
      @thiettruong7381 9 месяцев назад +5

      @@Salah-YT i removed all return lines, but when isLoggedIn = false and isPublicRoute =.false, middleware not redirect to /auth/login
      can you show me more,

    • @mideolaniyi
      @mideolaniyi 9 месяцев назад +4

      thank you, it worked

    • @mideolaniyi
      @mideolaniyi 9 месяцев назад +5

      actually it wasn't redirecting to /auth/login when I tried accessing the /settings route. So I added another condition "&& nextUrl.pathname !== "/auth/login"" then it worked

    • @gendev1105
      @gendev1105 9 месяцев назад

      return NextResponse.next();
      don't forget to import :
      import { NextResponse } from "next/server";
      this works for me!

  • @bobbuilder2837
    @bobbuilder2837 10 месяцев назад +128

    This tutorial needs to be in official NextAuth documentation.

    • @codewithantonio
      @codewithantonio  10 месяцев назад +7

      Glad you like it!

    • @Besaoct
      @Besaoct 6 месяцев назад +4

      ​@@codewithantonio hey! It's not working properly in production (middleware and redirections)

    • @iganic7574
      @iganic7574 5 месяцев назад +1

      Is you have completed this project?

    • @Besaoct
      @Besaoct 5 месяцев назад

      @@iganic7574 yeah

    • @Team-hf7iu
      @Team-hf7iu Месяц назад

      ​@@BesaoctThere must be something wrong with what you did, it should work

  • @jonathanbaird1633
    @jonathanbaird1633 6 месяцев назад +97

    For security purposes, you should always return a generic Invalid credentials message no matter if the user account exists or not. For unverified emails on user accounts your function for sending the verification emails will send an email no matter if the password is correct or not. Instead you should verify that the the password and the email before sending the verify email. Also for password reset; the response should not be Email not found if the user account doesn't exist. It should always return Reset email sent message. The reason for this is because you do not want a malicious actor to find out if an email belongs to a valid user account. If they can get a list of your users they can try brute force or password spray techniques to hack your app.

    • @deadgun0817
      @deadgun0817 6 месяцев назад +4

      Thanks for sharing these with us 🙏

    • @someshkarmakar47
      @someshkarmakar47 6 месяцев назад +7

      actually i am thinking the same, if password is wrong then it should not send 2FA mail, I did it by checking the credentials using a sever action and if creadential are correct then it goes to 2FA mail. besides that everything is gem in this video i think... and till now the best Next-auth tutorial on RUclips.

  • @ValeryFlutter
    @ValeryFlutter 10 месяцев назад +56

    If there were a RUclips Valuable Creator Award specifically for teaching coding, there is no doubt in my mind that you would be the perfect candidate for this prestigious recognition. Your dedication to educating others about coding and your exceptional teaching skills make you truly deserving of such an accolade.
    Through your RUclips channel, you have consistently demonstrated an incredible ability to break down complex coding concepts into digestible and easily understandable explanations. Your videos are not only informative and comprehensive but also engaging and enjoyable to watch.
    Your commitment to helping aspiring developers and programmers navigate the world of coding is inspiring. You go above and beyond to provide valuable resources, tutorials, and practical examples, empowering your viewers to learn coding and enhance their skills.
    The impact you have on your audience is evident through the numerous positive comments and gratitude expressed by those who have benefited from your instructional videos. Your ability to make coding accessible and enjoyable for learners of all levels sets you apart as a truly exceptional coding instructor.
    Your passion for coding and your genuine desire to see others succeed in their coding journey shines through in every video you create. Your dedication and expertise have undoubtedly made a significant impact on the coding community, and for that, you are truly deserving of recognition and appreciation.

    • @codewithantonio
      @codewithantonio  10 месяцев назад +6

      Thank you a lot for the kind words ❤️

  • @Triple._.A
    @Triple._.A 10 месяцев назад +27

    This is EXACTLY what I needed! I was getting a little tired of using Clerk, I don't exactly like the idea of using pre-made components that we can't style however we want. I'll be using Next Auth from now on. Feels like I've learned so much from this, thank you as always, really appreciate your videos!

    • @paulks9771
      @paulks9771 10 месяцев назад +8

      These are the basic things which wordpress had like 20 years ago, and now some companies such as clerk are trying to intervene and make such a simple functionality as an exclusive thing, and making cap on users, this is ridiculous.. There must be a standard from next themselves on this, its tiring..

    • @michaelmiller7264
      @michaelmiller7264 8 месяцев назад +4

      I always perceive Clerk as SCAM. Most RUclipsrs mention them because they're paid to promote them. 🤢🤢🤢

    • @siddhisalvi1628
      @siddhisalvi1628 Месяц назад

      Hi am actually developing website right now but this is about just desktop what about mobile or tablet version? I want to watch everything but I am stuck thinking should I continue whole things knowing there won't be anything for mobile version or responsive site?

  • @ypeng5811
    @ypeng5811 10 месяцев назад +43

    This is awesome! By following your airbnb clone I landed my first job in tech and now I’m building a website using next auth for them? even though I have done the most basic part but a in-depth nextauth is what I need!❤ thank you so much

  • @eshw23
    @eshw23 10 месяцев назад +168

    Amazing, I would love more tutorials focusing on concepts like this instead of only project clone tutorials all the time. Great video!

    • @codewithantonio
      @codewithantonio  10 месяцев назад +67

      I would be happy to do more like this if people like it :)

    • @0xYounes
      @0xYounes 10 месяцев назад +12

      @@codewithantonioI agree with him, Please do more like this!

    • @mohdali-yq8gq
      @mohdali-yq8gq 10 месяцев назад +9

      These kind of tutorials are very, very helpful so please create these kind of projects like what are the main security concerns before we upload on the cloud and how to make our website more and more secure so that it can not be managed by others by some bugs as these kind of contents will be of a great help as these kind of things are not available online.

    • @rikki7663
      @rikki7663 10 месяцев назад

      @@codewithantonio people will like these types of videos more because simply cloning the website is not that helpful if we don't have a clear idea of "behind the scene"

    • @mediacreatif
      @mediacreatif 10 месяцев назад +3

      Yes because he already made clones of all famous apps 😂😂😂

  • @0xOmzi
    @0xOmzi 10 месяцев назад +37

    Damnnn 🤯. You keep outdoing yourself Antonio. This is the EXACT tutorial I need right now. I've always wanted to go beyond the basics with NextAuth (now AuthJS) but haven't had much success. Thanks a million for this timely tutorial 🙏🏽.
    I also have a testimony to share 😅. Due to the skills & experience I gained following your tutorials, I won my first hackathon ever!
    Thanks again 🙌🏽😁.

  • @nasko235679
    @nasko235679 8 месяцев назад +3

    Antonio I've gotta say after completing your Messenger clone tutorial and moving on to this one your teaching skills have really improved and you're actually taking time to explain small details that are very important. Great stuff man.

  • @unknownheart-x
    @unknownheart-x 9 месяцев назад +5

    I've watched 1 hr 30min so far, and I want to say that this is the first time I have seen an honest tutorial without errors or mysterious or ambiguous codes which u dont know from where they come from every minute! Thank u for ur honesty doing this tutorial

  • @OulidenReudaL
    @OulidenReudaL 2 дня назад +1

    Antonio, thanks to you 😊 I’ve been able to develop my first session system in Next.js. I can’t thank you enough! 🙌 I’ll keep the ads running and share the video 📢. Finally, someone who makes a session video the right way! 💪✨ Greetings and a big hug from the Canary Islands, Spain 🇪🇸🌴.

  • @KramCodes
    @KramCodes 10 месяцев назад +21

    This is some top quality content, Antonio!
    With regards to the user object at 2:56:32, it is undefined because it contains the result of the authorize callback within the authConfig, meaning that it will only ever have a value once during signIn, after which it is undefined.
    Since the value of the session is set during signIn, you can just use the user object instead of making a request to the database again in the jwt callback.
    Hope this helps, and thank you for awesome content!

    • @codewithantonio
      @codewithantonio  10 месяцев назад +1

      Thank you for that insight, it definitely confused me. I will explore!

    • @KramCodes
      @KramCodes 10 месяцев назад +19

      And regarding extending the user (3:11:02) and the token (3:13:48), this works:
      import { User } from "@auth/core/types";
      import { JWT } from "@auth/core/jwt";
      declare module "@auth/core/types" {
      interface User {
      // add your custom fields here
      }
      interface Session {
      user: User;
      }
      }
      declare module "@auth/core/jwt" {
      interface JWT {
      // add your custom fields here
      }
      }
      The issue with your implementation of the token custom field is that you are making it optional by adding the '?', meaning it is either "ADMIN" | "USER" | undefined, which does not match what you have in the user.role field (it is not optional).
      So either make them both optional, or both required, and it should work.

    • @CaseStudyQB
      @CaseStudyQB 9 месяцев назад

      @@KramCodes I love how the teacher and students learn together! Antonio is my newest favorite teacher on youtube! Much love!

    • @true227
      @true227 7 месяцев назад

      @KramCodes could you to write example of the user object?

    • @GeniusHawlah
      @GeniusHawlah 7 месяцев назад +1

      @@KramCodes On adding my custom fields, the adapter started throwing type error too

  • @kungfinehow
    @kungfinehow 6 месяцев назад +2

    Thank you for starting from the very beginning and not skipping steps assuming everyone is already familiar with them in depth. I picked up things that i had been struggling with in how to properly structure my app that no one else was explaining.

  • @Fiiilipes
    @Fiiilipes 10 месяцев назад +18

    8 hours of nextauth is just crazy. Appreciate it very much!!!

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Hope you enjoy it!

    • @CoryTheSimmons
      @CoryTheSimmons 10 месяцев назад +1

      Seems like it might be overkill. I suspect 50% of this tutorial is going to be markup and CSS styles, but it looks like it's worth watching anyway.

  • @anonymouseverx
    @anonymouseverx 10 месяцев назад +6

    My entire mindset has been changed because of you, Antonio. For this, I can't say thanks enough. I know one thing without any doubt that I can't find this quality of learning and doing anywhere else. Thank you so much, Antonio for everything. ❤

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Thank you for the kind words, I am happy I could be of help!

  • @StudyBuddy-jj5pb
    @StudyBuddy-jj5pb 3 месяца назад +3

    Man im 7 hours deep and I swear, if people just memorize this project they know everything they need to know to build whatever they want to build. this is life changing project/video.

  • @epatrickification
    @epatrickification 10 месяцев назад +5

    I just read your bio on your website. Feels good to be taught by someone who has actually worked in industry. Keep up the good work man!

  • @nemeziz_prime
    @nemeziz_prime 10 месяцев назад +9

    Man you're magic! I learnt some of NextJS and Auth.js from your Airbnb clone video, but it was a bit complicated for me as a beginner. I always wanted to learn middleware based Auth in NextJS 14 and you just dropped a massive tutorial for the same. You're awesome 🔥

  • @sodiqardianto
    @sodiqardianto 7 месяцев назад +3

    damn, 8 hours auth next js, I finished it in 3 weeks. thanks man u mean a lot for us. god bless you

  • @삼장-c2z
    @삼장-c2z 10 месяцев назад +6

    Hello, Antonio
    It took about 14 hours to complete the tutorial as soon as the video came up!
    Thanks to you, I think it will be a good start to 2024
    Thank you and take care of me in 2024 too!

    • @codewithantonio
      @codewithantonio  10 месяцев назад +1

      wow already! amazing job!!! hope you enjoyed it

  • @shashankjaiswal3653
    @shashankjaiswal3653 3 месяца назад +5

    Hey Antonio!
    At 3:11:00 we can use this code
    declare module "next-auth" {
    interface Session {
    user: {
    role: UserRole;
    } & DefaultSession["user"]
    }
    }
    and then session.user.role = token.role as UserRole;
    I hope this helps. Source : AuthJS Docs

    • @israx2
      @israx2 8 дней назад

      Thanks bro!

  • @nmdpa3
    @nmdpa3 7 месяцев назад +2

    Awesome video, thank you very much. For anyone wanting to bypass the issue of duplicate verification at the 4:42:00 mark, one option is while in development to disable reactStrictMode by adding the following to next.config.js. You can set to true or false as needed. NextJS 13.4 and up I believe this value is "true" by default.
    module.exports = {
    reactStrictMode: false,
    }

  • @Tapadar.Monsur
    @Tapadar.Monsur 10 месяцев назад +12

    Thanks a lot, Antonio! The quality of your content is unrivalled.

  • @StudyBuddy-jj5pb
    @StudyBuddy-jj5pb 3 месяца назад +1

    Just finished the course, I swear this is the only course i have ever followd that didnt throw bug at my face while following the course..
    again thank you so much learnt a ton also clerk thing is amazing too.

  • @teetanrobotics5363
    @teetanrobotics5363 10 месяцев назад +3

    Hi Code With Antonio,
    I just wanted to drop by and say a huge thank you for your recent video on Next Auth V5. Your explanations were clear and concise, making it easy for me to understand and implement in my projects.
    I'm really interested in learning more about the t3 stack, and I think your expertise would be invaluable in helping me and many others navigate this technology. If you have any plans to create more content on the t3 stack in the future, I would be eagerly looking forward to it!
    Thanks again for all the amazing content you put out, and keep up the fantastic work!

  • @rainchei
    @rainchei 7 месяцев назад

    I cannot express how much grateful I am to be able to learn so much in one single tutorial. The code you provided not just user friendly but also very elegant to use. Thank's a ton!

  • @softdevstuff1008
    @softdevstuff1008 10 месяцев назад +7

    Just landed upon your channel, checked number of subscribers and checked when you started. To be honest it was a surprise you got to this number in less than an year. Then I checked your other videos. Now I know, with few videos, you have delivered so much value for free that its just priceless. Subscribed.

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Thank you very much, happy you like my content :)

  • @eguenou
    @eguenou 10 месяцев назад +4

    Hello,
    Thank you for this amazing tutorial. I tried this and it worked: 'declare module "next-auth"' instead of 'declare module "@auth/core"', to add the role to the session (around 03:12:00).

  • @martinvalenzuelamagallanes640
    @martinvalenzuelamagallanes640 9 месяцев назад +1

    I was struggling with the next-auth v5 because of lack of documentation, this video really helped me! Thanks!

  • @ferdinandeke9590
    @ferdinandeke9590 10 месяцев назад +3

    i honestly really lack the words to express my gratitude for the value you put out here for us consistently. Thank you so much Antonio. Still looking out to see your teaching using "Nest.js" backend and hooking it up to a "Next.Js" frontend here on your channel, cos somehow things become so easy to understand listening and watching your build ideas. Happy new year and God bless.

    • @matheus.maiberg
      @matheus.maiberg 8 месяцев назад

      Makes no sense to use both together.
      Both are backend framworks.
      React + Nest.js, this wold make sense.

  • @sukritiguin5637
    @sukritiguin5637 2 месяца назад +1

    This tutorial was absolutely mind-blowing! 🔥 The way you broke down the advanced authentication methods in Next Auth V5 and Next.js 14 was simply brilliant. From setting up credentials and OAuth providers to implementing features like email verification, two-factor authentication, and user roles, every single step was crystal clear and easy to follow.
    The inclusion of server actions, role-based access, and middleware usage was exactly what I needed to take my skills to the next level. The detailed explanations of extending sessions and exploring callbacks were just top-notch. Plus, the clean UI and smooth user experience you demonstrated throughout the video made everything look so professional!
    I have to say, you truly deserve millions of subscribers and millions of views for the incredible effort and passion you put into your tutorials. The dedication you show in creating such high-quality content is inspiring. Salute to your hard work and efforts-I'm really grateful for everything I learned here. Thank you so much! 👏🙏

  • @godfreyowino1525
    @godfreyowino1525 10 месяцев назад +35

    Thank you, Antonio, for this awesome video on authentication. I always learn a lot from your clear and concise explanations. You make a complex topic easy to understand and implement. I appreciate your dedication and passion for teaching. Keep up the good work! 👍

    • @codewithantonio
      @codewithantonio  10 месяцев назад +3

      Happy to hear that, enjoy the video!

  • @bluestar1810
    @bluestar1810 6 месяцев назад

    After spending several hours troubleshooting, I have finally found this tutorial and was able to resolve the issue with my assignment project. Thank you for your help.

  • @antareephasan
    @antareephasan 10 месяцев назад +3

    Just starting now. Really thrilled to see, someone is making detailed videos on specific things like auth on youtube for full free. You are real Hero Man, thank you

  • @lala-wb7gi
    @lala-wb7gi 10 месяцев назад +2

    Thank you, Antoni! You have no idea how much this channel is helping me. If anyone is learning Next.js, I highly recommend this channel. I'm looking forward to your next video on ts-node API in Node.js. Like this concept

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Thank you for the kind words and suggestion!

  • @tstkenny
    @tstkenny 9 месяцев назад +3

    Amazing tutorial! Meanwhile just completed the 8 hours content and found some issues as of today:
    1. NextAuth renamed 'update' to 'unstable_update' in beta5 (the official repo is using beta4). While Server side page shows latest user session values properly, client side page always fail to keep up.
    2. In order to double check the issue, I cloned the official repo provided by Antonio above. After logged in with credentials, goto settings and change the role, the Server side page still showing old role value while Client side page shows the latest role, which is different from the video content.
    Antonio did mention that it is an inconsistent behavior so far. Sadly this bug makes the repo not usable in production. But still a great learning experience!
    Thanks again!

    • @codewithantonio
      @codewithantonio  9 месяцев назад

      Thank you for watching!

    • @cangorkemgunes
      @cangorkemgunes 3 месяца назад

      Hello, is there any update on it? Is it consistent now?

  • @maka55567
    @maka55567 6 месяцев назад +1

    2 hours into the video I've already grabbed a whole lot. Thanks for this wonderful quality content.

  • @heguer87
    @heguer87 10 месяцев назад +7

    Hey Antonio, I have completed 75% of the course. Its so crystal clear, that I had to come back and thank you again!! Great work man!

    • @codewithantonio
      @codewithantonio  10 месяцев назад +1

      Thank you very much, hope you are enjoying it :)

  • @GeniusHawlah
    @GeniusHawlah 7 месяцев назад +2

    Considering how disastrous Auth.js documentation is right now, this material is a raw gold!

  • @user-bt1rh9rt8j
    @user-bt1rh9rt8j 8 месяцев назад +4

    Hi, Antonio!
    I successfully completed your guide! Step by step, starting from create-next-app and ending with deployment to Vercel
    THANK YOU SO MUCH!!!!
    The best tutorial I've ever seen, especially on authjs (aka next-auth)

    • @simplatory802
      @simplatory802 5 месяцев назад

      Hey, could you share the codebase with me? It's paywalled now

  • @dambujopaulo4204
    @dambujopaulo4204 9 месяцев назад +1

    This is the best tutorial I have come across on RUclips, I had many doubts about Next.js, but now I understand most. I want to be grateful to you and continue your work. I believe that in the near future, I will contribute a lot to your channel so it doesn't stop here and goes beyond borders. Congratulations and success.

  • @christopherlonzo
    @christopherlonzo 10 месяцев назад +2

    Thank you for creating this video! 🙏You did an impeccable job covering all important topics about Next-Auth. Out of all the tutorials that I've gone through, this one is by far the best! I'm looking forward learning from you in the future!👏🏽🔥

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Very happy to hear that :) Thank you for watching!

  • @erickandrade154
    @erickandrade154 10 месяцев назад +4

    This is absolutely amazing. Thanks Antonio for all this year!

  • @graphicdesigner8710
    @graphicdesigner8710 Месяц назад

    I really liked the callbacks part, specially that u show the problems you had and then gave the sulution instead of just giving the working code
    thaanks man for such a detailed explanation!

  • @beyondthoughts2740
    @beyondthoughts2740 10 месяцев назад +7

    Thank you so much Antonio for all the videos this year ❤. You are raising the skill sets of so many people and it's just incredible. My goal for 2024 is to be almost as good as you 😂. Would be super dope though if you made mobile apps though for 2024 as well( maybe using react native coz I think it's up your alley). Anyways thanks so much and I wish you and everyone here a blessed 2024

    • @codewithantonio
      @codewithantonio  10 месяцев назад +8

      Definitely planning on doing some react native as well! Enjoy the content and continue improving! you can do it!

  • @prepperdon
    @prepperdon 10 месяцев назад +1

    Just what I needed to implement credentials login using next-auth v5. Thanks for all you do, great work!

  • @iMarkyJD
    @iMarkyJD 3 месяца назад +13

    At around 5:57:00 I was having an issue with useSession() in a client component. It wouldn't load the session on initial page load. If you're stuck on this, create a layout.tsx file in the (protected) route group and put the SessionProvider there. This fixed it for me.

    • @miq_5239
      @miq_5239 3 месяца назад +3

      Thank you very much sir!

    • @spuknan
      @spuknan 3 месяца назад

      I've been struggling with this for hours, thank you very much!
      Let me add some word for people who are searching for this solution
      client - first load - refresh - login - session - not showing

    • @femelipe
      @femelipe 2 месяца назад

      Hey guys, I'm pretty much stuck with the sign out behaviour,
      it is not working.. When I hit the sign out button it refreshes the page but my session is still there.. It works with the previous implementation though (the one before starting this chapter)
      has anyone ran into this?

    • @iMarkyJD
      @iMarkyJD 2 месяца назад +1

      @@femelipe I think I had to add a redirectTo option to fix this: `await signOut({ redirectTo: "/auth/login" });`

    • @fahrizakurniawan9959
      @fahrizakurniawan9959 Месяц назад

      @@iMarkyJD thanks

  • @djubadjuba
    @djubadjuba 10 месяцев назад +1

    The best tutorial so far nextjs 14 and nextauth. Really got in the nitty gritty as the documentation of nextauth is not up to date. I am switching back from Clerk to nextauth as well. Thanks Antonio!

  • @desuchanz4956
    @desuchanz4956 9 месяцев назад +11

    for those who are having problems in 4:05:20
    code:
    const existingUser = await getUserById(user.id)
    problem:
    "Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
    Type 'undefined' is not assignable to type 'string'.ts(2345)
    (property) id?: string | undefined
    A unique identifier for the user."
    my solution: const existingUser = await getUserById(user.id as string)

    • @ankurdatta586
      @ankurdatta586 7 месяцев назад

      Thanks a lot!

    • @fahrizakurniawan9959
      @fahrizakurniawan9959 2 месяца назад

      thanks 🙏

    • @fazalkarim5595
      @fazalkarim5595 Месяц назад +1

      thanks a lot brother ,love your effort🔴

    • @draganpetrovic4738
      @draganpetrovic4738 Месяц назад +1

      Maybe it is better to add a guard to check if the id exists since can potentially be undefined, something like if (!user.id) return false; and after that you will not have this error anymore.

  • @Lic_JJ
    @Lic_JJ 10 месяцев назад +2

    Im so gratefull about this

  • @novaardiansyah6254
    @novaardiansyah6254 10 месяцев назад +6

    Once again, the outstanding quality and benefits provided by the best person like you, Antonio, are truly appreciated. I feel extremely grateful for your assistance 😍.

  • @theMrM_
    @theMrM_ 6 месяцев назад +1

    I want to thank you for taking the time to make this video.
    It has been quite challenging to follow you on speed, I finished your video in 2 days LOL, I tried to follow you implementing all this stuff in my own project and I understood pretty much all you explained, and as you mentioned now, I have my own building block framework for authentication. THANKS!!
    This video is pure gold, the content is relevant, perfectly explained and the best part... it's not just a "how to", you explain the basics and that's what is most appreciated.
    PS. There is one small bug in the 2FA but you explained the basis we can tweak is as we need

  • @omkarghodake4985
    @omkarghodake4985 8 месяцев назад +6

    return null; won't work in the middleware, it gives "No overload matches this call" error

    • @Samkhan7t3
      @Samkhan7t3 3 месяца назад +3

      Don't return null, Just simply "return"

  • @thewalrusdragon9579
    @thewalrusdragon9579 3 месяца назад +1

    I’d really like to see a straight up JavaScript/TypeScript front to back course from you. Your understanding of most of these technologies is leaps and bounds above most every other content creator who does these types of videos and I feel like you could make a great tutorial for the base language. Maybe even a full on web dev course that starts with HTML and goes all through to front and back end frameworks.

  • @maimunatwork
    @maimunatwork 10 месяцев назад +4

    Hey Antonio, love your tutorials! Can you make a tutorial on 3D effects in Next.js? Been following since the Netflix clone - your tutorials are super helpful. Have an awesome day!

  • @yiannis_p
    @yiannis_p 10 месяцев назад +1

    Cant stress enough how valuable this video is! Just an update I found, authjs pushed a pr that updated that fixed the docs for the type augmentation and it matches your solution to the issue as well!

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Thank you for watching, hope you enjoyed!

  • @GeniusHawlah
    @GeniusHawlah 7 месяцев назад +5

    If you're having the TypeScript error around 2:31:00 just return everywhere you're returning null

    • @true227
      @true227 7 месяцев назад

      i have such error with types of req . Could you explain more precisely what i need to do?

    • @true227
      @true227 7 месяцев назад +1

      yes, i just removed null and now it's only return; :)

  • @prabeshnarsinghkunwar1540
    @prabeshnarsinghkunwar1540 9 месяцев назад +2

    This is the Course I was looking for!! Now I understand auth from the basics. Thank you

  • @true227
    @true227 2 месяца назад +3

    5:59:13 don't forget add redirectTo: await signOut({ redirectTo: "/auth/login" });

  • @ha1dysh
    @ha1dysh 10 месяцев назад

    I only watched for half an hour, but I already learned new things for myself like parentheses and underscores for routes and that .next stores a cache that is rebuilt every time, also a nice tip
    thanks for the guide

  • @LittleVidds
    @LittleVidds 2 месяца назад +3

    6:55:52 for some reason the update() function works fine for client components but server components do not update. On the other hand, if this function is not used the server component updates nicely. Anyone else having this issue?
    Also, if you enter the wrong code for 2FA, you are unable to resubmit as the state of the email and password is lost (which I am assuming is due to the short circuit conditional rendering of the components).
    EDIT: Issue was brought to attention around 7:30:00. Basically the update function is unstable as of now :/

    • @harshitpant07
      @harshitpant07 14 дней назад +1

      for me sometimes it works perfectly fine with update and sometimes it update for a sec and then revert back to previous i dont know may be its because of caches or something else and the we are using with usesession is update (which is used with JWT) and the unstable one is provided by next-auth with func like sign signout this one is total sh*t

  • @YuriyChamkoriyski
    @YuriyChamkoriyski 9 месяцев назад +1

    Hi Antonio! Again super good and cutting-edge tutorial. Just want to mention that when I tried it out I was using "next-auth": "^5.0.0-beta.11", and the error @3:14:09 for the session.user.role disappeared. They also updated the docs and this is the snippet now: "import { JWT } from 'next-auth/jwt';
    declare module 'next-auth/jwt' {
    interface JWT {
    role?: 'ADMIN' | 'USER';
    }
    }"

  • @Enzo-td4ch
    @Enzo-td4ch 2 месяца назад +3

    Guys I have a problem and I don’t know how to resolve it. When I login with credentials in server side with signIn function (in auth.ts) and after the redirectTo /home the client session is not trigger and I need to manually reload the page to trigger. And in the video this problem don’t appear … If someone can help me

    • @Lukiiino
      @Lukiiino 2 месяца назад

      Hi! Try to move component in (protected) folder's layout file. Tell me if this helped you! :)

  • @ashishpatel6078
    @ashishpatel6078 10 месяцев назад +2

    What a series it is.
    I was about to read the next auth js document, then your video arrived. It is very helpful. Thank you ❤❤❤❤

    • @codewithantonio
      @codewithantonio  10 месяцев назад +1

      Hope you enjoy it!

    • @ashishpatel6078
      @ashishpatel6078 10 месяцев назад +1

      @@codewithantonio Yes offcourse sir, 2 hours still left
      I have also watched 4 projects from your playlist

  • @dyashwanth9822
    @dyashwanth9822 7 месяцев назад

    From the bottom of my heart, I would like to say Thank you so much Antonio. Your ability to explain complex topics in such a clear and simple manner is truly appreciated. Looking forward to more of your interesting and advanced tutorials. Once again, thanks a lot ❤.

  • @rotanapisey4953
    @rotanapisey4953 10 месяцев назад +6

    Your tutorial is very useful, but I got an error in auth.ts
    callbacks: {
    async session({ token , session }) { -- error : Property 'token' does not exist on type '({ session: Session; user: AdapterUser; } | { session: Session; token: JWT; }) & { newSession: any; trigger?: "update" | undefined; }'
    console.log(token);
    return session;
    },
    async jwt({ token }) {
    return token;
    }
    }

    • @duykhanhnguyen9274
      @duykhanhnguyen9274 9 месяцев назад +1

      this is library bug, and it still happen in 5.0.0 beta 5

    • @miksterdam
      @miksterdam 9 месяцев назад +1

      What is the solution?

    • @duykhanhnguyen9274
      @duykhanhnguyen9274 9 месяцев назад +3

      @@miksterdam ignore it and wait version beta 6

    • @rotanapisey4953
      @rotanapisey4953 9 месяцев назад

      thank you dear@@duykhanhnguyen9274

    • @miksterdam
      @miksterdam 9 месяцев назад

      Thought so... thanks@@duykhanhnguyen9274

  • @AjaySingh-jz8qx
    @AjaySingh-jz8qx 10 месяцев назад +1

    That is much much simplified and straight foreward.I Hope that in future there will be more foundational tutorials like that😊😊

    • @codewithantonio
      @codewithantonio  10 месяцев назад +1

      Glad you enjoy these different types of videos :)

  • @ddofvideos
    @ddofvideos 6 месяцев назад +3

    Hi Antonio,
    I have completed this course 5 times, re-recording and refining it each time. However, I'm experiencing an issue with signing out on the server side. Specifically, when I try to log out, the path does not update correctly. For example, in your video, the sign-out button on the settings page uses the use server directive and should redirect to the login page. However, when I log out, the URL remains at localhost:3000/settings. Is there a fix for this? Currently, I need to refresh the page to update the path.

    • @luiscifuentes1581
      @luiscifuentes1581 6 месяцев назад +1

      Use:
      action={async () => {
      'use server';
      await signOut({ redirectTo: '/auth/login' });
      }}
      in button logout

    • @ddofvideos
      @ddofvideos 5 месяцев назад +1

      @carl-arashi yes action={async () => {
      'use server';
      await signOut({ redirectTo: '/auth/login' });
      }}

    • @edychandra3479
      @edychandra3479 3 месяца назад

      @@luiscifuentes1581 it was working with me perfectly, thanks

    • @harshitpant07
      @harshitpant07 25 дней назад

      export const logoutAction = async () => {
      try {
      await signOut({ redirectTo: "auth/login" });
      } catch (err) {
      if (err instanceof AuthError) {
      console.log("> Login failed: " + err.message);
      }
      throw err;
      }
      };
      this sends me to /undefined route
      but this works fine
      ```
      Sign Out
      ```

  • @신비-w3l
    @신비-w3l 5 месяцев назад +1

    I can't tell you how much I'm thankful that you posted such great content. I really appreciated the devotion you put into this tutorial. Thanks again!

    • @iganic7574
      @iganic7574 5 месяцев назад

      is you completed this project ?

  • @dharanigowtham3731
    @dharanigowtham3731 5 месяцев назад +3

    He build the Clerk Auth within 8 hours

  • @clickadelic7681
    @clickadelic7681 10 месяцев назад +1

    In line with the rest of the comments: Thank You very much, Antonio. This is truely an awesome topic for NextJS starters like me in 2024. I've done the Trello Tutorial and I'm amazed by the code-consistency and quality.

  • @ziacodes
    @ziacodes 10 месяцев назад +4

    Hey Antonio, Please make a video about next auth new version! I installed next-auth@^5.0.0-beta.5 instead of ^5.0.0-beta.4
    now even If I go to ^5.0.0-beta.4 it gives types error! Please make a small video to fix it!

  • @asaserge
    @asaserge 5 месяцев назад

    This is the first best video I've come across that touches everything about authentication abd authorization with next js, thank you so much 🎉

  • @vishnu-krishna108
    @vishnu-krishna108 9 месяцев назад +88

    Watch at 1.5x - you will save 3 hrs..

    • @vishnu-krishna108
      @vishnu-krishna108 7 месяцев назад

      @@sarmadrafique426 I mean if you have good knowledge in coding, then we can watch at 1.5x

    • @ajaya9541
      @ajaya9541 7 месяцев назад +5

      ​@@sarmadrafique426i think your slow learner😂

    • @mleite1
      @mleite1 7 месяцев назад +2

      No, thank you. His explanation is at a nice pacing

    • @muhammaduseram9405
      @muhammaduseram9405 7 месяцев назад +8

      And learn nothing 🤡

    • @p-00190
      @p-00190 6 месяцев назад +2

      I always use 2x speed

  • @victorgabrielreis8586
    @victorgabrielreis8586 9 месяцев назад +1

    I'm learning so much with this complete tutorial, so much clearly and updated!
    Keep doing more of this guides :D

  • @kharisovruslan5523
    @kharisovruslan5523 5 месяцев назад +6

    i cant catch error.type CredentialsSignin

    • @PauloRdeOFerraz
      @PauloRdeOFerraz 5 месяцев назад

      any solution?

    • @user-xg1jv4rw7e
      @user-xg1jv4rw7e 5 месяцев назад +5

      I'm getting callbackrouteerror instead of credentialssignin

    • @PauloRdeOFerraz
      @PauloRdeOFerraz 5 месяцев назад

      @@user-xg1jv4rw7e I'm also receiving only callbackrouteerror

    • @Mukuthasan
      @Mukuthasan 5 месяцев назад

      catch (error) {
      if (error instanceof AuthError) {
      switch (error.type) {
      case "CallbackRouteError":
      return { error: "Invalid credentials!" };
      default:
      return { error: "Something went wrong!" };
      }
      }
      throw error;
      }

    • @kharisovruslan5523
      @kharisovruslan5523 5 месяцев назад

      @@user-xg1jv4rw7e console.log(error.type) return same type callbackrouteerror

  • @Plaswin
    @Plaswin 8 месяцев назад

    Awesome as always Antonio, can't thank you enough. You are really helping me in understanding how to better structure my code. With respect to extending JWT, in my case I imported the JWT type from next-auth/jwt and then extended the interface from module next-auth/jwt. The key is importing that interface

  • @suvaranjanpradhan-s4f
    @suvaranjanpradhan-s4f Месяц назад +1

    OHH BOY... This is one of great tutorial of authjs including nextjs concepts.Big Thanks to Antonio. You're the best.

  • @ridloghifary3041
    @ridloghifary3041 4 месяца назад

    This is like the clearest explanation ive ever heard, BILLION THANKSS!!!

  • @thefabiosiqueira
    @thefabiosiqueira 10 месяцев назад +2

    Hi, Antonio, your classes are great. Could you provide a tutorial on setting up VSCode, including recommended extensions, commands for quick code generation, and how to customize the terminal to match your preferred format?

  • @vponochovny
    @vponochovny 10 месяцев назад +1

    Watching the Middleware & Login chapter and thinking that making proper and good auth is an art because I don't even know how to come up with that many solutions and proper steps to do such things from scratch. Just need some summary/outline/notes to do so step by step. Or spend much time to summarly do all of these after bugs, requirements, etc. And how new people who can appear on the project to fix or change smth can even understand what has been done, why and with what logic? For me now it's a kinda complicated topic) So need real practice. Thanks for sharing.

  • @anorak_mz
    @anorak_mz Месяц назад +1

    Thank you very much for this lesson. I feel like I have improved in yet another important aspect of consistent and secure web development.

  • @dogcodes
    @dogcodes 10 месяцев назад

    I wanna say how much this helped me in learning authentication, I've not particularly used nextAuth and used iron-session instead but your tutorial on the use client, server actions, middleware as well as the coding practice and over all knowledge really helped me. Thank you

    • @Ismail-hd4yz
      @Ismail-hd4yz 6 месяцев назад

      From noob now i can handle complete authentication after completing this 😅

  • @carlaalves08
    @carlaalves08 2 дня назад

    This is the best tutorial I've ever seen. The most complete, detailed tutorial. And very useful for any project to be done. Thank you! 😊🤗🙏

  • @gustavoferreira5622
    @gustavoferreira5622 10 месяцев назад +1

    You teach so well that I watch your videos to learn how to program in React Native. and I learned a lot about authentication, thank you so much you are amazing!!!

    • @codewithantonio
      @codewithantonio  10 месяцев назад

      Great to hear! I will be doing some RN in the future

  • @juanevillam
    @juanevillam 6 месяцев назад +1

    Bro, this is by far one of the most complete coding tutorials i've ever seen on yt. Amazing job ;)

  • @friedrichsiever5964
    @friedrichsiever5964 9 месяцев назад +1

    Thank you so much for this wonderful tutorial. A masterpiece. Especially when I consider that I couldn't get anything remotely useful from the auth.js documentation. Without your amazing tutorial I would definitely have given up.

    • @codewithantonio
      @codewithantonio  9 месяцев назад

      Glad it helped! Thank you for watching!

  • @ZadSoleimaninia
    @ZadSoleimaninia 10 месяцев назад +1

    Wow! Thank you so much, Antonio! This is by far the best Next JS tutorial from ones out there!

  • @SuperPompey77
    @SuperPompey77 10 месяцев назад

    This was an excellent tutorial for sure. I found it a little hard but went thru it a second time and it's thanks to your method of teaching and explanations on why you take a particular way to achieve what you are developing 😮, I totally understood it. Thankyou so much for your unbelievable content.

  • @earnReward-y8o
    @earnReward-y8o 10 месяцев назад +1

    Best video for beginners who want to dive in nextjs without watching or having any other video tutorials knowledge.
    Love you bro ❤

  • @codewithchikwa
    @codewithchikwa 9 месяцев назад

    Why didn't I find you earlier? I have watched many tutorials but yours are top notch. We thank the Lord for you brother. Very inspiring. You are making me more confident about intricate topics. Thank you so much.

  • @micbln8967
    @micbln8967 16 дней назад

    best guide about auth, works, covers so many options, crazy. this is my template for all projects needing authentification

  • @Alex.Shalda
    @Alex.Shalda 10 месяцев назад +1

    Awesome course! halfway through, very informative, I'm going to use this as a base for my personal projects with React and Next. Thanks!!!!!!

  • @annaburdanova8307
    @annaburdanova8307 8 месяцев назад +2

    For those of you strugglers who want to do the module augmentation in version 5.0.0-beta.15 - this works in auth.ts file:
    declare module "@auth/core/types" {
    interface User {
    role: "ADMIN" | "USER";
    }
    }
    declare module "@auth/core/jwt" {
    interface JWT {
    role: "ADMIN" | "USER";
    }
    }

  • @dopplermov
    @dopplermov 10 месяцев назад +1

    I finally found the full and advanced course about NextJs... and it's free! Thanks for your job

  • @cedricCARRERE
    @cedricCARRERE 3 месяца назад

    Thank you very much Antonio for your videos. I wanted to leave you a comment even though I never do. Taking so much time to help others commands respect. What's more, you have the ability to explain everything in detail and very clearly. Thank you very much for your teaching skills, I've learnt a lot thanks to you.

  • @carlosFdez77
    @carlosFdez77 4 месяца назад

    Thanks for the video!! Awesome! I want to add a tip about session:
    Now in Auth.js, the method update from NextAuth is named "unstable_update". So I supose that they have problems to update the session from server side. Other solution is clean the cache from the page /settings. Adding revalidatePath('/settings') after update the user data update the session in client and server side.

  • @studentx35in32
    @studentx35in32 10 месяцев назад +1

    Finally something I was expecting back from a few months and it's here now