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

Auth confirmSignIn send deviceName with value '' in Google chrome using Simulator #14100

Open
3 tasks done
luke92 opened this issue Dec 25, 2024 · 9 comments
Open
3 tasks done
Labels
Auth Related to Auth components/category bug Something isn't working

Comments

@luke92
Copy link

luke92 commented Dec 25, 2024

Before opening, please confirm:

JavaScript Framework

React

Amplify APIs

Authentication

Amplify Version

v6

Amplify Categories

auth

Backend

None

Environment information

System:
    OS: macOS 15.1.1
    CPU: (8) arm64 Apple M1
    Memory: 162.09 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.19.0 - ~/.nvm/versions/node/v18.19.0/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 10.2.3 - ~/.nvm/versions/node/v18.19.0/bin/npm
    Watchman: 2024.10.07.00 - /opt/homebrew/bin/watchman
  Browsers:
    Brave Browser: 131.1.73.101
    Chrome: 131.0.6778.205
    Edge: 131.0.2903.112
    Safari: 18.1.1
  npmPackages:
    @aws-amplify/auth: 6.3.5 => 6.3.5 (6.9.0)
    @aws-amplify/auth/cognito:  undefined ()
    @aws-amplify/auth/cognito/server:  undefined ()
    @aws-amplify/auth/enable-oauth-listener:  undefined ()
    @aws-amplify/auth/server:  undefined ()
    @aws-amplify/ui-react: ^6.5.5 => 6.7.0 
    @aws-amplify/ui-react-internal:  undefined ()
    @aws-amplify/ui-react-server:  undefined ()
    @aws-sdk/client-ssm: ^3.645.0 => 3.687.0 
    @babel/core: 7.23.7 => 7.23.7 (7.26.0, 7.24.7)
    @babel/eslint-parser: 7.23.3 => 7.23.3 
    @babel/node: 7.22.19 => 7.22.19 
    @babel/parser: 7.23.6 => 7.23.6 (7.26.2, 7.24.7)
    @babel/plugin-proposal-private-property-in-object: 7.21.11 => 7.21.11 (7.21.0-placeholder-for-preset-env.2)
    @babel/preset-env: 7.23.8 => 7.23.8 
    @babel/preset-react: 7.23.3 => 7.23.3 
    @babel/preset-typescript: ^7.24.7 => 7.26.0 
    @babel/traverse: 7.23.7 => 7.23.7 (7.25.9, 7.24.7)
    @emotion/cache: 11.11.0 => 11.11.0 (11.13.5)
    @emotion/react: 11.11.4 => 11.11.4 (11.13.5)
    @emotion/styled: 11.11.5 => 11.11.5 (11.13.5)
    @hookform/resolvers: 3.6.0 => 3.6.0 
    @hookform/resolvers/ajv:  1.0.0 
    @hookform/resolvers/arktype:  2.0.0 
    @hookform/resolvers/class-validator:  1.0.0 
    @hookform/resolvers/computed-types:  1.0.0 
    @hookform/resolvers/effect-ts:  1.0.0 
    @hookform/resolvers/io-ts:  1.0.0 
    @hookform/resolvers/joi:  1.0.0 
    @hookform/resolvers/nope:  1.0.0 
    @hookform/resolvers/superstruct:  1.0.0 
    @hookform/resolvers/typanion:  1.0.0 
    @hookform/resolvers/typebox:  1.0.0 
    @hookform/resolvers/valibot:  1.0.0 
    @hookform/resolvers/vest:  1.0.0 
    @hookform/resolvers/yup:  1.0.0 
    @hookform/resolvers/zod:  1.0.0 
    @mui/base: 5.0.0-beta.40 => 5.0.0-beta.40 
    @mui/icons-material: ^6.1.1 => 6.1.6 
    @mui/material: 5.15.19 => 5.15.19 (6.1.8)
    @mui/styles: 5.15.19 => 5.15.19 
    @mui/system: 5.15.15 => 5.15.15 (6.1.8)
    @mui/x-date-pickers: 7.6.2 => 7.6.2 
    @popperjs/core: 2.11.8 => 2.11.8 
    @react-google-maps/api: ^2.20.3 => 2.20.3 
    @reduxjs/toolkit: 2.2.5 => 2.2.5 
    @reduxjs/toolkit-query:  1.0.0 
    @reduxjs/toolkit-query-react:  1.0.0 
    @reduxjs/toolkit-react:  1.0.0 
    @rtk-query/codegen-openapi: 1.2.0 => 1.2.0 
    @segment/analytics-next: ^1.76.0 => 1.76.0 
    @sentry/react: ^8.39.0 => 8.39.0 
    @tailwindcss/aspect-ratio: 0.4.2 => 0.4.2 
    @tailwindcss/typography: 0.5.13 => 0.5.13 
    @testing-library/dom: ^10.4.0 => 10.4.0 
    @testing-library/jest-dom: ^6.5.0 => 6.6.3 
    @testing-library/react: ^16.0.1 => 16.0.1 
    @types/autosuggest-highlight: 3.2.3 => 3.2.3 
    @types/babel-traverse: 6.25.10 => 6.25.10 
    @types/babel__parser: 7.1.1 => 7.1.1 
    @types/babel__traverse: 7.20.6 => 7.20.6 
    @types/crypto-js: ^4.2.2 => 4.2.2 
    @types/draft-js: 0.11.18 => 0.11.18 
    @types/draftjs-to-html: 0.8.4 => 0.8.4 
    @types/glob: 8.1.0 => 8.1.0 
    @types/google-map-react: 2.1.10 => 2.1.10 
    @types/google.maps: ^3.58.1 => 3.58.1 
    @types/jest: 29.5.12 => 29.5.12 
    @types/js-beautify: 1.14.3 => 1.14.3 
    @types/lodash: 4.17.4 => 4.17.4 
    @types/marked: 4.3.2 => 4.3.2 
    @types/material-ui: 0.21.17 => 0.21.17 
    @types/node: 20.12.12 => 20.12.12 
    @types/prismjs: 1.26.4 => 1.26.4 
    @types/qs: 6.9.15 => 6.9.15 
    @types/react: 18.3.3 => 18.3.3 (18.3.12)
    @types/react-autosuggest: 10.1.11 => 10.1.11 
    @types/react-beautiful-dnd: 13.1.8 => 13.1.8 
    @types/react-dom: 18.3.0 => 18.3.0 
    @types/react-draft-wysiwyg: 1.13.8 => 1.13.8 
    @types/react-redux: 7.1.33 => 7.1.33 
    @types/react-router: 5.1.20 => 5.1.20 
    @types/react-router-dom: 5.3.3 => 5.3.3 
    @types/react-swipeable-views: 0.13.5 => 0.13.5 
    @types/redux-logger: 3.0.13 => 3.0.13 
    @types/styled-components: 5.1.34 => 5.1.34 
    @types/webpack-env: 1.18.5 => 1.18.5 
    @typescript-eslint/eslint-plugin: 7.11.0 => 7.11.0 (5.62.0)
    @typescript-eslint/parser: 7.11.0 => 7.11.0 (5.62.0)
    @vitejs/plugin-react: 4.3.0 => 4.3.0 
    ajv: 8.16.0 => 8.16.0 (6.12.6)
    autoprefixer: 10.4.19 => 10.4.19 
    autosuggest-highlight: 3.3.4 => 3.3.4 
    aws-amplify: ^6.11.0 => 6.11.0 
    aws-amplify/adapter-core:  undefined ()
    aws-amplify/analytics:  undefined ()
    aws-amplify/analytics/kinesis:  undefined ()
    aws-amplify/analytics/kinesis-firehose:  undefined ()
    aws-amplify/analytics/personalize:  undefined ()
    aws-amplify/analytics/pinpoint:  undefined ()
    aws-amplify/api:  undefined ()
    aws-amplify/api/server:  undefined ()
    aws-amplify/auth:  undefined ()
    aws-amplify/auth/cognito:  undefined ()
    aws-amplify/auth/cognito/server:  undefined ()
    aws-amplify/auth/enable-oauth-listener:  undefined ()
    aws-amplify/auth/server:  undefined ()
    aws-amplify/data:  undefined ()
    aws-amplify/data/server:  undefined ()
    aws-amplify/datastore:  undefined ()
    aws-amplify/in-app-messaging:  undefined ()
    aws-amplify/in-app-messaging/pinpoint:  undefined ()
    aws-amplify/push-notifications:  undefined ()
    aws-amplify/push-notifications/pinpoint:  undefined ()
    aws-amplify/storage:  undefined ()
    aws-amplify/storage/s3:  undefined ()
    aws-amplify/storage/s3/server:  undefined ()
    aws-amplify/storage/server:  undefined ()
    aws-amplify/utils:  undefined ()
    axios: ^1.7.4 => 1.7.4 
    axios-mock-adapter: 1.22.0 => 1.22.0 
    babel-jest: ^29.7.0 => 29.7.0 
    clsx: 2.1.1 => 2.1.1 (1.2.1)
    codemods:  0.0.0 
    cross-env: 7.0.3 => 7.0.3 
    crypto-js: 4.2.0 => 4.2.0 
    date-fns: 3.6.0 => 3.6.0 
    draft-js: 0.11.7 => 0.11.7 
    draftjs-to-html: 0.9.1 => 0.9.1 
    eslint: 8.57.0 => 8.57.0 
    eslint-config-airbnb: 19.0.4 => 19.0.4 
    eslint-config-prettier: 9.1.0 => 9.1.0 
    eslint-config-react-app: 7.0.1 => 7.0.1 
    eslint-plugin-flowtype: 8.0.3 => 8.0.3 
    eslint-plugin-import: ^2.31.0 => 2.31.0 
    eslint-plugin-jsx-a11y: 6.8.0 => 6.8.0 
    eslint-plugin-prettier: 5.1.3 => 5.1.3 
    eslint-plugin-react: 7.34.2 => 7.34.2 
    eslint-plugin-react-hooks: ^5.0.0 => 5.0.0 (4.6.2)
    eslint-plugin-react-refresh: ^0.4.9 => 0.4.9 
    eslint-plugin-unused-imports: 4.0.0 => 4.0.0 
    espree: 10.0.1 => 10.0.1 (9.6.1)
    firebase: 10.12.1 => 10.12.1 
    firebase/analytics:  undefined ()
    firebase/app:  undefined ()
    firebase/app-check:  undefined ()
    firebase/auth:  undefined ()
    firebase/auth/cordova:  undefined ()
    firebase/auth/web-extension:  undefined ()
    firebase/compat:  undefined ()
    firebase/compat/analytics:  undefined ()
    firebase/compat/app:  undefined ()
    firebase/compat/app-check:  undefined ()
    firebase/compat/auth:  undefined ()
    firebase/compat/database:  undefined ()
    firebase/compat/firestore:  undefined ()
    firebase/compat/functions:  undefined ()
    firebase/compat/installations:  undefined ()
    firebase/compat/messaging:  undefined ()
    firebase/compat/performance:  undefined ()
    firebase/compat/remote-config:  undefined ()
    firebase/compat/storage:  undefined ()
    firebase/database:  undefined ()
    firebase/firestore:  undefined ()
    firebase/firestore/lite:  undefined ()
    firebase/functions:  undefined ()
    firebase/installations:  undefined ()
    firebase/messaging:  undefined ()
    firebase/messaging/sw:  undefined ()
    firebase/performance:  undefined ()
    firebase/remote-config:  undefined ()
    firebase/storage:  undefined ()
    firebase/vertexai-preview:  undefined ()
    framer-motion: 11.2.10 => 11.2.10 
    glob: 10.4.1 => 10.4.1 (7.2.3)
    history: 5.3.0 => 5.3.0 
    i18next: ^24.1.2 => 24.1.2 
    i18next-browser-languagedetector: ^8.0.2 => 8.0.2 
    i18next-http-backend: ^3.0.1 => 3.0.1 
    identity-obj-proxy: ^3.0.0 => 3.0.0 
    immutable: 4.3.6 => 4.3.6 (3.7.6, 5.0.3)
    jest: ^29.7.0 => 29.7.0 
    jest-environment-jsdom: ^29.7.0 => 29.7.0 
    js-cookie: ^3.0.5 => 3.0.5 (3.0.1)
    jwt-decode: ^4.0.0 => 4.0.0 
    keycode: 2.2.1 => 2.2.1 
    lodash: 4.17.21 => 4.17.21 
    lottie-react: ^2.4.0 => 2.4.0 
    luxon: ^3.5.0 => 3.5.0 
    material-react-table: 2.13.0 => 2.13.0 
    mobile-detect: 1.4.5 => 1.4.5 
    moment: 2.30.1 => 2.30.1 
    mui-one-time-password-input: ^3.0.1 => 3.0.1 
    notistack: 3.0.1 => 3.0.1 
    perfect-scrollbar: 1.5.5 => 1.5.5 
    postcss: 8.4.38 => 8.4.38 (8.4.49)
    postcss-loader: 8.1.1 => 8.1.1 
    prettier: 3.2.5 => 3.2.5 (2.8.8)
    prismjs: 1.29.0 => 1.29.0 
    promise: 8.3.0 => 8.3.0 (7.3.1)
    qs: 6.12.1 => 6.12.1 
    react: 18.3.1 => 18.3.1 
    react-app-alias: 2.2.2 => 2.2.2 
    react-autosuggest: 10.1.0 => 10.1.0 
    react-dom: 18.3.1 => 18.3.1 
    react-draft-wysiwyg: 1.15.0 => 1.15.0 
    react-google-autocomplete: ^2.7.3 => 2.7.3 
    react-hook-form: 7.51.5 => 7.51.5 
    react-i18next: ^15.2.0 => 15.2.0 
    react-international-phone: ^4.3.0 => 4.3.0 
    react-plaid-link: ^3.6.1 => 3.6.1 
    react-popper: 2.3.0 => 2.3.0 
    react-redux: 9.1.2 => 9.1.2 
    react-refresh: 0.14.2 => 0.14.2 
    react-router: 6.23.1 => 6.23.1 
    react-router-dom: 6.23.1 => 6.23.1 
    react-spring: ^9.7.4 => 9.7.4 
    react-swipeable: 7.0.1 => 7.0.1 
    redux-logger: 4.0.0 => 4.0.0 
    redux-persist: ^6.0.0 => 6.0.0 
    redux-persist/integration/react:  undefined ()
    reselect: 5.1.1 => 5.1.1 
    s: 1.0.0 => 1.0.0 
    sass: ^1.81.0 => 1.81.0 
    socket.io-client: ^4.8.1 => 4.8.1 (4.7.5)
    source-map-explorer: 2.5.3 => 2.5.3 
    styled-components: 6.1.11 => 6.1.11 
    styled-components/native:  undefined ()
    stylis: 4.3.2 => 4.3.2 (4.2.0)
    stylis-plugin-rtl: 2.1.1 => 2.1.1 
    tailwindcss: 3.4.4 => 3.4.4 
    ts-jest: ^29.2.5 => 29.2.5 
    ts-node: 10.9.2 => 10.9.2 
    type-fest: 4.20.0 => 4.20.0 (0.20.2, 0.21.3)
    typescript: 5.4.5 => 5.4.5 
    typescript-plugin-css-modules: 5.1.0 => 5.1.0 
    user-agent-data-types: ^0.4.2 => 0.4.2 
    util: 0.12.5 => 0.12.5 
    uuid: ^11.0.3 => 11.0.3 (9.0.1)
    vite: ^6.0.1 => 6.0.1 
    vite-plugin-svgr: ^4.3.0 => 4.3.0 
    vite-tsconfig-paths: ^5.1.3 => 5.1.3 
    web-vitals: 4.1.0 => 4.1.0 
    yargs: ^17.7.2 => 17.7.2 (15.4.1, 16.2.0)
    zod: 3.23.8 => 3.23.8 
    zustand: ^5.0.1 => 5.0.1 
  npmGlobalPackages:
    corepack: 0.22.0
    npm: 10.2.3

