Browse Source

Merge pull request #5545 from Budibase/fix/couch-issue

Fixing CouchDB issue
pull/5568/head
Michael Drury 4 years ago
committed by GitHub
parent
commit
44d14f8815
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 35
      packages/backend-core/src/db/pouch.js

35
packages/backend-core/src/db/pouch.js

@ -20,16 +20,47 @@ exports.getCouchUrl = () => {
return `${protocol}://${env.COUCH_DB_USERNAME}:${env.COUCH_DB_PASSWORD}@${rest}`
}
exports.splitCouchUrl = url => {
const [protocol, rest] = url.split("://")
const [auth, host] = rest.split("@")
const [username, password] = auth.split(":")
return {
url: `${protocol}://${host}`,
auth: {
username,
password,
},
}
}
/**
* Return a constructor for PouchDB.
* This should be rarely used outside of the main application config.
* Exposed for exceptional cases such as in-memory views.
*/
exports.getPouch = (opts = {}) => {
const COUCH_DB_URL = exports.getCouchUrl() || "http://localhost:4005"
let auth = {
username: env.COUCH_DB_USERNAME,
password: env.COUCH_DB_PASSWORD,
}
let url = exports.getCouchUrl() || "http://localhost:4005"
// need to update security settings
if (!auth.username || !auth.password || url.includes("@")) {
const split = exports.splitCouchUrl(url)
url = split.url
auth = split.auth
}
const authCookie = Buffer.from(`${auth.username}:${auth.password}`).toString(
"base64"
)
let POUCH_DB_DEFAULTS = {
prefix: COUCH_DB_URL,
prefix: url,
fetch: (url, opts) => {
// use a specific authorization cookie - be very explicit about how we authenticate
opts.headers.set("Authorization", `Basic ${authCookie}`)
return PouchDB.fetch(url, opts)
},
}
if (opts.inMemory) {

Loading…
Cancel
Save