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

[CAPTCHA] Replace ReCAPTCHA with Turnstile #3249

Merged
merged 27 commits into from
Jul 25, 2024
Merged

[CAPTCHA] Replace ReCAPTCHA with Turnstile #3249

merged 27 commits into from
Jul 25, 2024

Conversation

imnasnainaec
Copy link
Collaborator

@imnasnainaec imnasnainaec commented Jul 16, 2024

Resolves #2407

Also:

  • Adds an emailEnabled config and implement it in EmailService.cs
  • Adds environment variables to Backend/Properties/launchSettings.json and updates README accordingly

This change is Reviewable

Copy link

codecov bot commented Jul 16, 2024

Codecov Report

Attention: Patch coverage is 33.33333% with 18 lines in your changes missing coverage. Please review.

Project coverage is 74.52%. Comparing base (63563d9) to head (01b67b4).
Report is 38 commits behind head on master.

Files with missing lines Patch % Lines
src/components/Login/Captcha.tsx 0.00% 15 Missing ⚠️
Backend/Controllers/UserController.cs 40.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3249      +/-   ##
==========================================
- Coverage   74.76%   74.52%   -0.25%     
==========================================
  Files         278      279       +1     
  Lines       10652    10669      +17     
  Branches     1284     1287       +3     
==========================================
- Hits         7964     7951      -13     
- Misses       2322     2357      +35     
+ Partials      366      361       -5     
Flag Coverage Δ
backend 83.97% <40.00%> (+0.13%) ⬆️
frontend 66.20% <31.81%> (-0.56%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 14 of 25 files at r1, 2 of 7 files at r2, all commit messages.
Reviewable status: 16 of 29 files reviewed, 10 unresolved discussions (waiting on @imnasnainaec)


.github/workflows/deploy_qa.yml line 7 at r2 (raw file):

    branches:
      - master
      #- turnstile

Remove dead code.

Code quote:

      #- turnstile

.github/workflows/deploy_qa.yml line 98 at r2 (raw file):

    needs: build
    # Only push to the QA server when built on the master branch
    #if: ${{ github.ref_name == 'master' }}

Re-enable this line.

Code quote:

   #if: ${{ github.ref_name == 'master' }}

Backend/Startup.cs line 182 at r2 (raw file):

                        emailServiceFailureMessage);

                    // Should we add a COMBINE_TURNSTILE_SECRET_KEY check?

The secret key should be set and an additional variable should be set to indicate whether turnstile should be used:

  1. in the Kubernetes environment, the environment variable should be set - the ConfigMap is not setup to have optional members
  2. It is not good design to have values with special meanings, e.g. if the secret key is "Override" then don't use turnstile.

Code quote:

                    // Should we add a COMBINE_TURNSTILE_SECRET_KEY check?

Backend/Controllers/UserController.cs line 27 at r2 (raw file):

        private readonly IPermissionService _permissionService;

        private const string TurnstileVerifyUrl = "https://challenges.cloudflare.com/turnstile/v0/siteverify";

This is better as a configuration item than hard-coded in the source.

Code quote:

        private const string TurnstileVerifyUrl = "https://challenges.cloudflare.com/turnstile/v0/siteverify";

Backend/Controllers/UserController.cs line 38 at r2 (raw file):

        }

        /// <summary> Validates a Cloudflare Turnstile token </summary>

If I understand it, this is only invoked when requested by the UI, correct? The function title makes it sound (to me) as though it is part of startup validation. Even so, the function should test that turnstile is enabled before trying to send the request.

Code quote:

        /// <summary> Validates a Cloudflare Turnstile token </summary>

deploy/helm/thecombine/values.yaml line 29 at r2 (raw file):

  combineSmtpUsername: "Override"
  combineSmtpPassword: "Override"
  combineTurnstileSecretKey: "Override"

Add enable/disable variable.

Code quote:

  combineTurnstileSecretKey: "Override"

