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: Convert 'select" element to 'input' element #148

Merged
merged 4 commits into from
Jul 15, 2024

Conversation

ohansFavour
Copy link
Contributor

@ohansFavour ohansFavour commented Jul 14, 2024

Summary of change

Problem Statement

This PR fixes the following.

  • Prevents overflow of text in dashboard modal
  • Converts the select element to an input-select element

https://www.loom.com/share/d310936b9dec4b1395d41913d27b301e?sid=b48a56f8-f957-4007-84bd-adb7fc04fec1

Summary of solution

(Overview of how the problem is solved by this PR)

Related issues

  • Link to issue1 here
  • Link to issue1 here

Test Plan

Tested on all primary browsers for:

  • Chrome
    • Desktop
    • Mobile
    • Tablet
  • Safari
    • Desktop
    • Mobile
    • Tablet
  • Firefox
    • Desktop
    • Mobile
    • Tablet
  • (Optional) Tested on Safari 12 (Physical or emulator)
    • iPad
    • iPhone
  • (Optional) Tested on physical mobile and tablet device for:
    • Android
    • iOS (including iPadOS)

Feature tests:

  • Dashboard Admin access.

    • Test all the POST, PUT and DELETE endpoints with admins only access enabled for the dashboard recipe.
    • Test all POST, PUT and DELETE endpoints without the admins only access enabled.
  • Search

    • Search with anything that results in an empty state in the UI (Should show an empty state explaining that there were no results)
    • Search with an empty string (Dashboard should not allow this)
    • Email search
      • Serach for "e" with email tag and then delete the tag (Should show one user initially then show all with pagination enabled)
      • Search for "test" with the email tag (Expect 14 results)
      • Search with "g" for email tag (Expect 3 results)
      • Search with "g" and "p" for email tag (Expect 3 results)
      • Search with "g" and "t" for email tag, then delete "t" (Expect 17 results initially, then 3)
      • Search with "@" for email tag (Expect 0 results (This is because at the time of adding this case we would only check for the start of the email or the domain and not any character inside the full email))
      • Search for "passwordless+ABC@gmail.com" with email tag (Expect 1 result)
      • Search for "debugging@supertokens.com" with email tag (Expect 3 results)
      • Search for "gmail" with email tag (Expect 3 results)
      • Search for "ABC" with email tag (Expect 0 results)
      • Search for "a" with email tag (Expect 0 results (This is because at the time of adding this we only check if the email starts with the query and not contains))
      • Search for "team" with email tag (Expect 0 results)
      • Search for "782" with email tag (Expect 1 result)
    • Phone search
      • Search for "1" with phone tag (Expect 3 results)
      • Search for "+1" with phone tag (Expect 3 results)
      • Search for "91" with phone tag (Expect 1 result)
      • Search for "291" with phone tag (Expect 0 results)
      • Search for "+12" with phone tag (Expect 2 results)
      • Search for "5" with phone tag (Expect 0 results)
      • Search for "1(" with phone tag (Expect 0 results (This is because we render phone numbers with brackets so users may end up searching with that))
    • Provider search
      • Search for "g" with provider tag (Expect 5 results)
      • Search for "gi" with provider tag (Expect 2 results)
      • Search for "t" with provider tag (Expect 0 results)
      • Search for "google" with provider tag (Expect 3 results)
    • Combination testing
      • Search with "g" for email tag and "g" for provider tag (Expect 1 result)
      • Search for "github" with provider tag and "782" with email tag (Expect 1 result)
      • Search for "github" and "google" with provider tag (Expect 5 results)
      • Search for "j" and "g" with email tag (Expect 6 results)
      • Search for "1" and "91" with phone tag (Expect 4 results)
      • Search with "google" for provider tag and "1" for phone tag (Expect 0 results)
      • Search for "g" with email tag and "1" with phone tag (Expect 0 results)
      • Search for "k" with provider and "a", "g", "b" (in that order) for email (Expect 0 resutls)
  • General UI testing

    • Test that emty state renders fine (no overflow, no UI glitches, responsiveness etc)
    • Test that the list renders fine (no overflow, no UI glitches, responsiveness etc)
    • Test that pagination is visiable and usable (There should be at least 2 pages worth of users)
    • Test that the list only shows 10 users at a time
    • Test that for users with no accounts linked the auth method i nthe list is correct
    • Test that for users with multiple login methods, the auth method shows correctly
    • Test that search is visible if the feature is enabled
  • Multi tenant testing

    • Create one tenant (tenant1), and add 3 users to them. In the dashboard, when you switch to that tenant, it should list those users.
    • Create a user in tenant1 and using backend sdk's(Go, Python, Node) associate the user to a different tenant and select that tenant on the dashboard from the tenants dropdown, it should show that user in the list
  • User Roles and Permissions testing

    • UserRoles page testing
      • Test the empty state when there are no roles created on the roles page.
      • Test creation, delete and updating functionality of the roles are working properly.
      • Test pagination of the roles list with more than 2 or 3 pages of data atleast.
      • Test that the permissions per role are rendering properly without overflowing the parent table.
      • Check for the feature_not_enabled state on both userDetails page and user roles page.
    • userDetails page testing with respect to roles and permissions.
      • Test adding and deleting roles to a user.
      • Test the roles search feature and make sure that the list does not include any assigned roles in it.
      • Test by associating the user with multiple tenants and assigning roles to the user in each tenant separately.
  • User creation

    • Test without initializing any recipes on the backend SDK and ensure that the UI responds with correct alert errors.
    • Ensure the relevant warning message is shown while switching between authentication methods.
    • EmailPassword user creation.
      • Test EmailPassword user creation by enabling both emailpassword and thirdpartyemailpassword together and individually.
      • Test with custom form field validators; make sure that the overrides are working properly.
      • Test default email and password validations to ensure they are working properly.
      • Test that no duplicate users are created with the same email address.
    • Passwordless user creation.
      • Test Passwordless user creation by enabling both passwordless and thirdpartypasswordless together and individually.
      • Test creating a user with different contactMethod's ensure that the frontend displays relevant UI based on the contactMethod selected.
      • Test default email and phoneNumber validations to ensure they are working properly.
      • Test user-defined custom email and phoneNumber validators to ensure they are working properly.
    • Test AccountLinking by creating an emailpassword and passwordless user with the same email and make sure that the accounts are linked.
  • User details

    • Can edit email of non third party login method if there is only 1 login method for the user
    • Can edit email of non third party login method if there are >= 2 login methods for the user
    • Deleting a non primary login method for a user only deletes that login method, and not the whole user
    • Deleting a primary login method for a user deletes only that primary login method and not the user
    • Deleting a user deletes all the login methods for that user as well

