[Thomas John Sødring]
Ja, for saksbehandling så vil brukeren måtte være koblet til en administrativEnhet. Dette i henhold til å kunne produsere uttrekk der det er mulig å sette en verdi på administrativEnhet i henhold til:
Jeg fant feilen. Det ser ut som at tidligere hadde testoppsettets organisajon navnet 'Organisation', mens nå heter den 'Demo Organisation'. Brukeren fungerte bedre når jeg oppdaterte ad_user.user_organisation_id. Neste problem var mangel på administrativEnhet-referanse, som du korrekt observerer og kommer med gode løsninger på. I denne omgang setter jeg opp bruker til å være del av automatisk opprettede 'example test administrative unit', men på sikt vil vi lage egne enheter her.
Her er oppdatert nikita-create-user-psql (byttet navn).
#!/bin/sh # Author: Petter Reinholdtsen # License: GPL v2 or later at your choice
PGHOST=dbpg-uio-utv03.uio.no PGUSER=nikita_noark5_test_user PGDB=nikita_noark5_test
usage() { echo "$0: <username> <firstname> <lastname> [<organization name>] [<adm unit name>] [<role name>]" }
if [ -z "$3" ] ; then usage exit 1 fi
USERNAME="$1" FIRSTNAME="$2" LASTNAME="$3" if [ -z "$4" ]; then ORG="Demo Organisation" else ORG="$4" fi if [ -z "$5" ] ; then ADM_UNIT="example test administrative unit" else ADM_UNIT="$5" fi if [ -z "$6" ]; then ROLE="RECORDS_MANAGER" fi
USERUUID="$(uuidgen)"
psql --port 5432 --host $PGHOST --user $PGUSER $PGDB -c " BEGIN TRANSACTION; INSERT INTO system_id_entity( system_id, created_date, last_modified_date, created_by, owned_by, version, dtype ) VALUES ( '$USERUUID', NOW(), NOW(), 'system', null, 0, 'User' );
INSERT INTO ad_user( system_id, username, firstname, lastname, account_non_expired, credentials_non_expired, account_non_locked, enabled, user_organisation_id ) VALUES ( '$USERUUID', '$USERNAME', '$FIRSTNAME', '$LASTNAME', true, true, true, true, (SELECT system_id FROM ad_organisation WHERE organisation_name = '$ORG') );
INSERT INTO ad_administrative_unit_user( f_pk_administrative_unit_id, f_pk_user_id ) VALUES ( (SELECT system_id FROM ad_administrative_unit WHERE administrative_unit_name = '$ADM_UNIT'), '$USERUUID' );
--INSERT INTO ad_user_authority( -- authority_id, -- f_pk_user_id --) VALUES ( -- (SELECT id FROM ad_authority WHERE authority_name = '$ROLE'), -- '$USERUUID' --); END TRANSACTION; "
Jeg vil også lage scripts/nikita-create-adm-unit-psql og scripts/nikita-create-org-psql for å kunne starte med blanke ark, men det kommer senere.