deploy/helm/thecombine/charts/backend/values.yaml line 24 at r2 (raw file):

  combineSmtpUsername: "Override"
  combineSmtpPassword: "Override"
  combineTurnstileSecretKey: "Override"

Again, add enable/disable variable.

Code quote:

  combineTurnstileSecretKey: "Override"

deploy/scripts/install-combine.sh line 12 at r2 (raw file):

    COMBINE_JWT_SECRET_KEY=`LC_ALL=C tr -dc 'A-Za-z0-9*\-_@!' </dev/urandom | head -c 64; echo`
    # Collect values from user
    read -p "Enter COMBINE_TURNSTILE_SECRET_KEY: " COMBINE_TURNSTILE_SECRET_KEY

Remove.
install-combine.sh is only called by the self-extracting installer when installing on a Linux laptop. If this is required, it no longer is a secret - we would need to distribute it to people who request it.

I am currently updating the script. I will add a comment at the beginning explaining its use. I can also rename it to linux-install.sh if you think that would help. I may be able to move it out of ../deploy/scripts as well.

Code quote:

    read -p "Enter COMBINE_TURNSTILE_SECRET_KEY: " COMBINE_TURNSTILE_SECRET_KEY

deploy/scripts/install-combine.sh line 18 at r2 (raw file):

    cat <<.EOF > ${CONFIG_DIR}/env
    export COMBINE_JWT_SECRET_KEY="${COMBINE_JWT_SECRET_KEY}"
    export COMBINE_TURNSTILE_SECRET_KEY="${COMBINE_TURNSTILE_SECRET_KEY}"

Remove this as well.

Code quote:

    export COMBINE_TURNSTILE_SECRET_KEY="${COMBINE_TURNSTILE_SECRET_KEY}"

