-
-
Notifications
You must be signed in to change notification settings - Fork 38
doc: add Lucia Auth doc #323
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
|
Warning Rate limit exceeded@ymc9 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 25 minutes and 3 seconds before requesting another review. How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. WalkthroughThe updates to Changes
Sequence Diagram(s)sequenceDiagram
actor Developer
participant docs/guides/authentication/lucia.md as Lucia Guide
participant lib/auth.ts as auth.ts
participant lib/db.ts as db.ts
participant PrismaClient
participant PrismaAdapter
Developer ->> Lucia Guide: Read integration instructions
Lucia Guide ->> auth.ts: Update for Prisma Adapter and user data exposure
Lucia Guide ->> db.ts: Enhance Prisma client creation
auth.ts ->> PrismaClient: Import Prisma Client
auth.ts ->> PrismaAdapter: Initialize Prisma Adapter
auth.ts ->> auth.ts: Define request validation and user data exposure functions
db.ts ->> PrismaClient: Import Prisma Client
db.ts ->> db.ts: Define enhanced Prisma client function
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
Outside diff range and nitpick comments (1)
docs/guides/authentication/lucia.md (1)
15-15: Consider rephrasing to avoid repetition.The phrase "needs to" is used repetitively. Consider rephrasing to add variety.
- So, your ZModel definition needs to include these two models. + Therefore, your ZModel definition should include these two models.Tools
LanguageTool
[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...js). ## Data Model Requirement Lucia needs to store your users and sessions in the da...(REP_NEED_TO_VB)
[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...he database. So, your ZModel definition needs to include these two models. Here is the s...(REP_NEED_TO_VB)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Outside diff range, codebase verification and nitpick comments (5)
docs/guides/authentication/lucia.md (5)
54-84: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-export const validateRequest = cache( - async (): Promise<{ user: User; session: Session } | { user: null; session: null }> => { - const sessionId = cookies().get(lucia.sessionCookieName)?.value ?? null; - if (!sessionId) { - return { - user: null, - session: null - }; - } - - const result = await lucia.validateSession(sessionId); - // next.js throws when you attempt to set cookie when rendering page - try { - if (result.session && result.session.fresh) { - const sessionCookie = lucia.createSessionCookie(result.session.id); - cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); - } - if (!result.session) { - const sessionCookie = lucia.createBlankSessionCookie(); - cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); - } - } catch {} - return result; - } -); +export const validateRequest = cache( + async (): Promise<{ user: User; session: Session } | { user: null; session: null }> => { + const sessionId = cookies().get(lucia.sessionCookieName)?.value ?? null; + if (!sessionId) { + return { + user: null, + session: null + }; + } + + const result = await lucia.validateSession(sessionId); + // next.js throws when you attempt to set cookie when rendering page + try { + if (result.session && result.session.fresh) { + const sessionCookie = lucia.createSessionCookie(result.session.id); + cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); + } + if (!result.session) { + const sessionCookie = lucia.createBlankSessionCookie(); + cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); + } + } catch {} + return result; + } +);
86-94: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
- const { user } = await validateRequest(); - - if (!user) { - return redirect("/login"); - } + const { user } = await validateRequest(); + + if (!user) { + return redirect("/login"); + }Tools
Markdownlint
89-89: Column: 1
Hard tabs(MD010, no-hard-tabs)
91-91: Column: 1
Hard tabs(MD010, no-hard-tabs)
92-92: Column: 1
Hard tabs(MD010, no-hard-tabs)
93-93: Column: 1
Hard tabs(MD010, no-hard-tabs)
117-140: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-declare module "lucia" { - interface Register { - Lucia: typeof lucia; - DatabaseUserAttributes: DatabaseUserAttributes - } -} - -interface DatabaseUserAttributes { - userName: string; -} - -export const lucia = new Lucia(adapter, { - getUserAttributes: (attributes) => { - return { - userName: attributes.userName - }; - } +declare module "lucia" { + interface Register { + Lucia: typeof lucia; + DatabaseUserAttributes: DatabaseUserAttributes + } +} + +interface DatabaseUserAttributes { + userName: string; +} + +export const lucia = new Lucia(adapter, { + getUserAttributes: (attributes) => { + return { + userName: attributes.userName + }; + } });
142-153: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-export default async function Page() { - const { user } = await validateRequest(); - return ( - <> - <h1>Hi, {user.userName}!</h1> - <p>Your user ID is {user.id}.</p> - </> - ); +export default async function Page() { + const { user } = await validateRequest(); + return ( + <> + <h1>Hi, {user.userName}!</h1> + <p>Your user ID is {user.id}.</p> + </> + ); }Tools
Markdownlint
146-146: Column: 44
Hard tabs(MD010, no-hard-tabs)
15-15: Vary the phrasing for better readability.The phrasing "needs to" is repeated in nearby sentences. Consider rephrasing to add variety.
- Lucia needs to store your users and sessions in the database. So, your ZModel definition needs to include these two models. + Lucia requires storing your users and sessions in the database. Thus, your ZModel definition should include these two models.Tools
LanguageTool
[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...js). ## Data model requirement Lucia needs to store your users and sessions in the da...(REP_NEED_TO_VB)
[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...he database. So, your ZModel definition needs to include these two models. Here is the s...(REP_NEED_TO_VB)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
Outside diff range, codebase verification and nitpick comments (1)
docs/guides/authentication/lucia.md (1)
15-15: Consider rephrasing to avoid repetition.The sentence "Lucia needs to store your users and sessions in the database" is repetitive. Consider rephrasing for variety.
- Lucia needs to store your users and sessions in the database. So, your ZModel definition needs to include these two models. + To store users and sessions in the database, your ZModel definition must include these two models.Tools
LanguageTool
[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...js). ## Data model requirement Lucia needs to store your users and sessions in the da...(REP_NEED_TO_VB)
[style] ~15-~15: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...he database. So, your ZModel definition needs to include these two models. Here is the s...(REP_NEED_TO_VB)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Outside diff range, codebase verification and nitpick comments (5)
docs/guides/authentication/lucia.md (5)
58-82: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-export const validateRequest = cache( - async (): Promise<{ user: User; session: Session } | { user: null; session: null }> => { - const sessionId = cookies().get(lucia.sessionCookieName)?.value ?? null; - if (!sessionId) { - return { - user: null, - session: null - }; - } - - const result = await lucia.validateSession(sessionId); - // next.js throws when you attempt to set cookie when rendering page - try { - if (result.session && result.session.fresh) { - const sessionCookie = lucia.createSessionCookie(result.session.id); - cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); - } - if (!result.session) { - const sessionCookie = lucia.createBlankSessionCookie(); - cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); - } - } catch {} - return result; - } -); +export const validateRequest = cache( + async (): Promise<{ user: User; session: Session } | { user: null; session: null }> => { + const sessionId = cookies().get(lucia.sessionCookieName)?.value ?? null; + if (!sessionId) { + return { + user: null, + session: null + }; + } + const result = await lucia.validateSession(sessionId); + // next.js throws when you attempt to set cookie when rendering page + try { + if (result.session && result.session.fresh) { + const sessionCookie = lucia.createSessionCookie(result.session.id); + cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); + } + if (!result.session) { + const sessionCookie = lucia.createBlankSessionCookie(); + cookies().set(sessionCookie.name, sessionCookie.value, sessionCookie.attributes); + } + } catch {} + return result; + } +);
101-113: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-export async function getEnhancedPrisma(): Promise<PrismaClient> { - const { user } = await validateRequest(); - // create a wrapper of Prisma client that enforces access policy, - // data validation, and @password, @omit behaviors - return enhance(prisma, { user: {id: user?.id!}}); +export async function getEnhancedPrisma(): Promise<PrismaClient> { + const { user } = await validateRequest(); + // create a wrapper of Prisma client that enforces access policy, + // data validation, and @password, @omit behaviors + return enhance(prisma, { user: {id: user?.id!}}); }
121-138: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-declare module "lucia" { - interface Register { - Lucia: typeof lucia; - DatabaseUserAttributes: DatabaseUserAttributes - } -} - -interface DatabaseUserAttributes { - userName: string; -} - -export const lucia = new Lucia(adapter, { - getUserAttributes: (attributes) => { - return { - userName: attributes.userName - }; - } +declare module "lucia" { + interface Register { + Lucia: typeof lucia; + DatabaseUserAttributes: DatabaseUserAttributes + } +} + +interface DatabaseUserAttributes { + userName: string; +} + +export const lucia = new Lucia(adapter, { + getUserAttributes: (attributes) => { + return { + userName: attributes.userName + }; + } });
7-7: Ensure consistent casing for all titles.The title "Integrating With Lucia" should use consistent casing.
-# Integrating With Lucia +# Integrating with Lucia
144-151: Replace hard tabs with spaces for consistency.The code snippet contains hard tabs which should be replaced with spaces.
-export default async function Page() { - const { user } = await validateRequest(); - return ( - <> - <h1>Hi, {user.userName}!</h1> - <p>Your user ID is {user.id}.</p> - </> - ); +export default async function Page() { + const { user } = await validateRequest(); + return ( + <> + <h1>Hi, {user.userName}!</h1> + <p>Your user ID is {user.id}.</p> + </> + ); }Tools
Markdownlint
145-145: Column: 44
Hard tabs(MD010, no-hard-tabs)
Summary by CodeRabbit