Disable tenant registration (#461)

* Disable tenant registration
* Disable Stripe subscription management
* Fix OAuth broken link
* Remove managed version info from README
This commit is contained in:
Riccardo Graziosi
2025-03-03 17:51:26 +01:00
committed by GitHub
parent bb7d3e8218
commit fb5e6165c3
5 changed files with 76 additions and 72 deletions

View File

@@ -1,15 +1,11 @@
<p align="center">
<a href="https://astuto.io/?utm_campaign=github_logo&utm_source=github.com">
<img width="400" src="./images/logo-and-name.png" />
</a>
<img width="400" src="./images/logo-and-name.png" />
</p>
<p align="center">
<a href="https://www.producthunt.com/posts/astuto?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-astuto" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=179870&theme=neutral&period=daily" alt="Astuto - An open source customer feedback tool 🦊 | Product Hunt Embed" style="width: 250px; height: 54px;" width="250px" height="54px" /></a>
<br>
<h3 align="center">
<a href="https://feedback.astuto.io/">✨ Try it out</a>
&nbsp;•&nbsp;
<a href="https://astuto.io/?utm_campaign=github_learnmore&utm_source=github.com">📖 Learn more</a>
</h3>
</p>
@@ -31,22 +27,6 @@ Astuto is an open source customer feedback tool. It helps you collect, manage an
## Get started
### Hosted
We offer a hosted solution, so you don't have to provision your own server. This is the easiest and fastest way to get started: you can sign up and start collecting feedback in a few minutes.
[Start your 7-day free trial](https://login.astuto.io/signup) without entering any payment method, then it's 15 €/month with annual subscription or 20 €/month with monthly subscription. [Learn more on astuto.io](https://astuto.io/?utm_campaign=github_getstarted&utm_source=github.com).
With the paid plan:
- You avoid deployment hassles like renting a server, issuing SSL certificates, configuring a mail server and managing updates
- You get some OAuth providers out of the box: Google, Facebook and GitHub are ready to log your users in, no configuration needed
- You get priority support
- You support open source and get our eternal gratitude :)
### Self-hosted
Read the [Deploy with Docker instructions](https://docs.astuto.io/deploy-docker) for the most comprehensive and up to date guide on installing and configuring Astuto.
What you find below are minimal instructions to get you started as quickly as possible:

View File

@@ -15,6 +15,9 @@ class TenantsController < ApplicationController
end
def create
# NOTE: new tenants registrations disabled
raise "Tenant registration disabled"
@tenant = Tenant.new
@tenant.assign_attributes(tenant_create_params)
authorize @tenant

View File

@@ -125,7 +125,7 @@ const Billing = ({
<p>Subscription {isExpired ? 'expired' : 'expires'} on {subscriptionEndsAtFormatted}</p>
}
{
{/* {
(tenantBilling.status === TENANT_BILLING_STATUS_TRIAL) && chosenPrice === null &&
<PricingTable
prices={prices}
@@ -169,7 +169,14 @@ const Billing = ({
You will be redirected to Stripe, our billing partner.
</SmallMutedText>
</div>
}
} */}
<p>
If you want to manage your current subscription, please <a href="mailto:info@astuto.io">contact us via email</a>.
</p>
<p>
We do not accept new subscriptions right now.
</p>
<div className="billingUsefulLinks">
<ActionLink onClick={() => window.open('https://astuto.io/terms-of-service', '_blank')} icon={<LearnMoreIcon />}>

View File

@@ -35,7 +35,7 @@ const OAuthProvidersList = ({
<p style={{textAlign: 'left'}}>
<ActionLink
onClick={() => window.open('https://docs.astuto.io/category/oauth-configuration/', '_blank')}
onClick={() => window.open('https://docs.astuto.io/oauth/oauth-configuration-basics/', '_blank')}
icon={<LearnMoreIcon />}
>
{I18n.t('site_settings.authentication.learn_more')}

View File

@@ -7,6 +7,7 @@ import ConfirmEmailSignUpPage from './ConfirmEmailSignUpPage';
import ConfirmOAuthSignUpPage from './ConfirmOAuthSignUpPage';
import { IOAuth } from '../../interfaces/IOAuth';
import HttpStatus from '../../constants/http_status';
import Box from '../common/Box';
interface Props {
oAuthLoginCompleted: boolean;
@@ -116,57 +117,70 @@ const TenantSignUpP = ({
});
}
// return (
// <>
// <img src={astutoLogoImage} width={64} height={64} className="astutoLogo" />
// <div className="tenantSignUpContainer">
// {
// (currentStep === 1 || currentStep === 2) &&
// <UserSignUpForm
// currentStep={currentStep}
// setCurrentStep={setCurrentStep}
// authMethod={authMethod}
// setAuthMethod={setAuthMethod}
// oAuths={oAuths}
// userData={userData}
// setUserData={setUserData}
// setGoneBack={setGoneBack}
// />
// }
// {
// (goneBack || currentStep === 2) &&
// <TenantSignUpForm
// isSubmitting={isSubmitting}
// error={error}
// handleSignUpSubmit={handleSignUpSubmit}
// trialPeriodDays={trialPeriodDays}
// currentStep={currentStep}
// setCurrentStep={setCurrentStep}
// />
// }
// {
// currentStep === 3 && authMethod === 'oauth' &&
// <ConfirmOAuthSignUpPage
// baseUrl={baseUrl}
// subdomain={tenantData.subdomain}
// feedbackSpaceCreatedImage={feedbackSpaceCreatedImage}
// />
// }
// {
// currentStep === 3 && authMethod === 'email' &&
// <ConfirmEmailSignUpPage
// subdomain={tenantData.subdomain}
// userEmail={userData.email}
// pendingTenantImage={pendingTenantImage}
// />
// }
// </div>
// </>
// );
return (
<>
<img src={astutoLogoImage} width={64} height={64} className="astutoLogo" />
<div className="tenantSignUpContainer">
{
(currentStep === 1 || currentStep === 2) &&
<UserSignUpForm
currentStep={currentStep}
setCurrentStep={setCurrentStep}
authMethod={authMethod}
setAuthMethod={setAuthMethod}
oAuths={oAuths}
userData={userData}
setUserData={setUserData}
setGoneBack={setGoneBack}
/>
}
{
(goneBack || currentStep === 2) &&
<TenantSignUpForm
isSubmitting={isSubmitting}
error={error}
handleSignUpSubmit={handleSignUpSubmit}
trialPeriodDays={trialPeriodDays}
currentStep={currentStep}
setCurrentStep={setCurrentStep}
/>
}
{
currentStep === 3 && authMethod === 'oauth' &&
<ConfirmOAuthSignUpPage
baseUrl={baseUrl}
subdomain={tenantData.subdomain}
feedbackSpaceCreatedImage={feedbackSpaceCreatedImage}
/>
}
{
currentStep === 3 && authMethod === 'email' &&
<ConfirmEmailSignUpPage
subdomain={tenantData.subdomain}
userEmail={userData.email}
pendingTenantImage={pendingTenantImage}
/>
}
</div>
<img src={astutoLogoImage} width={64} height={64} className="astutoLogo" />
<div className="tenantSignUpContainer">
<Box>
<p>It is not possible to sign up to Astuto.</p>
<p>You can <a href="https://github.com/astuto/astuto">self-host your own instance</a> instead.</p>
</Box>
</div>
</>
);
)
}
export default TenantSignUpP;