public/locales/en/translation.json line 79 at r2 (raw file):

  },
  "turnstile": {
    "error": "Cloudflare Turnstile verification failed or expired. Please refresh the page to try again."

I think the reference to Cloudflare Turnstile is confusing for users - I do not expect them to know what it is. Perhaps Page verification expired. Please refresh the page.

Code quote:

Cloudflare Turnstile verification failed or expired. Please refresh the page to try again.

Copy link
Collaborator Author

@imnasnainaec imnasnainaec left a comment

Choose a reason for hiding this comment

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

Reviewable status: 6 of 38 files reviewed, 9 unresolved discussions (waiting on @jmgrady)


.github/workflows/deploy_qa.yml line 7 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Remove dead code.

I first want to uncomment this when we are ready to test on QA.


.github/workflows/deploy_qa.yml line 98 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Re-enable this line.

I first want to test on QA before uncommenting this after review is done.


Backend/Startup.cs line 182 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

The secret key should be set and an additional variable should be set to indicate whether turnstile should be used:

  1. in the Kubernetes environment, the environment variable should be set - the ConfigMap is not setup to have optional members
  2. It is not good design to have values with special meanings, e.g. if the secret key is "Override" then don't use turnstile.

I've yet to create another environment variable for "whether turnstile should be used" because environment variables are strings and I'm not sure the best way to represent a bool that won't require an arbitrary string-value check somewhere.


Backend/Controllers/UserController.cs line 27 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

This is better as a configuration item than hard-coded in the source.

Done.


Backend/Controllers/UserController.cs line 38 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

If I understand it, this is only invoked when requested by the UI, correct? The function title makes it sound (to me) as though it is part of startup validation. Even so, the function should test that turnstile is enabled before trying to send the request.

It seems that the functions presence in a Controller should provide the necessary context. This has a very similar summary to alike functions below.


public/locales/en/translation.json line 79 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

I think the reference to Cloudflare Turnstile is confusing for users - I do not expect them to know what it is. Perhaps Page verification expired. Please refresh the page.

Done.


deploy/scripts/install-combine.sh line 12 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Remove.
install-combine.sh is only called by the self-extracting installer when installing on a Linux laptop. If this is required, it no longer is a secret - we would need to distribute it to people who request it.

I am currently updating the script. I will add a comment at the beginning explaining its use. I can also rename it to linux-install.sh if you think that would help. I may be able to move it out of ../deploy/scripts as well.

Done.


deploy/scripts/install-combine.sh line 18 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Remove this as well.

Done.

Copy link
Collaborator Author

@imnasnainaec imnasnainaec left a comment

Choose a reason for hiding this comment

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

Reviewable status: 6 of 44 files reviewed, 9 unresolved discussions (waiting on @jmgrady)


Backend/Startup.cs line 182 at r2 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I've yet to create another environment variable for "whether turnstile should be used" because environment variables are strings and I'm not sure the best way to represent a bool that won't require an arbitrary string-value check somewhere.

I'm also wondering whether it's worthwhile to engineer that variable in the backend when the only function that uses it will never be called if its false.

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 14 of 19 files at r3, 4 of 12 files at r4, 3 of 7 files at r5, 9 of 10 files at r7, all commit messages.
Reviewable status: 31 of 44 files reviewed, 11 unresolved discussions (waiting on @imnasnainaec)


README.md line 146 at r5 (raw file):

1. If you want the email services to work you will need to set the following environment variables. These values must be
   kept secret, so ask your email administrator to supply them. Set them in your `.profile` (Linux or Mac 10.14-), your

What about setting COMBINE_JWT_SECRET_KEY?

Code quote:

1. If you want the email services to work you will need to set the following environment variables. These values must be
   kept secret, so ask your email administrator to supply them. Set them in your `.profile` (Linux or Mac 10.14-), your

.github/workflows/deploy_qa.yml line 7 at r2 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I first want to uncomment this when we are ready to test on QA.

That make sense. I will leave this unresolved until the testing is complete and this file is updated.


.github/workflows/deploy_qa.yml line 98 at r2 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I first want to test on QA before uncommenting this after review is done.

Ditto.


Backend/Startup.cs line 182 at r2 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I'm also wondering whether it's worthwhile to engineer that variable in the backend when the only function that uses it will never be called if its false.

Sorry I was not clearer. My point was not that the issue is that there is a mixing of data types but that there is a mixing of function. On purpose is to enable/disable turnstile; the other is to provide the secret to make turnstile work.

As you stated, environment variables are strings and the API should be defined as: If the environment variable's value equals the string "true", then the functionality is enabled. It is not enabled for any other value.


Backend/Startup.cs line 198 at r5 (raw file):

                        null,
                        turnstileFailureMessage);
                });

These log errors if turnstile is not setup but it is a valid configuration if it is not enabled. These errors should only be logged if Turnstile is turned on. Perhaps _logger.LogInformation can be called when Turnstile is disabled.

Code quote:

                    const string turnstileFailureMessage = "Turnstile verification will not be available.";
                    options.TurnstileSecretKey = CheckedEnvironmentVariable(
                        "TURNSTILE_SECRET_KEY",
                        null,
                        turnstileFailureMessage);
                    options.TurnstileVerifyUrl = CheckedEnvironmentVariable(
                        "TURNSTILE_VERIFY_URL",
                        null,
                        turnstileFailureMessage);
                });

Backend/Startup.cs line 246 at r5 (raw file):

            // Turnstile types
            services.AddTransient<ITurnstileContext, TurnstileContext>();
            services.AddTransient<ITurnstileService, TurnstileService>();

Similarly, shouldn't these transients only be added when Turnstile is enabled?

Code quote:

            // Turnstile types
            services.AddTransient<ITurnstileContext, TurnstileContext>();
            services.AddTransient<ITurnstileService, TurnstileService>();

deploy/helm/thecombine/values.yaml line 59 at r6 (raw file):

  configShowCertExpiration: false
  configAnalyticsWriteKey: ""
  configTurnstileRequired: false

