Browse Source
Merge pull request #2367 from Budibase/feature/couchdb-auth
Feature/couchdb auth
gh-pages
Martin McKeaveney
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with
30 additions and
5 deletions
-
packages/auth/src/db/utils.js
-
packages/auth/src/environment.js
-
packages/server/scripts/dev/manage.js
-
packages/server/src/api/controllers/row/internalSearch.js
-
packages/server/src/db/client.js
-
packages/server/src/environment.js
-
packages/worker/scripts/dev/manage.js
-
packages/worker/src/db/index.js
|
|
|
@ -159,6 +159,17 @@ exports.getDeployedAppID = appId => { |
|
|
|
return appId |
|
|
|
} |
|
|
|
|
|
|
|
exports.getCouchUrl = () => { |
|
|
|
// username and password already exist in URL
|
|
|
|
if (env.COUCH_DB_URL.includes("@")) { |
|
|
|
return env.COUCH_DB_URL |
|
|
|
} |
|
|
|
|
|
|
|
const [protocol, ...rest] = env.COUCH_DB_URL.split("://") |
|
|
|
|
|
|
|
return `${protocol}://${env.COUCH_DB_USERNAME}:${env.COUCH_DB_PASSWORD}@${rest}` |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* if in production this will use the CouchDB _all_dbs call to retrieve a list of databases. If testing |
|
|
|
* when using Pouch it will use the pouchdb-all-dbs package. |
|
|
|
@ -168,7 +179,7 @@ exports.getAllDbs = async () => { |
|
|
|
if (env.isTest()) { |
|
|
|
return getCouch().allDbs() |
|
|
|
} |
|
|
|
const response = await fetch(`${env.COUCH_DB_URL}/_all_dbs`) |
|
|
|
const response = await fetch(`${exports.getCouchUrl()}/_all_dbs`) |
|
|
|
if (response.status === 200) { |
|
|
|
return response.json() |
|
|
|
} else { |
|
|
|
|
|
|
|
@ -9,6 +9,8 @@ function isTest() { |
|
|
|
module.exports = { |
|
|
|
JWT_SECRET: process.env.JWT_SECRET, |
|
|
|
COUCH_DB_URL: process.env.COUCH_DB_URL, |
|
|
|
COUCH_DB_USERNAME: process.env.COUCH_DB_USER, |
|
|
|
COUCH_DB_PASSWORD: process.env.COUCH_DB_PASSWORD, |
|
|
|
SALT_ROUNDS: process.env.SALT_ROUNDS, |
|
|
|
REDIS_URL: process.env.REDIS_URL, |
|
|
|
REDIS_PASSWORD: process.env.REDIS_PASSWORD, |
|
|
|
|
|
|
|
@ -36,7 +36,7 @@ async function init() { |
|
|
|
const envFileJson = { |
|
|
|
PORT: 4001, |
|
|
|
MINIO_URL: "http://localhost:10000/", |
|
|
|
COUCH_DB_URL: "http://budibase:budibase@localhost:10000/db/", |
|
|
|
COUCH_DB_URL: "http://localhost:10000/db/", |
|
|
|
REDIS_URL: "localhost:6379", |
|
|
|
WORKER_URL: "http://localhost:4002", |
|
|
|
INTERNAL_API_KEY: "budibase", |
|
|
|
|
|
|
|
@ -1,6 +1,6 @@ |
|
|
|
const { SearchIndexes } = require("../../../db/utils") |
|
|
|
const env = require("../../../environment") |
|
|
|
const fetch = require("node-fetch") |
|
|
|
const { getCouchUrl } = require("@budibase/auth/db") |
|
|
|
|
|
|
|
/** |
|
|
|
* Class to build lucene query URLs. |
|
|
|
@ -233,7 +233,9 @@ class QueryBuilder { |
|
|
|
} |
|
|
|
|
|
|
|
async run() { |
|
|
|
const url = `${env.COUCH_DB_URL}/${this.appId}/_design/database/_search/${SearchIndexes.ROWS}` |
|
|
|
const url = `${getCouchUrl()}/${this.appId}/_design/database/_search/${ |
|
|
|
SearchIndexes.ROWS |
|
|
|
}` |
|
|
|
const body = this.buildSearchBody() |
|
|
|
return await runQuery(url, body) |
|
|
|
} |
|
|
|
|
|
|
|
@ -12,6 +12,10 @@ PouchDB.adapter("writableStream", replicationStream.adapters.writableStream) |
|
|
|
|
|
|
|
let POUCH_DB_DEFAULTS = { |
|
|
|
prefix: COUCH_DB_URL, |
|
|
|
auth: { |
|
|
|
username: env.COUCH_DB_USERNAME, |
|
|
|
password: env.COUCH_DB_PASSWORD, |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
if (env.isTest()) { |
|
|
|
|
|
|
|
@ -23,6 +23,8 @@ module.exports = { |
|
|
|
// important
|
|
|
|
PORT: process.env.PORT, |
|
|
|
JWT_SECRET: process.env.JWT_SECRET, |
|
|
|
COUCH_DB_USERNAME: process.env.COUCH_DB_USER, |
|
|
|
COUCH_DB_PASSWORD: process.env.COUCH_DB_PASSWORD, |
|
|
|
COUCH_DB_URL: process.env.COUCH_DB_URL, |
|
|
|
MINIO_URL: process.env.MINIO_URL, |
|
|
|
WORKER_URL: process.env.WORKER_URL, |
|
|
|
|
|
|
|
@ -17,7 +17,7 @@ async function init() { |
|
|
|
REDIS_URL: "localhost:6379", |
|
|
|
REDIS_PASSWORD: "budibase", |
|
|
|
MINIO_URL: "http://localhost:10000/", |
|
|
|
COUCH_DB_URL: "http://budibase:budibase@localhost:10000/db/", |
|
|
|
COUCH_DB_URL: "http://localhost:10000/db/", |
|
|
|
} |
|
|
|
let envFile = "" |
|
|
|
Object.keys(envFileJson).forEach(key => { |
|
|
|
|
|
|
|
@ -7,6 +7,10 @@ const COUCH_DB_URL = env.COUCH_DB_URL || "http://localhost:10000/db/" |
|
|
|
|
|
|
|
let POUCH_DB_DEFAULTS = { |
|
|
|
prefix: COUCH_DB_URL, |
|
|
|
auth: { |
|
|
|
username: env.COUCH_DB_USERNAME, |
|
|
|
password: env.COUCH_DB_PASSWORD, |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
if (env.isTest()) { |
|
|
|
|