Skip to content
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

fix: Signup error redirect to wrong path #31179

Merged
merged 3 commits into from Feb 16, 2024
Merged

fix: Signup error redirect to wrong path #31179

merged 3 commits into from Feb 16, 2024

Conversation

sharat87
Copy link
Member

@sharat87 sharat87 commented Feb 16, 2024

On signup failure, we need to redirect the client to same signup page they were on, for the error message to show up. So instead of redirecting to the homepage, we get the path from the incoming request and use that.

Summary by CodeRabbit

  • New Features
    • Enhanced signup and login process by dynamically setting the redirect path based on the referer header, improving user navigation post-login.

@sharat87
Copy link
Member Author

/build-deploy-preview skip-tests=true

@github-actions github-actions bot added the Bug Something isn't working label Feb 16, 2024
Copy link

Deploying Your Preview: https://github.com/appsmithorg/appsmith/actions/runs/7927931183.
Workflow: On demand build Docker image and deploy preview.
skip-tests: true.
env: ``.
PR: 31179.
recreate: .

trishaanand
trishaanand previously approved these changes Feb 16, 2024
Copy link

Deploy-Preview-URL: https://ce-31179.dp.appsmith.com

@sharat87
Copy link
Member Author

/build-deploy-preview skip-tests=true

Copy link

Deploying Your Preview: https://github.com/appsmithorg/appsmith/actions/runs/7928032791.
Workflow: On demand build Docker image and deploy preview.
skip-tests: true.
env: ``.
PR: 31179.
recreate: .

Copy link

Deploy-Preview-URL: https://ce-31179.dp.appsmith.com

@sharat87 sharat87 marked this pull request as ready for review February 16, 2024 08:49
@sharat87 sharat87 merged commit 712a28e into release Feb 16, 2024
13 checks passed
@sharat87 sharat87 deleted the fix/signup-failure branch February 16, 2024 08:49
Copy link
Contributor

coderabbitai bot commented Feb 16, 2024

Walkthrough

Walkthrough

The recent update introduces a modification in the user signup and login process, wherein the redirect path is dynamically determined based on the referer header's value. This adjustment allows for a more flexible redirection strategy, automatically adapting to the referer if present, or resorting to a predefined default path otherwise. This enhancement aims to improve user experience by ensuring that redirection after signup or login is more contextually relevant.

Changes

File Path Change Summary
.../appsmith-server/src/main/java/com/appsmith/server/solutions/ce/UserSignupCEImpl.java Updated the signupAndLoginFromFormData method to dynamically set the redirect path using the referer header, with a fallback to a default path if the referer is not usable.

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?

Share

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests for this file.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit tests for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository from git and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

Comment on lines +222 to +231
String path = "/user/signup";

String referer = exchange.getRequest().getHeaders().getFirst("referer");
if (referer != null) {
try {
path = URI.create(referer).getPath();
} catch (IllegalArgumentException ex) {
// This is okay, we just use the default value for `path`.
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logic for determining the redirect path based on the referer header is a good approach to ensure users are redirected back to the signup page they came from. However, there are a few considerations:

  • Security: Ensure that the referer header is validated to prevent open redirect vulnerabilities. Consider checking if the referer is a valid URL within your application's domain.
  • Fallback Path: The default fallback path is set to "/user/signup". Confirm that this path is universally applicable for all signup scenarios in your application.
  • Error Handling: The catch for IllegalArgumentException is appropriate, but consider logging the exception for debugging purposes, especially if the referer header is malformed.

Consider adding validation for the referer header to ensure it belongs to your application's domain to prevent open redirect vulnerabilities.

URI redirectUri;
try {
redirectUri = new URIBuilder()
.setPath("/")
.setPath(path)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When constructing the redirectUri with the error parameter, it's a good practice to ensure that the error message is URL-encoded to prevent issues with URL parsing, especially if the error message contains special characters.

Ensure the error message is URL-encoded when setting it as a query parameter to prevent potential issues with URL parsing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants