diff --git a/docker/nginx/libs/skynet/account.lua b/docker/nginx/libs/skynet/account.lua index 405981d0..34fe15f5 100644 --- a/docker/nginx/libs/skynet/account.lua +++ b/docker/nginx/libs/skynet/account.lua @@ -78,7 +78,9 @@ function _M.has_subscription() end function _M.is_auth_required() - return os.getenv("ACCOUNTS_LIMIT_ACCESS") == "authenticated" + -- authentication is required if mode is set to "authenticated" + -- or "subscription" (require active subscription to a premium plan) + return os.getenv("ACCOUNTS_LIMIT_ACCESS") == "authenticated" or _M.is_subscription_required() end function _M.is_subscription_required() diff --git a/packages/website/src/components/Uploader/Uploader.js b/packages/website/src/components/Uploader/Uploader.js index 40ecb19a..7851147a 100644 --- a/packages/website/src/components/Uploader/Uploader.js +++ b/packages/website/src/components/Uploader/Uploader.js @@ -47,15 +47,37 @@ const LogInLink = () => { ); }; +const SubscribeLink = () => { + const createAccountsUrl = useAccountsUrl(); + + return ( + + available plans + + ); +}; + const Uploader = () => { const [mode, setMode] = React.useState("file"); const [uploads, setUploads] = React.useState([]); const { data: accounts } = useAccounts(); - const showAccountFeatures = - accounts && accounts.enabled !== false && !accounts?.auth_required && !accounts?.authenticated; - const disabledComponent = - accounts && accounts.enabled !== false && accounts?.auth_required && !accounts?.authenticated; + + // variables extracted from useAccounts response + const isAccountsEnabled = accounts?.enabled; + const isSubscriptionRequired = accounts?.subscription_required; + const isAuthRequired = isSubscriptionRequired || accounts?.auth_required; + const isAuthenticated = accounts?.authenticated; + const hasSubscription = accounts?.subscription; + + // derive current app state and extract it into variables + const showAccountFeatures = isAccountsEnabled && !isAuthRequired && !isAuthenticated; + const showAuthenticationRequired = isAccountsEnabled && isAuthRequired && !isAuthenticated; + const showSubscriptionRequired = isAccountsEnabled && isAuthenticated && isSubscriptionRequired && !hasSubscription; + const isComponentDisabled = showAuthenticationRequired || showSubscriptionRequired; const onUploadStateChange = React.useCallback((id, state) => { setUploads((uploads) => { @@ -104,7 +126,7 @@ const Uploader = () => { }, [inputElement, mode]); return ( -
+
- {!disabledComponent && ( + {!isComponentDisabled && (
@@ -204,7 +226,7 @@ const Uploader = () => {
)} - {disabledComponent && ( + {showAuthenticationRequired && (
@@ -215,6 +237,18 @@ const Uploader = () => {
)} + + {showSubscriptionRequired && ( +
+
+
+

+ Active subscription required - +

+
+
+
+ )}
); };