Describe the bug

I have a problem with the AWS AMPLIFY library for the authentication service.
We are migrating an application from Angular to React, and in React we are having an issue where the confirmSignIn method sends an empty DeviceName in the payload.
It turns out that the problem occurs when using Google Chrome, but with Safari this problem does not occur.
In Angular, in fact, this parameter is not sent and it works fine.

Request URL:
https://cognito-idp.us-west-2.amazonaws.com/
Request Method:
POST
Status Code:
400 Bad Request

Payload
{"AccessToken":"token","DeviceName":"","DeviceKey":"deviceKey","DeviceSecretVerifierConfig":{"Salt":"salt","PasswordVerifier":"passWordverifyer"}}

x-amzn-errormessage:
1 validation error detected: Value '' at 'deviceName' failed to satisfy constraint: Member must have length greater than or equal to 1
image

Expected behavior

If DeviceName is empty should not send in the payload, or send always deviceName

Reproduction steps

image image image image

Code Snippet

I tried using this

const handleSignInConfirmation = async (
    SMSCode: string,
    username: string,
  ): Promise<ConfirmSignInOutput> => {
    const confirmSignInInput: ConfirmSignInInput = {
      challengeResponse: SMSCode,
      options: {
        friendlyDeviceName: navigator.userAgent,
      }
    };
    return transformError(
      confirmSignIn(confirmSignInInput),
      CAwsAmplifyErrorTitles.HANDLE_SIGN_IN_CONFIRM,
      {phone: username},
    );
  };

