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"))} :