From 165e187d38f516f8b904a33cbbc10bd25162115a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=AA=E5=84=BF=E8=99=AB?= <100138954+kyzhangs@users.noreply.github.com> Date: Sun, 8 Jun 2025 22:25:47 +0800 Subject: [PATCH] feat: Casdoor support postgresql (#4068) --- casdoor/1.927.0/data.yml | 2 ++ casdoor/1.927.0/docker-compose.yml | 4 ++-- casdoor/1.927.0/scripts/init.sh | 28 ++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 casdoor/1.927.0/scripts/init.sh diff --git a/casdoor/1.927.0/data.yml b/casdoor/1.927.0/data.yml index a6a74ee94..83eb1efcc 100644 --- a/casdoor/1.927.0/data.yml +++ b/casdoor/1.927.0/data.yml @@ -41,6 +41,8 @@ additionalProperties: value: mysql - label: MariaDB value: mariadb + - label: PostgreSQL + value: postgres - default: casdoor envKey: PANEL_DB_NAME labelEn: Database diff --git a/casdoor/1.927.0/docker-compose.yml b/casdoor/1.927.0/docker-compose.yml index ea9831de1..5a5aa0325 100644 --- a/casdoor/1.927.0/docker-compose.yml +++ b/casdoor/1.927.0/docker-compose.yml @@ -9,8 +9,8 @@ services: - ${PANEL_APP_PORT_HTTP}:8000 environment: RUNNING_IN_DOCKER: "true" - driverName: "mysql" - dataSourceName: ${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@tcp(${PANEL_DB_HOST}:${PANEL_DB_PORT})/ + driverName: ${CASDOOR_DRIVER_NAME} + dataSourceName: ${CASDOOR_DATASOURCE_NAME} dbName: ${PANEL_DB_NAME} volumes: - ./conf:/conf diff --git a/casdoor/1.927.0/scripts/init.sh b/casdoor/1.927.0/scripts/init.sh new file mode 100644 index 000000000..c40abb0ac --- /dev/null +++ b/casdoor/1.927.0/scripts/init.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +[ -f ./.env ] && source ./.env + +# Default configuration +CASDOOR_DRIVER_NAME=${PANEL_DB_TYPE} +CASDOOR_DATASOURCE_NAME="${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@tcp(${PANEL_DB_HOST}:${PANEL_DB_PORT})/" + +# Reset mariadb driver +if [ "$PANEL_DB_TYPE" = "mariadb" ]; then + CASDOOR_DRIVER_NAME="mysql" +fi + +# Reset postgresql datasource +if [ "$PANEL_DB_TYPE" = "postgres" ]; then + CASDOOR_DATASOURCE_NAME="user=${PANEL_DB_USER} password=${PANEL_DB_USER_PASSWORD} host=${PANEL_DB_HOST} port=${PANEL_DB_PORT} dbname=${PANEL_DB_NAME} sslmode=disable" +fi + +{ + # Retain the original environment variables + grep -vE '^(CASDOOR_DRIVER_NAME|CASDOOR_DATASOURCE_NAME)' ./.env 2>/dev/null + + # Add CASDOOR_xx environment variables + echo "CASDOOR_DRIVER_NAME=${CASDOOR_DRIVER_NAME}" + echo "CASDOOR_DATASOURCE_NAME=\"${CASDOOR_DATASOURCE_NAME}\"" + echo "" +} > ./.env.tmp && mv ./.env.tmp ./.env +