Documentation changes

(If relevant, please create a PR in our docs repo, or create a checklist here highlighting the necessary changes)

Checklist for important updates

  • Changelog has been updated
  • Changes to the version if needed
    • In package.json
    • In package-lock.json
    • In src/version.ts
  • Had run npm run build
  • Had installed and ran the pre-commit hook

Remaining TODOs for this PR

  • Item1
  • Item2

@ohansFavour ohansFavour changed the title Fix/minor issues fix: minor issues Jul 14, 2024
@ohansFavour ohansFavour changed the title fix: minor issues fix: Convert 'select" element to 'input' element Jul 14, 2024
@ohansFavour ohansFavour requested a review from sattvikc July 14, 2024 23:24
@sattvikc sattvikc merged commit 8e5804e into feat/add-multitenancy-dashboard Jul 15, 2024
1 of 3 checks passed
@sattvikc sattvikc deleted the fix/minor-issues branch July 15, 2024 04:59
sattvikc added a commit that referenced this pull request Jul 15, 2024
* Add tenant management page

* Fix icons

* Fetch tenants on load

* Add login methods for tenants

* Add search input component

* Integrate search component

* Add tenants not found state

* Update changelog

* Add create new tenant flow

* Change TenantManagement component to use arrow function

* Handle other errors when creating tenant

* Handle tenant row click

* Add get tenant info API

* Fetch tenant details and handle loading and error states

* Add tenant detail header

* Add core config section

* Add initial core config section

* Add toggle component

* Finish core config UI

* Wrap up the core config section

* Add first and secondary factors section UI

* Integrate adding core config

* Handle property delete

* Handle saving config properties

* Fetch core config from the API

* Integrate MFA

* Integrate see users button

* Make details page responsive

* Add warning about MFA recipe

* Handle delete tenant

* Add third party section

* Add third party provider listing section

* 'Add third-party provider configuration UI

* Add client configuration collapsible section

* Improve toggle focus visuals

* Update third party UI to work with custom fields

* Handle crud operations for built in providers

* Use core APIs for core config list

* Build custom provider UI

* Fix types

* Refactor field inputs

* Integrate custom providers section

* Add prefix to third party field

* Add additional scopes to the client config

* Handle merging providers based on different providers in core and static

* Handle no login methods state

* Show relevant errors when no login methods added

* Add dialog to prompt adding providers when none added yet.

* Add SAML provider configuration handling

* Refactor tenant API routes for core config list eg/ fetching URL change needed. Fix missing data fetch when listing tenants.

* Remove the method to read initialized recipe from window

* Show relevant errors directly from core when creating tenant

* Use tenant id from path

* Add different error states for login methods

* Move search state up the tree

* Update tenant detail and login methods API and fix type errors

* Integrate core config section

* WIP: Third party provider integration

* Merge provider forms

* Finish third party integration

* Update third party API

* Move providers list to dialog

* API updates

* Fixes for provider form

* Ask for tenantId when deleting tenant

* Add edit plugin property modal

* Use name instead of id for third party providers section

* Remove mocks for third party APIs

* Move require email outside userInfoMap

* Login methods section add API call to individual toggle

* Update example and copy for core config

* Update core config API

* Fix styling issues and removed unused components

* Revert server file

* Revert error on success in login methods

* fix: test cases for tenant management dashboard

* Update core config UI

* Fix responsiveness

* Use svg for all third party provider icons

* Review updates

* New UI for third party id suffix

* Login methods review updates and minor CSS fixes

* fix: core config

* fix: as per updated apis

* fix: multiline input for apple private key

* fix: services cleanup

* fix: create tenant

* fix: create tenant

* fix: error messages

* fix: pr comments

* fix: third party id prefix

* fix: pr comments

* fix: pr comments

* fix: error message

* 💇‍♂️ Remove body scroll from dialog, by default

* 💇‍♀️ Remove overflow from dashboard layout

* 🛠 Close modal when overlay is clicked, by default

* 💇‍♀️ Fix layout style

* 💇‍♀️ Fix tenant page responsiveness

* 💇‍♀️ Fix third-party login responsiveness

* 📝 Update changelog

* fix: remove msg

* fix: minor fixes

* fix: version update

* fix: provider form

* fix: name dropdown for boxy saml

* fix: remove openid

* fix: apple

* fix: name compulsory for custom provider

* fix: mfa override error

* fix: Convert 'select" element to 'input' element (#148)

* fix overflowing text

* Use convert select element to an input-dropdown

* Use 100% width for dropdown options

* revert changelog changes

* fix: type

* fix: scope normalisation

* fix: minor

---------

Co-authored-by: Sattvik Chakravarthy <sattvik@gmail.com>
Co-authored-by: Favour Ohans <fohanekwu@gmail.com>
Co-authored-by: Sattvik Chakravarthy <sattvik@supertokens.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants