Browse Source

new: [vps] add ``odoo fix-sso`` command.

pull/4/head
Valentin Lab 1 year ago
parent
commit
1b7cf70cd2
  1. 21
      README.org
  2. 30
      bin/vps

21
README.org

@ -482,6 +482,27 @@ compose run --rm --use-aliases odoo --dev=wdb --config=/opt/odoo/auto/odoo.conf
Le container odoo crée par la dernière ligne se retirera proprement des tables DNS Le container odoo crée par la dernière ligne se retirera proprement des tables DNS
interne, et donc peut tout a fait être relancée autant de fois que l'on souhaitera. interne, et donc peut tout a fait être relancée autant de fois que l'on souhaitera.
**** Single Sign On en carafe
L'installation du module =website= et =galicia= pour l'authentication
Single Sign On peut aboutir à une situation où le sign on est
automatique et arrive sur un mauvais utilisateur.
Il s'agit de l'utilisateur attaché à l'objet =website= surlequel le sign on
du service tiers a été configuré pour pointer.
En effet, l'objet ~website~ possède un ~user_id~ qui va être utilisé en guise
d'utilisateur par défaut. Si celui-ci ne correspond pas à l'utilisateur odoo ~public_user~,
alors =galicia= considère que cet utilisateurs est déjà loggé et offre son accès.
La solution est de forcer le ~user_id~ des objets ~website~ à l'id de l'utilisateur ~public_user~.
C'est ce que fait la commande:
#+begin_src sh
vps odoo fix-sso
#+end_src
*** letsencrypt *** letsencrypt
Le service letsencrypt fourni des certificat SSL à la demande et les Le service letsencrypt fourni des certificat SSL à la demande et les

30
bin/vps

@ -697,8 +697,9 @@ export -f compose:container:service
compose:psql() { compose:psql() {
local project_name="$1" dbname="$2" container_id local project_name="$1" dbname="$2" container_id
shift 2
container_id=$(compose:charm:container_one "$project_name" "postgres") || return 1 container_id=$(compose:charm:container_one "$project_name" "postgres") || return 1
docker exec -i "${container_id}" psql -U postgres "$dbname"
docker exec -i "${container_id}" psql -U postgres "$dbname" "$@"
} }
export -f compose:psql export -f compose:psql
@ -767,6 +768,13 @@ postgres:restore() {
export -f postgres:restore export -f postgres:restore
odoo:get_public_user_id() {
local project_name="$1" dbname="$2"
echo "select res_id from ir_model_data where model = 'res.users' and name = 'public_user';" |
compose:psql "$project_name" "$dbname" -qAt
}
cyclos:set_root_url() { cyclos:set_root_url() {
local project_name="$1" dbname="$2" url="$3" local project_name="$1" dbname="$2" url="$3"
@ -1387,6 +1395,26 @@ cmdline.spec:odoo:cmd:set-cyclos-url:run() {
} }
EOF EOF
}
cmdline.spec.gnu fix-sso
cmdline.spec:odoo:cmd:fix-sso:run() {
: :optval: --database,-d "Target database ('odoo' if not specified)"
local public_user_id project_name dbname
dbname=${opt_database:-odoo}
project_name=$(compose:project_name) || exit 1
public_user_id=$(odoo:get_public_user_id "${project_name}" "${dbname}") || exit 1
Wrap -d "fix website's object to 'public_user' (id=$public_user_id)" <<EOF || exit 1
echo "UPDATE website SET user_id = $public_user_id;" |
compose:psql "$project_name" "$dbname" || {
err "Failed to set website's object user_id to public user's id ($public_user_id) in '$dbname' database."
exit 1
}
EOF
} }

Loading…
Cancel
Save