This should be in the global variables. I still maintain that the backend should know whether turnstile is enabled rather than assume no requests will come in - the backend should behave reasonably if it receives unexpected data.

Code quote:

  configTurnstileRequired: false

deploy/scripts/setup_files/profiles/dev.yaml line 15 at r7 (raw file):

    frontend:
      configTurnstileRequired: "true"
      # https://developers.cloudflare.com/turnstile/troubleshooting/testing/

This comment would be more helpful if there were some explanation of what the URL is for.

Code quote:

      # https://developers.cloudflare.com/turnstile/troubleshooting/testing/

nginx/init/25-combine-runtime-config.sh line 53 at r7 (raw file):

  ["CONFIG_USE_CONNECTION_URL"]="useConnectionBaseUrlForApi"
  ["CONFIG_TURNSTILE_REQUIRED"]="turnstileRequired"
  ["CONFIG_TURNSTILE_SITE_KEY"]="turnstileSiteKey"

Technically, renaming CAPTCHA to Turnstile in all of the files is not necessary. CAPTCHA stands for "Completely Automated Public Turing test to tell Computers and Humans Apart." The Google implementation is reCAPTCHA.

Code quote:

  ["CONFIG_TURNSTILE_REQUIRED"]="turnstileRequired"
  ["CONFIG_TURNSTILE_SITE_KEY"]="turnstileSiteKey"

Copy link
Collaborator Author

@imnasnainaec imnasnainaec left a comment

Choose a reason for hiding this comment

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

Reviewable status: 12 of 50 files reviewed, 10 unresolved discussions (waiting on @jmgrady)


README.md line 146 at r5 (raw file):

Previously, jmgrady (Jim Grady) wrote…

What about setting COMBINE_JWT_SECRET_KEY?

I added it to Backend/Properties/launchSettings.json so it's no longer needed for npm run backend or npm start. It is still required for a dev docker build, so I moved the instruction to ### Setup Environment Variables below.


Backend/Startup.cs line 182 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Sorry I was not clearer. My point was not that the issue is that there is a mixing of data types but that there is a mixing of function. On purpose is to enable/disable turnstile; the other is to provide the secret to make turnstile work.

As you stated, environment variables are strings and the API should be defined as: If the environment variable's value equals the string "true", then the functionality is enabled. It is not enabled for any other value.

Added, though it should be "True" as that is the bool.TrueString in C#. I also added an analogous backend config for email enabled, to make sure they are both implemented the same way.


Backend/Startup.cs line 246 at r5 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Similarly, shouldn't these transients only be added when Turnstile is enabled?

I think conditionally adding transients for Email/Turnstile contexts/services is a whole new ballgame.


deploy/helm/thecombine/values.yaml line 29 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Add enable/disable variable.

Done.


deploy/helm/thecombine/values.yaml line 59 at r6 (raw file):

Previously, jmgrady (Jim Grady) wrote…

This should be in the global variables. I still maintain that the backend should know whether turnstile is enabled rather than assume no requests will come in - the backend should behave reasonably if it receives unexpected data.

I added it as a backend variable separately because of different handling (bool for the frontend config and "True"/"False" for backend environment variable parsing).


deploy/helm/thecombine/charts/backend/values.yaml line 24 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Again, add enable/disable variable.

Done.


deploy/scripts/setup_files/profiles/dev.yaml line 15 at r7 (raw file):

Previously, jmgrady (Jim Grady) wrote…

This comment would be more helpful if there were some explanation of what the URL is for.

Done.


nginx/init/25-combine-runtime-config.sh line 53 at r7 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Technically, renaming CAPTCHA to Turnstile in all of the files is not necessary. CAPTCHA stands for "Completely Automated Public Turing test to tell Computers and Humans Apart." The Google implementation is reCAPTCHA.

Good point. And such a fun acronym...

