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

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