diff --git a/object/organization.go b/object/organization.go
index e735499d..aff9b80e 100644
--- a/object/organization.go
+++ b/object/organization.go
@@ -73,6 +73,7 @@ type Organization struct {
EnableSoftDeletion bool `json:"enableSoftDeletion"`
IsProfilePublic bool `json:"isProfilePublic"`
UseEmailAsUsername bool `json:"useEmailAsUsername"`
+ EnableTour bool `json:"enableTour"`
MfaItems []*MfaItem `xorm:"varchar(300)" json:"mfaItems"`
AccountItems []*AccountItem `xorm:"varchar(5000)" json:"accountItems"`
diff --git a/web/src/App.js b/web/src/App.js
index 11d9b8bc..d5b95b47 100644
--- a/web/src/App.js
+++ b/web/src/App.js
@@ -16,6 +16,7 @@ import React, {Component, Suspense, lazy} from "react";
import "./App.less";
import {Helmet} from "react-helmet";
import * as Setting from "./Setting";
+import {setIsTourVisible, setTourLogo} from "./TourConfig";
import {StyleProvider, legacyLogicalPropertiesTransformer} from "@ant-design/cssinjs";
import {GithubOutlined, InfoCircleFilled, ShareAltOutlined} from "@ant-design/icons";
import {Alert, Button, ConfigProvider, Drawer, FloatButton, Layout, Result, Tooltip} from "antd";
@@ -247,6 +248,8 @@ class App extends Component {
this.setLanguage(account);
this.setTheme(Setting.getThemeData(account.organization), Conf.InitThemeAlgorithm);
+ setTourLogo(account.organization.logo);
+ setIsTourVisible(account.organization.enableTour);
} else {
if (res.data !== "Please login first") {
Setting.showMessage("error", `${i18next.t("application:Failed to sign in")}: ${res.msg}`);
diff --git a/web/src/OrganizationEditPage.js b/web/src/OrganizationEditPage.js
index 3de2b22c..0589a6de 100644
--- a/web/src/OrganizationEditPage.js
+++ b/web/src/OrganizationEditPage.js
@@ -446,6 +446,16 @@ class OrganizationEditPage extends React.Component {
}} />
+
+
+ {Setting.getLabel(i18next.t("general:Enable tour"), i18next.t("general:Enable tour - Tooltip"))} :
+
+
+ {
+ this.updateOrganizationField("enableTour", checked);
+ }} />
+
+
{Setting.getLabel(i18next.t("organization:Account items"), i18next.t("organization:Account items - Tooltip"))} :
diff --git a/web/src/OrganizationListPage.js b/web/src/OrganizationListPage.js
index 33d05c7e..372018de 100644
--- a/web/src/OrganizationListPage.js
+++ b/web/src/OrganizationListPage.js
@@ -44,6 +44,7 @@ class OrganizationListPage extends BaseListPage {
defaultPassword: "",
enableSoftDeletion: false,
isProfilePublic: true,
+ enableTour: true,
accountItems: [
{name: "Organization", visible: true, viewRule: "Public", modifyRule: "Admin"},
{name: "ID", visible: true, viewRule: "Public", modifyRule: "Immutable"},
diff --git a/web/src/TourConfig.js b/web/src/TourConfig.js
index c9171677..7dd490e8 100644
--- a/web/src/TourConfig.js
+++ b/web/src/TourConfig.js
@@ -208,6 +208,12 @@ export function setIsTourVisible(visible) {
window.dispatchEvent(new Event("storageTourChanged"));
}
+export function setTourLogo(tourLogoSrc) {
+ if (tourLogoSrc !== "") {
+ TourObj["home"][0]["cover"] = (
);
+ }
+}
+
export function getTourVisible() {
return localStorage.getItem("isTourVisible") !== "false";
}