And this

const handleSignInConfirmation = async (
    SMSCode: string,
    username: string,
  ): Promise<ConfirmSignInOutput> => {
    const confirmSignInInput: ConfirmSignInInput = {
      challengeResponse: SMSCode,
    };
    return transformError(
      confirmSignIn(confirmSignInInput),
      CAwsAmplifyErrorTitles.HANDLE_SIGN_IN_CONFIRM,
      {phone: username},
    );
  };

Log output

// Put your logs below this line


aws-exports.js

No response

Manual configuration

No response

Additional configuration

No response

Mobile Device

No response

Mobile Operating System

No response

Mobile Browser

No response

Mobile Browser Version

No response

Additional information and screenshots

No response

@github-actions github-actions bot added pending-triage Issue is pending triage pending-maintainer-response Issue is pending a response from the Amplify team. labels Dec 25, 2024
@cwomack cwomack self-assigned this Dec 25, 2024
@cwomack cwomack added the Auth Related to Auth components/category label Dec 25, 2024
@luke92
Copy link
Author

luke92 commented Dec 26, 2024

It seems that the problem occurs when we need to simulate the device
image

If i try to view without simulate works fine
image

@luke92 luke92 changed the title Auth confirmSignIn send deviceName with value '' in Google chrome Auth confirmSignIn send deviceName with value '' in Google chrome using Simulator Dec 26, 2024
@HuiSF
Copy link
Member

