FCLT#59433 Harder voorkomen dat _FACILITOR wordt verwijderd

svn path=/Database/trunk/; revision=44512
This commit is contained in:
Erik Groener
2019-10-10 17:21:08 +00:00
parent 7f6e6041ea
commit 29fb632ef9
3 changed files with 58 additions and 33 deletions

View File

@@ -2089,7 +2089,8 @@ INSERT INTO prs_perslid
prs_perslid_otpsecret, prs_perslid_otpsecret,
prs_perslid_dienstverband, prs_perslid_dienstverband,
prs_perslid_ingangsdatum, prs_perslid_ingangsdatum,
prs_perslid_opmerking prs_perslid_opmerking,
prs_perslid_flags
) )
VALUES ('PRS', VALUES ('PRS',
(SELECT prs_srtperslid_key (SELECT prs_srtperslid_key
@@ -2105,7 +2106,8 @@ INSERT INTO prs_perslid
'1$30$6$0$' || RAWTOHEX(DBMS_RANDOM.string ('p', 20)), /* printable characters geeft zo'n 130 bits */ '1$30$6$0$' || RAWTOHEX(DBMS_RANDOM.string ('p', 20)), /* printable characters geeft zo'n 130 bits */
100, 100,
SYSDATE, SYSDATE,
'System account for Facilitor maintenance.'||CHR(13)||'For use by Facilitor support' 'System account for Facilitor maintenance.'||CHR(13)||'For use by Facilitor support',
32
); );
-- Toevoegen gebruiker om HMAIL-API uit te voeren -- Toevoegen gebruiker om HMAIL-API uit te voeren
@@ -2123,7 +2125,7 @@ INSERT INTO prs_perslid (prs_perslid_module,
'API-user tbv. hMail-koppeling', 'API-user tbv. hMail-koppeling',
'_HMAIL', '_HMAIL',
DBMS_RANDOM.string ('a', 32), DBMS_RANDOM.string ('a', 32),
4, 36,
'System account for incoming email.'||CHR(13)||'For Facilitor internal use' 'System account for incoming email.'||CHR(13)||'For Facilitor internal use'
FROM prs_perslid FROM prs_perslid
WHERE prs_perslid_oslogin = '_FACILITOR'; WHERE prs_perslid_oslogin = '_FACILITOR';
@@ -2143,7 +2145,7 @@ INSERT INTO prs_perslid (prs_perslid_module,
'API-user tbv. Putorders-koppeling', 'API-user tbv. Putorders-koppeling',
'_PUTORDERS', '_PUTORDERS',
DBMS_RANDOM.string ('a', 32), DBMS_RANDOM.string ('a', 32),
4, 36,
'System account for outgoing email.'||CHR(13)||'For Facilitor internal use' 'System account for outgoing email.'||CHR(13)||'For Facilitor internal use'
FROM prs_perslid FROM prs_perslid
WHERE prs_perslid_oslogin = '_FACILITOR'; WHERE prs_perslid_oslogin = '_FACILITOR';

View File

@@ -119,8 +119,15 @@ BEFORE INSERT OR UPDATE ON prs_perslid
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
UPDATE_UPPER(prs_perslid_naam, prs_perslid_upper,prs_perslid); UPDATE_UPPER(prs_perslid_naam, prs_perslid_upper,prs_perslid);
UPDATE_UPPER(prs_perslid_oslogin, prs_perslid_oslogin,prs_perslid); IF (BITAND(:old.prs_perslid_flags,32) = 32 OR BITAND(:new.prs_perslid_flags,32) = 32)
UPDATE_UPPER(prs_perslid_oslogin2, prs_perslid_oslogin2,prs_perslid); THEN
-- Zet de waarde weer terug alsof er niets gewijzigd is.
:new.prs_perslid_oslogin := :old.prs_perslid_oslogin;
:new.prs_perslid_oslogin2 := :new.prs_perslid_oslogin2;
ELSE
UPDATE_UPPER(prs_perslid_oslogin, prs_perslid_oslogin,prs_perslid);
UPDATE_UPPER(prs_perslid_oslogin2, prs_perslid_oslogin2,prs_perslid);
END IF;
UPDATE_AANMAAKDATUM(prs_perslid, prs_perslid_aanmaak); UPDATE_AANMAAKDATUM(prs_perslid, prs_perslid_aanmaak);
-- If this perslid belongs to the primary company of an xd-environment -- If this perslid belongs to the primary company of an xd-environment
-- it gets a default apikey to get synced across the domains -- it gets a default apikey to get synced across the domains
@@ -143,8 +150,15 @@ BEGIN
NULL; -- persoon hoort niet bij de serviceorganisatie NULL; -- persoon hoort niet bij de serviceorganisatie
END; END;
END IF; END IF;
IF :new.prs_perslid_verwijder IS NOT NULLDATUM AND :old.prs_perslid_verwijder IS NULLDATUM IF ( :new.prs_perslid_verwijder IS NOT NULLDATUM
AND :old.prs_perslid_verwijder IS NULLDATUM
AND ( BITAND(:old.prs_perslid_flags,32) = 32
OR BITAND(:new.prs_perslid_flags,32) = 32
)
)
THEN THEN
:new.prs_perslid_verwijder := :old.prs_perslid_verwijder;
ELSE
DECLARE DECLARE
dummy VARCHAR2(1); dummy VARCHAR2(1);
BEGIN BEGIN
@@ -234,32 +248,34 @@ BEGIN
WHEN OTHERS THEN NULL; WHEN OTHERS THEN NULL;
END; END;
-- Wis alle authenticatiemogelijkheden -- Wis alle authenticatiemogelijkheden
:new.prs_perslid_oslogin := ''; :new.prs_perslid_oslogin := '';
:new.prs_perslid_oslogin2 := ''; :new.prs_perslid_oslogin2 := '';
:new.prs_perslid_apikey := NULL; :new.prs_perslid_apikey := NULL;
-- And do what prs.setpassword(:new.prs_perslid_key, NULL) would do: -- And do what prs.setpassword(:new.prs_perslid_key, NULL) would do:
:new.prs_perslid_salt := NULL; :new.prs_perslid_salt := NULL;
:new.prs_perslid_wachtwoord_hash := NULL; :new.prs_perslid_wachtwoord_hash := NULL;
:new.prs_perslid_wachtwoord_exp := NULL; :new.prs_perslid_wachtwoord_exp := NULL;
:new.prs_perslid_otpsecret := NULL; :new.prs_perslid_otpsecret := NULL;
-- Wis profiel (dat kan anders nooit opgeruimd worden) -- Wis profiel (dat kan anders nooit opgeruimd worden)
:new.fac_profiel_key := NULL; :new.fac_profiel_key := NULL;
END IF; END IF;
IF fac.getsetting ('login_use_email') = 0 AND IF fac.getsetting ('login_use_email') = 0
( :new.prs_perslid_oslogin IS NULL AND :old.prs_perslid_oslogin IS NOT NULL AND ( :new.prs_perslid_oslogin IS NULL AND :old.prs_perslid_oslogin IS NOT NULL
OR :new.prs_perslid_oslogin2 IS NULL AND :old.prs_perslid_oslogin2 IS NOT NULL OR :new.prs_perslid_oslogin2 IS NULL AND :old.prs_perslid_oslogin2 IS NOT NULL
OR NVL(:new.prs_perslid_wachtwoord_hash, 'X') <> NVL(:old.prs_perslid_wachtwoord_hash, 'X')) OR NVL(:new.prs_perslid_wachtwoord_hash, 'X') <> NVL(:old.prs_perslid_wachtwoord_hash, 'X')
OR fac.getsetting ('login_use_email') = 1 AND )
:new.prs_perslid_email IS NULL AND :old.prs_perslid_email IS NOT NULL OR fac.getsetting ('login_use_email') = 1
THEN -- Merk op: anno 5.3.2 wordt een persoon die *nu* is ingelogd hier niet AND :new.prs_perslid_email IS NULL
-- automatisch door uitgelogd AND :old.prs_perslid_email IS NOT NULL
:new.prs_perslid_credentials_datum := SYSDATE; THEN -- Merk op: anno 5.3.2 wordt een persoon die *nu* is ingelogd hier niet
DELETE FROM fac_session -- automatisch door uitgelogd
WHERE prs_perslid_key = :new.prs_perslid_key; :new.prs_perslid_credentials_datum := SYSDATE;
DELETE FROM aut_client_perslid DELETE FROM fac_session
WHERE prs_perslid_key = :old.prs_perslid_key; WHERE prs_perslid_key = :new.prs_perslid_key;
END IF; DELETE FROM aut_client_perslid
WHERE prs_perslid_key = :old.prs_perslid_key;
END IF;
END; END;
/ /
@@ -296,6 +312,10 @@ CREATE_TRIGGER(prs_t_prs_perslid_B_D)
BEFORE DELETE ON prs_perslid BEFORE DELETE ON prs_perslid
FOR EACH ROW FOR EACH ROW
BEGIN BEGIN
IF (BITAND(:old.prs_perslid_flags,32) = 32 OR BITAND(:new.prs_perslid_flags,32) = 32)
THEN
raise_application_error(-20000, 'Delete not allowed');
END IF;
DELETE FROM prs_kenmerklink KL WHERE KL.prs_link_key=:old.prs_perslid_key AND KL.prs_kenmerklink_niveau='P'; DELETE FROM prs_kenmerklink KL WHERE KL.prs_link_key=:old.prs_perslid_key AND KL.prs_kenmerklink_niveau='P';
END; END;
/ /

View File

@@ -58,7 +58,10 @@ ALTER TABLE fac_menu ADD fac_menu_message
ALTER TABLE fac_menu ADD fac_menu_color VARCHAR2 (60 CHAR); ALTER TABLE fac_menu ADD fac_menu_color VARCHAR2 (60 CHAR);
--ALTER TABLE mld_stdmelding ADD mld_stdmelding_color VARCHAR2 (60 CHAR); --ALTER TABLE mld_stdmelding ADD mld_stdmelding_color VARCHAR2 (60 CHAR);
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#59433
UPDATE prs_perslid
SET prs_perslid_flags = prs_perslid_flags + 32
WHERE prs_perslid_oslogin IN ('_FACILITOR','_HMAIL','_PUTORDERS');
/////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn /////////////////////////////////////////////////////////////////////////////////////////// XXXX#nnnnn