diff --git a/object/adapter.go b/object/adapter.go
index 76ed6b21..1fb3e691 100644
--- a/object/adapter.go
+++ b/object/adapter.go
@@ -30,6 +30,7 @@ type Adapter struct {
Name string `xorm:"varchar(100) notnull pk" json:"name"`
CreatedTime string `xorm:"varchar(100)" json:"createdTime"`
+ UseSameDb bool `json:"useSameDb"`
Type string `xorm:"varchar(100)" json:"type"`
DatabaseType string `xorm:"varchar(100)" json:"databaseType"`
Host string `xorm:"varchar(100)" json:"host"`
@@ -151,7 +152,7 @@ func (adapter *Adapter) InitAdapter() error {
if adapter.Adapter == nil {
var dataSourceName string
- if adapter.isBuiltIn() {
+ if adapter.UseSameDb || adapter.isBuiltIn() {
dataSourceName = conf.GetConfigString("dataSourceName")
if adapter.DatabaseType == "mysql" {
dataSourceName = dataSourceName + adapter.Database
@@ -184,7 +185,7 @@ func (adapter *Adapter) InitAdapter() error {
var err error
engine, err := xorm.NewEngine(adapter.DatabaseType, dataSourceName)
- if adapter.isBuiltIn() && adapter.DatabaseType == "postgres" {
+ if (adapter.UseSameDb || adapter.isBuiltIn()) && adapter.DatabaseType == "postgres" {
schema := util.GetValueFromDataSourceName("search_path", dataSourceName)
if schema != "" {
engine.SetSchema(schema)
diff --git a/object/init.go b/object/init.go
index fd90fca6..00acd7e8 100644
--- a/object/init.go
+++ b/object/init.go
@@ -423,14 +423,11 @@ func initBuiltInUserAdapter() {
}
adapter = &Adapter{
- Owner: "built-in",
- Name: "user-adapter-built-in",
- CreatedTime: util.GetCurrentTime(),
- Type: "Database",
- DatabaseType: conf.GetConfigString("driverName"),
- TableNamePrefix: conf.GetConfigString("tableNamePrefix"),
- Database: conf.GetConfigString("dbName"),
- Table: "casbin_user_rule",
+ Owner: "built-in",
+ Name: "user-adapter-built-in",
+ CreatedTime: util.GetCurrentTime(),
+ UseSameDb: true,
+ Table: "casbin_user_rule",
}
_, err = AddAdapter(adapter)
if err != nil {
@@ -449,14 +446,11 @@ func initBuiltInApiAdapter() {
}
adapter = &Adapter{
- Owner: "built-in",
- Name: "api-adapter-built-in",
- CreatedTime: util.GetCurrentTime(),
- Type: "Database",
- DatabaseType: conf.GetConfigString("driverName"),
- TableNamePrefix: conf.GetConfigString("tableNamePrefix"),
- Database: conf.GetConfigString("dbName"),
- Table: "casbin_api_rule",
+ Owner: "built-in",
+ Name: "api-adapter-built-in",
+ CreatedTime: util.GetCurrentTime(),
+ UseSameDb: true,
+ Table: "casbin_api_rule",
}
_, err = AddAdapter(adapter)
if err != nil {
diff --git a/web/src/AdapterEditPage.js b/web/src/AdapterEditPage.js
index 90e9a266..47e688b8 100644
--- a/web/src/AdapterEditPage.js
+++ b/web/src/AdapterEditPage.js
@@ -13,7 +13,7 @@
// limitations under the License.
import React from "react";
-import {Button, Card, Col, Input, InputNumber, Row, Select} from "antd";
+import {Button, Card, Col, Input, InputNumber, Row, Select, Switch} from "antd";
import * as AdapterBackend from "./backend/AdapterBackend";
import * as OrganizationBackend from "./backend/OrganizationBackend";
import * as Setting from "./Setting";
@@ -81,56 +81,6 @@ class AdapterEditPage extends React.Component {
});
}
- renderDataSourceNameConfig() {
- if (Setting.builtInObject(this.state.adapter)) {
- return null;
- }
- return (
-
-
-
- {Setting.getLabel(i18next.t("provider:Host"), i18next.t("provider:Host - Tooltip"))} :
-
-
- {
- this.updateAdapterField("host", e.target.value);
- }} />
-
-
-
-
- {Setting.getLabel(i18next.t("provider:Port"), i18next.t("provider:Port - Tooltip"))} :
-
-
- {
- this.updateAdapterField("port", value);
- }} />
-
-
-
-
- {Setting.getLabel(i18next.t("general:User"), i18next.t("general:User - Tooltip"))} :
-
-
- {
- this.updateAdapterField("user", e.target.value);
- }} />
-
-
-
-
- {Setting.getLabel(i18next.t("general:Password"), i18next.t("general:Password - Tooltip"))} :
-
-
- {
- this.updateAdapterField("password", e.target.value);
- }} />
-
-
-
- );
- }
-
renderAdapter() {
return (
-
- {Setting.getLabel(i18next.t("provider:Type"), i18next.t("provider:Type - Tooltip"))} :
+
+ {Setting.getLabel(i18next.t("adapter:Use same DB"), i18next.t("adapter:Use same DB - Tooltip"))} :
-
-
-
-
-
-
- {Setting.getLabel(i18next.t("syncer:Database type"), i18next.t("syncer:Database type - Tooltip"))} :
-
-
-
-
-
- {this.state.adapter.type === "Database" ? this.renderDataSourceNameConfig() : null}
-
-
- {Setting.getLabel(i18next.t("syncer:Database"), i18next.t("syncer:Database - Tooltip"))} :
-
-
- {
- this.updateAdapterField("database", e.target.value);
+
+ {
+ this.updateAdapterField("useSameDb", checked);
}} />
+ {
+ (this.state.adapter.useSameDb || Setting.builtInObject(this.state.adapter)) ? null : (
+
+
+
+ {Setting.getLabel(i18next.t("provider:Type"), i18next.t("provider:Type - Tooltip"))} :
+
+
+
+
+
+
+
+ {Setting.getLabel(i18next.t("syncer:Database type"), i18next.t("syncer:Database type - Tooltip"))} :
+
+
+
+
+
+
+
+ {Setting.getLabel(i18next.t("provider:Host"), i18next.t("provider:Host - Tooltip"))} :
+
+
+ {
+ this.updateAdapterField("host", e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("provider:Port"), i18next.t("provider:Port - Tooltip"))} :
+
+
+ {
+ this.updateAdapterField("port", value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("general:User"), i18next.t("general:User - Tooltip"))} :
+
+
+ {
+ this.updateAdapterField("user", e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("general:Password"), i18next.t("general:Password - Tooltip"))} :
+
+
+ {
+ this.updateAdapterField("password", e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("syncer:Database"), i18next.t("syncer:Database - Tooltip"))} :
+
+
+ {
+ this.updateAdapterField("database", e.target.value);
+ }} />
+
+
+
+ )
+ }
{Setting.getLabel(i18next.t("syncer:Table"), i18next.t("syncer:Table - Tooltip"))} :