diff --git a/bin/generate_rest.sh b/bin/generate_rest.sh
index 410eb157..397a3c41 100755
--- a/bin/generate_rest.sh
+++ b/bin/generate_rest.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+9999999999999999999999999999999999999#!/bin/bash
set -euo pipefail
diff --git a/controller/config/config.go b/controller/config/config.go
index 68181e17..67cc48fc 100644
--- a/controller/config/config.go
+++ b/controller/config/config.go
@@ -38,6 +38,7 @@ type Config struct {
type AdminConfig struct {
Secrets []string `cf:"+secret"`
TouLink string
+ NewAccountLink string
ProfileEndpoint string
}
diff --git a/controller/configuration.go b/controller/configuration.go
index fc021fa6..910e626b 100644
--- a/controller/configuration.go
+++ b/controller/configuration.go
@@ -26,6 +26,7 @@ func (ch *configurationHandler) Handle(_ metadata.ConfigurationParams) middlewar
}
if cfg.Admin != nil {
data.TouLink = cfg.Admin.TouLink
+ data.NewAccountLink = cfg.Admin.NewAccountLink
}
if cfg.Invites != nil {
data.InviteTokenContact = cfg.Invites.TokenContact
diff --git a/etc/ctrl.yml b/etc/ctrl.yml
index 18ffc4d0..ab3c8fb1 100644
--- a/etc/ctrl.yml
+++ b/etc/ctrl.yml
@@ -20,10 +20,15 @@ admin:
secrets:
- 77623cad-1847-4d6d-8ffe-37defc33c909
#
- # If `tou_link` is present, the frontend will display the "Terms of Use" link on the login and registration forms
+ # If `tou_link` is present, the API console will display the "Terms of Use" link on the login and registration forms
#
tou_link: 'Terms and Conditions'
#
+ # If `new_account_link` is present, the API console will inject the contents of this setting into the login form; the
+ # intention is that it is used to present a "How do I get an account?" link.
+ #
+ new_account_link: 'How do I get an account?'
+ #
# If `profile_endpoint` is present, the controller will start a `net/http/pprof` endpoint at the specified host:port
#
#profile_endpoint: localhost:6060
diff --git a/rest_model_zrok/configuration.go b/rest_model_zrok/configuration.go
index 8486455a..1d33fa5f 100644
--- a/rest_model_zrok/configuration.go
+++ b/rest_model_zrok/configuration.go
@@ -23,6 +23,9 @@ type Configuration struct {
// invites open
InvitesOpen bool `json:"invitesOpen,omitempty"`
+ // new account link
+ NewAccountLink string `json:"newAccountLink,omitempty"`
+
// requires invite token
RequiresInviteToken bool `json:"requiresInviteToken,omitempty"`
diff --git a/rest_server_zrok/embedded_spec.go b/rest_server_zrok/embedded_spec.go
index 2134e50c..539561bf 100644
--- a/rest_server_zrok/embedded_spec.go
+++ b/rest_server_zrok/embedded_spec.go
@@ -1985,6 +1985,9 @@ func init() {
"invitesOpen": {
"type": "boolean"
},
+ "newAccountLink": {
+ "type": "string"
+ },
"requiresInviteToken": {
"type": "boolean"
},
@@ -4298,6 +4301,9 @@ func init() {
"invitesOpen": {
"type": "boolean"
},
+ "newAccountLink": {
+ "type": "string"
+ },
"requiresInviteToken": {
"type": "boolean"
},
diff --git a/sdk/nodejs/sdk/src/api/models/ModelConfiguration.ts b/sdk/nodejs/sdk/src/api/models/ModelConfiguration.ts
index 53a35d82..db6d129c 100644
--- a/sdk/nodejs/sdk/src/api/models/ModelConfiguration.ts
+++ b/sdk/nodejs/sdk/src/api/models/ModelConfiguration.ts
@@ -31,6 +31,12 @@ export interface ModelConfiguration {
* @memberof ModelConfiguration
*/
touLink?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ModelConfiguration
+ */
+ newAccountLink?: string;
/**
*
* @type {boolean}
@@ -70,6 +76,7 @@ export function ModelConfigurationFromJSONTyped(json: any, ignoreDiscriminator:
'version': json['version'] == null ? undefined : json['version'],
'touLink': json['touLink'] == null ? undefined : json['touLink'],
+ 'newAccountLink': json['newAccountLink'] == null ? undefined : json['newAccountLink'],
'invitesOpen': json['invitesOpen'] == null ? undefined : json['invitesOpen'],
'requiresInviteToken': json['requiresInviteToken'] == null ? undefined : json['requiresInviteToken'],
'inviteTokenContact': json['inviteTokenContact'] == null ? undefined : json['inviteTokenContact'],
@@ -89,6 +96,7 @@ export function ModelConfigurationToJSONTyped(value?: ModelConfiguration | null,
'version': value['version'],
'touLink': value['touLink'],
+ 'newAccountLink': value['newAccountLink'],
'invitesOpen': value['invitesOpen'],
'requiresInviteToken': value['requiresInviteToken'],
'inviteTokenContact': value['inviteTokenContact'],
diff --git a/sdk/python/src/docs/Configuration.md b/sdk/python/src/docs/Configuration.md
index 07eec945..ce1f473b 100644
--- a/sdk/python/src/docs/Configuration.md
+++ b/sdk/python/src/docs/Configuration.md
@@ -7,6 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**version** | **str** | | [optional]
**tou_link** | **str** | | [optional]
+**new_account_link** | **str** | | [optional]
**invites_open** | **bool** | | [optional]
**requires_invite_token** | **bool** | | [optional]
**invite_token_contact** | **str** | | [optional]
diff --git a/sdk/python/src/test/test_configuration.py b/sdk/python/src/test/test_configuration.py
index bf80210e..a6fc71ea 100644
--- a/sdk/python/src/test/test_configuration.py
+++ b/sdk/python/src/test/test_configuration.py
@@ -37,6 +37,7 @@ class TestConfiguration(unittest.TestCase):
return Configuration(
version = '',
tou_link = '',
+ new_account_link = '',
invites_open = True,
requires_invite_token = True,
invite_token_contact = ''
diff --git a/sdk/python/src/zrok_api/models/configuration.py b/sdk/python/src/zrok_api/models/configuration.py
index ed5ece38..35a1e9d5 100644
--- a/sdk/python/src/zrok_api/models/configuration.py
+++ b/sdk/python/src/zrok_api/models/configuration.py
@@ -28,10 +28,11 @@ class Configuration(BaseModel):
""" # noqa: E501
version: Optional[StrictStr] = None
tou_link: Optional[StrictStr] = Field(default=None, alias="touLink")
+ new_account_link: Optional[StrictStr] = Field(default=None, alias="newAccountLink")
invites_open: Optional[StrictBool] = Field(default=None, alias="invitesOpen")
requires_invite_token: Optional[StrictBool] = Field(default=None, alias="requiresInviteToken")
invite_token_contact: Optional[StrictStr] = Field(default=None, alias="inviteTokenContact")
- __properties: ClassVar[List[str]] = ["version", "touLink", "invitesOpen", "requiresInviteToken", "inviteTokenContact"]
+ __properties: ClassVar[List[str]] = ["version", "touLink", "newAccountLink", "invitesOpen", "requiresInviteToken", "inviteTokenContact"]
model_config = ConfigDict(
populate_by_name=True,
@@ -86,6 +87,7 @@ class Configuration(BaseModel):
_obj = cls.model_validate({
"version": obj.get("version"),
"touLink": obj.get("touLink"),
+ "newAccountLink": obj.get("newAccountLink"),
"invitesOpen": obj.get("invitesOpen"),
"requiresInviteToken": obj.get("requiresInviteToken"),
"inviteTokenContact": obj.get("inviteTokenContact")
diff --git a/specs/zrok.yml b/specs/zrok.yml
index 7d081848..6ee86fb4 100644
--- a/specs/zrok.yml
+++ b/specs/zrok.yml
@@ -1229,6 +1229,8 @@ definitions:
type: string
touLink:
type: string
+ newAccountLink:
+ type: string
invitesOpen:
type: boolean
requiresInviteToken:
diff --git a/ui/src/Login.tsx b/ui/src/Login.tsx
index e76155dc..0c04b00d 100644
--- a/ui/src/Login.tsx
+++ b/ui/src/Login.tsx
@@ -13,14 +13,19 @@ const Login = ({ onLogin }: LoginProps) => {
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [message, setMessage] = useState("");
- const [tou, setTou] = useState(null as string);
+ const [tou, setTou] = useState("");
+ const [newAccountLink, setNewAccountLink] = useState("");
useEffect(() => {
new MetadataApi()._configuration()
.then(d => {
+ console.log("d", d);
if(d.touLink && d.touLink.trim() !== "") {
setTou(d.touLink);
}
+ if(d.newAccountLink && d.newAccountLink.trim() != "") {
+ setNewAccountLink(d.newAccountLink)
+ }
})
.catch(e => {
console.log(e);
@@ -86,6 +91,9 @@ const Login = ({ onLogin }: LoginProps) => {
Forgot Password?
+
+
+
diff --git a/ui/src/api/models/ModelConfiguration.ts b/ui/src/api/models/ModelConfiguration.ts
index 53a35d82..db6d129c 100644
--- a/ui/src/api/models/ModelConfiguration.ts
+++ b/ui/src/api/models/ModelConfiguration.ts
@@ -31,6 +31,12 @@ export interface ModelConfiguration {
* @memberof ModelConfiguration
*/
touLink?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ModelConfiguration
+ */
+ newAccountLink?: string;
/**
*
* @type {boolean}
@@ -70,6 +76,7 @@ export function ModelConfigurationFromJSONTyped(json: any, ignoreDiscriminator:
'version': json['version'] == null ? undefined : json['version'],
'touLink': json['touLink'] == null ? undefined : json['touLink'],
+ 'newAccountLink': json['newAccountLink'] == null ? undefined : json['newAccountLink'],
'invitesOpen': json['invitesOpen'] == null ? undefined : json['invitesOpen'],
'requiresInviteToken': json['requiresInviteToken'] == null ? undefined : json['requiresInviteToken'],
'inviteTokenContact': json['inviteTokenContact'] == null ? undefined : json['inviteTokenContact'],
@@ -89,6 +96,7 @@ export function ModelConfigurationToJSONTyped(value?: ModelConfiguration | null,
'version': value['version'],
'touLink': value['touLink'],
+ 'newAccountLink': value['newAccountLink'],
'invitesOpen': value['invitesOpen'],
'requiresInviteToken': value['requiresInviteToken'],
'inviteTokenContact': value['inviteTokenContact'],