E-Mail-Konfiguration einrichten / neues Benutzerkonto erstellen

Neue Benutzer kann man über die UI nur anlegen, wenn Folio E-Mails verschicken kann, da die Passwortvergabe nur möglich ist, wenn man sich per E-Mail einen Link zur Eingabemaske "Choose your password" schicken lässt.

PS: Mittlerweile ist die Passwortvergabe auch über das "Settings"-Menü möglich: https://folio-snapshot.dev.folio.org/settings/developer/passwd

Damit Folio E-Mails verschicken kann, muss man die E-Mail-Konfiguration einrichten. Das habe ich so gemacht:

Das im Folgenden beschriebene Verfahren mit mod-configuration /configurations/entries ist deprecated. Bitte stattdessen von mod-email /smtp-configuration nutzen, siehe README.md von mod-email.

Die Vorarbeit hat schon TAMU gemacht, ich benutze ein Skript von denen, welches sie eigentlich innerhalb eines Docker-Containers verwenden:

git clone https://github.com/folio-org/folio-install.git  folio-install_kube-rancher
cd folio-install_kube-rancher
git checkout kube-rancher
cd alternative-install/kubernetes-rancher/TAMU/deploy-jobs/create-email
mkdir work
cd work

Im Arbeitsverzeichnis work folgendes Skript anlegen:

vim create-email-config-hbz.sh
#!/bin/bash
 
# create Okapi token
export OKAPI_URL='http://localhost:9130'
export TENANT_ID='diku'
export X_OKAPI_TOKEN=$( curl -s -S -D - -H "X-Okapi-Tenant: $TENANT_ID" -H "Content-type: application/json" -H "Accept: application/json" -d '{"tenant":"diku","username":"diku_admin","password":"admin"}' $OKAPI_URL/authn/login | grep -i "^x-okapi-token: " )
X_OKAPI_TOKEN=${X_OKAPI_TOKEN//x-okapi-token: /}
echo "X_OKAPI_TOKEN=$X_OKAPI_TOKEN"
export FOLIO_HOST='https://<MYHOST>'
 
export EMAIL_FROM='noreply@<MYHOST>'
export EMAIL_USERNAME='hbz_admin'
export EMAIL_PASSWORD='Maus20'
export EMAIL_SMTP_HOST='<SMTP_HOST>'
export EMAIL_SMTP_PORT='<SMTP_PORT>'
export EMAIL_SMTP_LOGIN_OPTION='DISABLED'
export EMAIL_TRUST_ALL='true'
export EMAIL_SMTP_SSL='false'
export EMAIL_START_TLS_OPTIONS='OPTIONAL'
export SERVICE_POINT='UUID'
export SELF_CHECKOUT_CONFIG='config'
export ACS_TENANT_CONFIG='config'
 
./../create-email-config.sh
 
exit 0

Die Variablen TENANT_ID, MYHOST sind natürlich individuell zu ändern (falls als Tenant nicht diku verwendet wird, muss auch noch in Zeile 7 das Json entsprechend geändert werden). Als EMAIL_USERNAME und EMAIL_PASSWORD habe ich einfach irgendetwas genommen; weiß nicht, was das für eine Bedeutung hat (den User/Passwd muss es m.E. nicht geben; wo auch ?).

SMTP_HOST und SMTP_PORT sind bei der Zentralen IT zu erfragen. Die anderen Optionen kann man so lassen; Achtung, die Option 'NONE' bei EMAIL_SMTP_LOGIN_OPTION gibt es nicht mehr, stattdessen muss man 'DISABLED' verwenden.

Dann das Skript einfach ausführen, ./create-email-config-hbz.sh

Wenn alles gut geht, erhält man eine Reihe von Erfolgs-Returncodes (201 Created).

Nun kann man sich in Folio anmelden und z.B. einen neuen Benutzer anlegen (User - New). Nicht vergessen, für den Nutzer eine Email zu vergeben (die eigene!). Anschließend auf "Edit" gehen und auf den Link "Send reset password email" klicken. Dann ausloggen (wichtig). Man erhält eine Email "Activate your Folio account" mit einem Link. Klick auf den Link führt zu einer Eingabemaske "Choose your password". Sicheres Passwort erzeugen und bestätigen. Nun noch einmal als Superuser (z.B. diku_admin) einloggen und dem neuen Nutzer Rechte geben: Users - Benutzer suchen und auswählen - Edit. Dann bei "User Permissions" auf "Add Permission" klicken; Permission Types - Permissions anklicken und rechts die gewünschten Berechtigungen auswählen. Save & close. Nochmal Save & close. Jetzt kannn man sich als Superuser ausloggen und als der neue Benutzer/Benutzerin wieder anmelden.


...falls beim Einrichten der Email-Konfiguration etwas schief gelaufen ist:

Hier noch 3 Skrpte von mir:

Alle Konfigurationen auflisten lassen:

cat ks.get_config_entries.sh
#!/bin/bash
echo "Fetching configuration entries"
OKAPI_URL=https://folio-demo-test.hbz-nrw.de/okapi
TENANT_ID=diku
X_OKAPI_TOKEN=$( curl -s -S -D - -H "X-Okapi-Tenant: $TENANT_ID" -H "Content-type: application/json" -H "Accept: application/json" -d '{"tenant":"diku","username":"diku_admin","password":"admin"}' $OKAPI_URL/authn/login | grep -i "^x-okapi-token: " )
curl -i -w '\n' -X GET -H "X-Okapi-Tenant: $TENANT_ID" -H "$X_OKAPI_TOKEN" $OKAPI_URL/configurations/entries?limit=100


Damit die ID einer bestimmten Konfiguration heraussuchen und löschen:

cat ks.delete_config_entry.sh
#!/bin/bash
entry_id=$1
echo "Deleting configuration entry id $entry_id"
OKAPI_URL=https://folio-demo-test.hbz-nrw.de/okapi
TENANT_ID=diku
X_OKAPI_TOKEN=$( curl -s -S -D - -H "X-Okapi-Tenant: $TENANT_ID" -H "Content-type: application/json" -H "Accept: application/json" -d '{"tenant":"diku","username":"diku_admin","password":"admin"}' $OKAPI_URL/authn/login | grep -i "^x-okapi-token: " )
curl -i -w '\n' -X DELETE -H "X-Okapi-Tenant: $TENANT_ID" -H "$X_OKAPI_TOKEN" $OKAPI_URL/configurations/entries/$entry_id


Eine einzelne Konfiguration wieder neu anlegen :

cat ks.post_config.sh
#!/bin/bash
echo "Posting configuration entry"
ENTRY_JSON=$1
if [ ! -f "$ENTRY_JSON" ]; then
  echo "$ENTRY_JSON ist keine Datei!"
  exit 1;
fi
OKAPI_URL=https://folio-demo-test.hbz-nrw.de/okapi
TENANT_ID=diku
X_OKAPI_TOKEN=$( curl -s -S -D - -H "X-Okapi-Tenant: $TENANT_ID" -H "Content-type: application/json" -H "Accept: application/json" -d '{"tenant":"diku","username":"diku_admin","password":"admin"}' $OKAPI_URL/authn/login | grep -i "^x-okapi-token: " )
curl -i -w '\n' -X POST -H "Content-type: application/json" -H "X-Okapi-Tenant: $TENANT_ID" -H "$X_OKAPI_TOKEN" -d @$ENTRY_JSON $OKAPI_URL/configurations/entries


PS: Keine Angst, https://folio-demo-test.hbz-nrw.de/okapi ist nur hbz-intern zugänglich...