FCLT#59433 Harder voorkomen dat _FACILITOR wordt verwijderd
svn path=/Database/trunk/; revision=44512
This commit is contained in:
@@ -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;
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user