HuiSF commented Dec 26, 2024

Hi @luke92 thanks for opening this issue. Could you look - on the failed Cognito endpoint requests, what were the values of the x-amz-target header in the requests?

@github-actions github-actions bot removed the pending-maintainer-response Issue is pending a response from the Amplify team. label Dec 26, 2024
@cwomack cwomack added question General question pending-community-response Issue is pending a response from the author or community. and removed pending-triage Issue is pending triage labels Dec 26, 2024
@luke92
Copy link
Author

luke92 commented Dec 26, 2024

Hi @luke92 thanks for opening this issue. Could you look - on the failed Cognito endpoint requests, what were the values of the x-amz-target header in the requests?

Yeah

This is working
x-amz-target:
AWSCognitoIdentityProviderService.RespondToAuthChallenge

But those not (I think The second fails because needs the previous one)
x-amz-target:
AWSCognitoIdentityProviderService.ConfirmDevice

x-amz-target:
AWSCognitoIdentityProviderService.InitiateAuth

Request URL:
https://cognito-idp.us-west-2.amazonaws.com/
Request Method:
POST
Status Code:
400 Bad Request
Referrer Policy:
strict-origin-when-cross-origin

Response headers

access-control-allow-origin:
*

access-control-expose-headers:
x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date
content-length:
185
content-type:
application/x-amz-json-1.1
date:
Thu, 26 Dec 2024 18:05:13 GMT
x-amzn-errormessage:
1 validation error detected: Value '' at 'deviceName' failed to satisfy constraint: Member must have length greater than or equal to 1
x-amzn-errortype:
InvalidParameterException:
x-amzn-requestid:
e50ca2e9-eee9-4752-832b-b4636aea9679