Backend/Startup.cs Dismissed Show dismissed Hide dismissed
Backend/Startup.cs Dismissed Show dismissed Hide dismissed
Backend/Startup.cs Dismissed Show dismissed Hide dismissed
Backend/Startup.cs Dismissed Show dismissed Hide dismissed
@imnasnainaec imnasnainaec changed the title Turnstile [CAPTCHA] Replace ReCAPTCHA with Turnstile Jul 19, 2024
Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 1 of 25 files at r1, 2 of 7 files at r2, 13 of 35 files at r8, 11 of 29 files at r9, 19 of 20 files at r10, all commit messages.
Reviewable status: all files reviewed, 12 unresolved discussions (waiting on @imnasnainaec)


README.md line 146 at r5 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I added it to Backend/Properties/launchSettings.json so it's no longer needed for npm run backend or npm start. It is still required for a dev docker build, so I moved the instruction to ### Setup Environment Variables below.

This is a small additional scope for the PR. It would be good to mention it in the PR description.


Backend/Startup.cs line 182 at r2 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

Added, though it should be "True" as that is the bool.TrueString in C#. I also added an analogous backend config for email enabled, to make sure they are both implemented the same way.

Let's discuss this in Slack so that we can have a more interactive discussion and have the same design intent to reduce the number of code changes you end up making.


Backend/Startup.cs line 246 at r5 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I think conditionally adding transients for Email/Turnstile contexts/services is a whole new ballgame.

My concern is mostly why run services that are not supposed to be enabled? It looks like the service is still needed because that is what will throw the exception that says it is not enabled.


deploy/helm/thecombine/values.yaml line 59 at r6 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

I added it as a backend variable separately because of different handling (bool for the frontend config and "True"/"False" for backend environment variable parsing).

I see it is done.


deploy/helm/thecombine/charts/backend/values.yaml line 21 at r10 (raw file):

  awsDefaultRegion: "Override"
  pullSecretName: "None"
  combineJwtSecretKey: "Override"

captchaRequired and emailEnabled need to be added to the global section.


deploy/helm/thecombine/charts/backend/templates/backend-config-map.yaml line 12 at r10 (raw file):

{{- else }}
  COMBINE_CAPTCHA_REQUIRED: "False"
{{- end }}

Should be:

COMBINE_CAPTCHA_REQUIRED: {{ .Values.global.captchaRequired | quote }}

bool.Parse is case insensitive. As the documentation states, it tests that the string is equivalent to (not equal to) bool.TrueString.

Code quote:

{{- if .Values.global.captchaRequired }}
  COMBINE_CAPTCHA_REQUIRED: "True"
{{- else }}
  COMBINE_CAPTCHA_REQUIRED: "False"
{{- end }}

deploy/helm/thecombine/charts/backend/templates/backend-config-map.yaml line 18 at r10 (raw file):

{{- else }}
  COMBINE_EMAIL_ENABLED: "False"
{{- end }}

Similarly, should be:

  COMBINE_EMAIL_ENABLED: {{ .Values.global.emailEnabled | quote }}

Code quote:

{{- if .Values.global.emailEnabled }}
  COMBINE_EMAIL_ENABLED: "True"
{{- else }}
  COMBINE_EMAIL_ENABLED: "False"
{{- end }}

deploy/scripts/install-combine.sh line 21 at r10 (raw file):

    export COMBINE_CAPTCHA_REQUIRED="False"
    export COMBINE_EMAIL_ENABLED="False"
    export COMBINE_JWT_SECRET_KEY="${COMBINE_JWT_SECRET_KEY}"

The captcha and email enabled environment variables should not be needed. These values should be driven by the profile.

I don't think that any of the changes for Turnstile should affect this file.

Code quote:

    export AWS_DEFAULT_REGION="us-east-1"
    export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
    export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
    export COMBINE_CAPTCHA_REQUIRED="False"
    export COMBINE_EMAIL_ENABLED="False"
    export COMBINE_JWT_SECRET_KEY="${COMBINE_JWT_SECRET_KEY}"

deploy/scripts/setup_files/profiles/nuc_qa.yaml line 14 at r10 (raw file):

    global:
      awsS3Location: prod.thecombine.app
      captchaRequired: false

We probably want these to be true. The nuc_qa profile should not be shipped for use in a workshop. It installs The Combine on the NUC with the QA environment, that is, it is setup to be able to pull unreleased code images from the AWS private container registry. Normally the NUC can only install release images from the AWS Public container registry. (Although with the annoying Google reCAPTCHA I would probably want it set to false!)

Of course, if you change them, then the CAPTCHA site key will need to be added.

Copy link
Collaborator Author

@imnasnainaec imnasnainaec left a comment

Choose a reason for hiding this comment

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

Reviewable status: 48 of 52 files reviewed, 12 unresolved discussions (waiting on @jmgrady)


deploy/helm/thecombine/charts/backend/values.yaml line 21 at r10 (raw file):

Previously, jmgrady (Jim Grady) wrote…

captchaRequired and emailEnabled need to be added to the global section.

Aren't default values being pulled from deploy\helm\thecombine\values.yaml?


deploy/helm/thecombine/charts/backend/templates/backend-config-map.yaml line 12 at r10 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Should be:

COMBINE_CAPTCHA_REQUIRED: {{ .Values.global.captchaRequired | quote }}

bool.Parse is case insensitive. As the documentation states, it tests that the string is equivalent to (not equal to) bool.TrueString.

Done.


deploy/helm/thecombine/charts/backend/templates/backend-config-map.yaml line 18 at r10 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Similarly, should be:

  COMBINE_EMAIL_ENABLED: {{ .Values.global.emailEnabled | quote }}

Done.


deploy/scripts/install-combine.sh line 21 at r10 (raw file):

Previously, jmgrady (Jim Grady) wrote…

The captcha and email enabled environment variables should not be needed. These values should be driven by the profile.

I don't think that any of the changes for Turnstile should affect this file.

You're right about COMBINE_CAPTCHA_REQUIRED and COMBINE_EMAIL_ENABLED--I retracted those. But I think COMBINE_SMTP_USERNAME is no longer required with the new handling of the emailEnabled config.


deploy/scripts/setup_files/profiles/nuc_qa.yaml line 14 at r10 (raw file):

Previously, jmgrady (Jim Grady) wrote…

We probably want these to be true. The nuc_qa profile should not be shipped for use in a workshop. It installs The Combine on the NUC with the QA environment, that is, it is setup to be able to pull unreleased code images from the AWS private container registry. Normally the NUC can only install release images from the AWS Public container registry. (Although with the annoying Google reCAPTCHA I would probably want it set to false!)

Of course, if you change them, then the CAPTCHA site key will need to be added.

The Turnstile site key won't work outside of the domains set for it in the Cloudflare account. Should nuc*.thecombine.app be added?

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 2 of 4 files at r11, 4 of 4 files at r12, all commit messages.
Reviewable status: all files reviewed, 9 unresolved discussions (waiting on @imnasnainaec)


Backend/Properties/launchSettings.json line 31 at r12 (raw file):

        "Key": "Value",
        "ASPNETCORE_ENVIRONMENT": "Development",
        "COMBINE_CAPTCHA_REQUIRED": "true",

This is not really required since it is the default, correct?

Code quote:

        "COMBINE_CAPTCHA_REQUIRED": "true",

deploy/scripts/setup_files/profiles/nuc_qa.yaml line 14 at r10 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

The Turnstile site key won't work outside of the domains set for it in the Cloudflare account. Should nuc*.thecombine.app be added?

It should work. I will test it and let you know. The domain is thecombine.app; nuc*.thecombine.app is a host in that domain.

Copy link
Collaborator Author

@imnasnainaec imnasnainaec left a comment

Choose a reason for hiding this comment

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

Dismissed @Github-advanced-security[bot] from 4 discussions.
Reviewable status: 48 of 52 files reviewed, 5 unresolved discussions (waiting on @jmgrady)


Backend/Properties/launchSettings.json line 31 at r12 (raw file):

Previously, jmgrady (Jim Grady) wrote…

This is not really required since it is the default, correct?

This is required for npm start and npm run backend because the Helm charts haven't been run.


deploy/scripts/setup_files/profiles/nuc_qa.yaml line 14 at r10 (raw file):

Previously, jmgrady (Jim Grady) wrote…

It should work. I will test it and let you know. The domain is thecombine.app; nuc*.thecombine.app is a host in that domain.

We added both thecombine.app and qa-kube.thecombine.app explicitly in generating the keys, but it would be good to know if it works on other *.thecombine.app domains.

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 4 of 4 files at r13, all commit messages.
Reviewable status: all files reviewed, 4 unresolved discussions (waiting on @imnasnainaec)


deploy/scripts/setup_files/profiles/nuc_qa.yaml line 14 at r10 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

We added both thecombine.app and qa-kube.thecombine.app explicitly in generating the keys, but it would be good to know if it works on other *.thecombine.app domains.

It looks like CloudFlare is using a different scope for their domains than I would expect:
Turnstile_NUC_qa.PNG

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewable status: all files reviewed, 3 unresolved discussions (waiting on @imnasnainaec)


deploy/helm/thecombine/charts/backend/values.yaml line 21 at r10 (raw file):

Previously, imnasnainaec (D. Ror.) wrote…

Aren't default values being pulled from deploy\helm\thecombine\values.yaml?

I had thought that the global values needed to be re-declared in the sub-charts - similar to defining an external reference. Perhaps that is not the case. It seems to work correctly and is cleaner this way.

@imnasnainaec imnasnainaec marked this pull request as ready for review July 24, 2024 13:20
Copy link
Collaborator Author

@imnasnainaec imnasnainaec left a comment

Choose a reason for hiding this comment

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

Reviewable status: 51 of 52 files reviewed, 3 unresolved discussions (waiting on @jmgrady)


.github/workflows/deploy_qa.yml line 7 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

That make sense. I will leave this unresolved until the testing is complete and this file is updated.

Done.


.github/workflows/deploy_qa.yml line 98 at r2 (raw file):

Previously, jmgrady (Jim Grady) wrote…

Ditto.

Done.


Backend/Startup.cs line 198 at r5 (raw file):

Previously, jmgrady (Jim Grady) wrote…

These log errors if turnstile is not setup but it is a valid configuration if it is not enabled. These errors should only be logged if Turnstile is turned on. Perhaps _logger.LogInformation can be called when Turnstile is disabled.

Done.

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 4 of 4 files at r15, all commit messages.
Reviewable status: all files reviewed, 2 unresolved discussions (waiting on @imnasnainaec)


deploy/helm/thecombine/charts/frontend/values.yaml line 17 at r15 (raw file):

  imageRegistry: ""
  imageTag: "latest"
  pullSecretName: aws-login-credentials

The default pullSecretName should be the same for all the subcharts. It is "aws-login-credentials" here and "None" for the backend. This was my error.
"None" is probably the better value. Originally, all deployments needed the image pull secrets to pull images from the AWS ECR private registry. Now the QA server is the only one that does that; the rest pull releases from the public registry.

I am fine with deferring this to a later clean up task.

Code quote:

  pullSecretName: aws-login-credentials

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewable status: all files reviewed, 1 unresolved discussion (waiting on @imnasnainaec)

Copy link
Collaborator

@jmgrady jmgrady left a comment

Choose a reason for hiding this comment

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

Reviewed 2 of 2 files at r16, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @imnasnainaec)

@imnasnainaec imnasnainaec merged commit e71754a into master Jul 25, 2024
19 checks passed
@imnasnainaec imnasnainaec deleted the turnstile branch July 25, 2024 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Replace Captcha with Cloudflare Turnstile
2 participants