-
Notifications
You must be signed in to change notification settings - Fork 33
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
Google analytics functionality for analytics platform #2528
Conversation
📝 WalkthroughWalkthroughThis pull request introduces a new dependency, Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant LoginPage
participant GoogleAuth
participant HomePage
participant API
User->>LoginPage: Click "Login with Google" button
LoginPage->>User: Redirect to GoogleAuth URL
Note over User: User authenticates with Google
GoogleAuth->>User: Redirect back with token cookie
User->>HomePage: Loads Home page with cookie
HomePage->>Cookies: Retrieve token cookie
HomePage->>jwt_decode: Decode token
HomePage->>API: Request user details
API-->>HomePage: Return user data or error (429)
alt On 429 Rate Limit Error
HomePage->>HomePage: Execute retryWithDelay logic
HomePage->>API: Retry API call
end
HomePage->>Redux: Dispatch setUserInfo & setSuccess
Suggested labels
Suggested reviewers
Poem
Warning Review ran into problems🔥 ProblemsErrors were encountered while retrieving linked issues. Errors (1)
✨ Finishing Touches
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 using PR comments)
Other keywords and placeholders
CodeRabbit Configuration 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: 0
🧹 Nitpick comments (4)
src/platform/src/pages/account/login/index.jsx (2)
114-121
: Add user-facing error feedback.
ThehandleGoogleLogin
function handles errors via console logging, but you might want to show a user-friendly message in case of failure to improve the user experience.
196-207
: Consistent button styling and accessibility.
The new "Login with Google" button is straightforward. Confirm that styles match your brand's accessibility guidelines, and consider adding anaria-label
for improved screen reader support.src/platform/src/pages/Home/index.jsx (2)
30-31
: Use environment variables for retry constants.
StoringMAX_RETRIES
andRETRY_DELAY
in environment variables or a config file would allow easy adjustments without redeploying.
103-113
: Consider exponential backoff.
retryWithDelay
is helpful, but for efficiency and to avoid server strain, consider an exponential backoff strategy rather than a fixedRETRY_DELAY
.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
src/platform/yarn.lock
is excluded by!**/yarn.lock
,!**/*.lock
📒 Files selected for processing (3)
src/platform/package.json
(1 hunks)src/platform/src/pages/Home/index.jsx
(3 hunks)src/platform/src/pages/account/login/index.jsx
(4 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: test-analytics-platform-changes
- GitHub Check: build-push-deploy-analytics-platform-preview
- GitHub Check: check for changes in netmanager
🔇 Additional comments (8)
src/platform/package.json (1)
33-33
: Confirm version stability and vulnerability status.
Adding"js-cookie"
is beneficial for cookie management, but remember to confirm the version's security posture before deploying.Do you want to run a vulnerability check or is that handled in your pipeline?
src/platform/src/pages/account/login/index.jsx (1)
21-21
: Check environment-based URL usage.
EnsureGOOGLE_AUTH_URL
is configured properly. If it often changes, consider storing it in an environment variable or config file for easier maintenance.src/platform/src/pages/Home/index.jsx (6)
20-28
: Consolidate new imports.
Make sure all newly imported modules (Cookies
,jwt_decode
,useRouter
, and Redux actions) are declared in your dependencies and used consistently. Watch out for potential SSR pitfalls withwindow
ordocument
.
75-75
: Routing approach looks fine.
UsinguseRouter()
is standard, but be cautious if any SSR logic calls it at build time in Next.js.
83-83
: Good practice for loading states.
Setting a dedicatedloading
state is a clean approach to handle async events and provide user feedback.
115-139
: Validate user group presence more robustly.
setupUserSession
presumes the first group is valid. If there's a scenario with empty or missing groups, handle it gracefully to avoid potential runtime errors.
141-174
: Check Google redirect flow.
The logic for retrieving and validating cookies, then decoding tokens, is correct. However, confirm that your server sets theaccess_token
cookie securely (e.g., HttpOnly) to mitigate security risks.
175-177
: Neat loading state fallback.
RenderingHomeSkeleton
during loading keeps the UI consistent and improves perceived performance.
New next-platform changes available for preview here |
This pull request introduces several changes to the
src/platform
directory, primarily focused on adding Google authentication and improving user session handling. The most important changes include adding new dependencies, updating the Home page to handle Google redirects, and modifying the login page to include a Google login button.Authentication and Session Management:
src/platform/package.json
: Addedjs-cookie
andjwt-decode
dependencies for handling cookies and decoding JWT tokens.src/platform/src/pages/Home/index.jsx
: Updated to handle Google redirects, including retrieving tokens from cookies, decoding JWT tokens, and setting up user sessions. Introduced a retry mechanism for API requests. [1] [2] [3]Login Page Enhancements:
src/platform/src/pages/account/login/index.jsx
: Added a new constant for the Google authentication URL and a handler for Google login. Included a new button for logging in with Google. [1] [2] [3] [4]