Request Headers

:authority:
cognito-idp.us-west-2.amazonaws.com
:method:
POST
:path:
/
:scheme:
https
accept:
*/*
accept-encoding:
gzip, deflate, br, zstd
accept-language:
en-US,en;q=0.9
cache-control:
no-store
content-length:
1849
content-type:
application/x-amz-json-1.1
origin:
http://localhost:3000
priority:
u=1, i
referer:
http://localhost:3000/
sec-fetch-dest:
empty
sec-fetch-mode:
cors
sec-fetch-site:
cross-site
user-agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1
x-amz-target:
AWSCognitoIdentityProviderService.ConfirmDevice
x-amz-user-agent:
aws-amplify/6.11.0 framework/0

@github-actions github-actions bot added pending-maintainer-response Issue is pending a response from the Amplify team. and removed pending-community-response Issue is pending a response from the author or community. labels Dec 26, 2024
@cwomack
Copy link
Member

cwomack commented Dec 26, 2024

Hello, @luke92 and thanks for opening this issue with all the details and context here. As of v6.3.0 of Amplify, we add a default deviceName when MFA and Device tracking are enabled on Cognito. This deviceName is visible on the Cognito console as well as via the fetchDevices API ('name' property). I think this issue you're seeing is specific to Chrome's device simulation mode. When Chrome simulates a device, it modifies the user agent string, which is affecting how Amplify handles device tracking for Cognito

Can you confirm @HuiSF request above as well as if you have device tracking enabled within Cognito? It sounds like this is expected behavior and we can consider this a feature request to improve the testing behavior when using simulated devices and how we handle the device name string.

@github-actions github-actions bot removed the pending-maintainer-response Issue is pending a response from the Amplify team. label Dec 26, 2024
@cwomack cwomack added feature-request Request a new feature and removed question General question labels Dec 26, 2024
@cwomack
Copy link
Member

cwomack commented Dec 26, 2024

@luke92, thanks for the quick replies! We'll look into making improvements to how we handle this when using simulated devices and follow up with any further questions.

@luke92
Copy link
Author

luke92 commented Dec 26, 2024

Hello, @luke92 and thanks for opening this issue with all the details and context here. As of v6.3.0 of Amplify, we add a default deviceName when MFA and Device tracking are enabled on Cognito. This deviceName is visible on the Cognito console as well as via the fetchDevices API ('name' property). I think this issue you're seeing is specific to Chrome's device simulation mode. When Chrome simulates a device, it modifies the user agent string, which is affecting how Amplify handles device tracking for Cognito

Can you confirm @HuiSF request above as well as if you have device tracking enabled within Cognito? It sounds like this is expected behavior and we can consider this a feature request to improve the testing behavior when using simulated devices and how we handle the device name string.

image

Does this help you?

@github-actions github-actions bot added the pending-maintainer-response Issue is pending a response from the Amplify team. label Dec 26, 2024
@cwomack
Copy link
Member

cwomack commented Dec 27, 2024

Yes, thanks for confirming @luke92. We're reviewing a fix for this internally and will update the label on this to be a bug.

@cwomack cwomack added bug Something isn't working and removed feature-request Request a new feature pending-maintainer-response Issue is pending a response from the Amplify team. labels Dec 27, 2024
@cwomack cwomack removed their assignment Dec 27, 2024
@HuiSF
Copy link
Member

HuiSF commented Dec 30, 2024

This fix is testable via installing the unstable tag now.

npm install aws-amplify@unstable

@luke92
Copy link
Author

luke92 commented Dec 31, 2024

This fix is testable via installing the unstable tag now.

npm install aws-amplify@unstable

Nice! It seems works with this version thanks

image

@github-actions github-actions bot added the pending-maintainer-response Issue is pending a response from the Amplify team. label Dec 31, 2024
@HuiSF HuiSF removed the pending-maintainer-response Issue is pending a response from the Amplify team. label Dec 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Auth Related to Auth components/category bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants