Allow to provide password to SQL blocks via ID
This is better than having to store the password in plaintext.
This commit is contained in:
parent
a6324a668d
commit
c085dda842
18
init.el
18
init.el
@ -1362,6 +1362,7 @@ point to the beginning of buffer first."
|
|||||||
(use-package ob-sql
|
(use-package ob-sql
|
||||||
:config (progn
|
:config (progn
|
||||||
|
|
||||||
|
;; XXX: maybe merge this into the advice for `org-babel-execute:sql'?
|
||||||
(define-advice org-babel-sql-dbstring-oracle (:around
|
(define-advice org-babel-sql-dbstring-oracle (:around
|
||||||
(orig-fun host port user password database)
|
(orig-fun host port user password database)
|
||||||
ask-for-password)
|
ask-for-password)
|
||||||
@ -1376,7 +1377,22 @@ point to the beginning of buffer first."
|
|||||||
(funcall orig-fun
|
(funcall orig-fun
|
||||||
host port user
|
host port user
|
||||||
(password-read (format "Password for %s@%s: " user database))
|
(password-read (format "Password for %s@%s: " user database))
|
||||||
database))))))
|
database))))
|
||||||
|
|
||||||
|
(define-advice org-babel-execute:sql (:around
|
||||||
|
(orig-fun body params)
|
||||||
|
retrieve-password-by-function)
|
||||||
|
"Allow to set :dbpassword by an ID of an Org items having the PASSWORD property."
|
||||||
|
(let* ((dbpassword-id (cdr (assq :dbpassword-by-id params)))
|
||||||
|
(params params))
|
||||||
|
(when dbpassword-id
|
||||||
|
(setq params (cons (cons :dbpassword
|
||||||
|
(let* ((pom (or (org-id-find dbpassword-id 'marker)
|
||||||
|
(user-error "Cannot find ID %s" dbpassword-id))))
|
||||||
|
(or (org-entry-get pom "PASSWORD")
|
||||||
|
(user-error "No PASSWORD property at ID %s" dbpassword-id))))
|
||||||
|
params)))
|
||||||
|
(funcall orig-fun body params)))))
|
||||||
|
|
||||||
;; Exporting
|
;; Exporting
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user