Strona 1 z 1

Blokada modyfikacji załączników

: 15 gru 2022, 08:24
autor: wojtek
Ponieważ ERPXL nie ma zakazu odpowiedzialnego za blokowanie modyfikacji istniejących załączników, próbuję napisać trigger który to zablokuje.

Poniższy trigger działa ale nie do końca, bo mimo komunikatu o braku uprawnień i tak podmienia pole dab_dane w tabeli cdn.danebinarne.
Macie może pomysł jak zablokować użytkownikom modyfikację już istniejących załączników ?

ALTER TRIGGER [CDN].[KontrolaModyfikacjiZalacznika]

ON [CDN].[DaneBinarne]

FOR UPDATE
AS

SET NOCOUNT ON
IF EXISTS
( select * from inserted
inner join cdn.daneobiekty o on o.dao_dabid=inserted.dab_id

where o.DAO_PKPrawa=1 and inserted.DAB_OpeNumer not in (151,309,370,509))

BEGIN

RAISERROR('#CDN_BLAD/# #CDN_1=Nie masz uprawnień do usuwania oraz modyfikowania załączników podpiętych do B2B./#',16,1)

ROLLBACK TRAN
SET NOCOUNT OFF
RETURN
END

pozdrawiam
Wojtek

Re: Blokada modyfikacji załączników

: 15 gru 2022, 08:55
autor: praiser
Przy takiej konstrukcji jest tak samo ?

Kod: Zaznacz cały

FOR UPDATE
AS
SET NOCOUNT ON
IF  UPDATE( Dab_dane )
  BEGIN
  IF EXISTS
    ( select * from inserted
        inner join cdn.daneobiekty o on o.dao_dabid=inserted.dab_id
        where o.DAO_PKPrawa=1 and inserted.DAB_OpeNumer not in (151,309,370,509))
    BEGIN
        RAISERROR('#CDN_BLAD/# #CDN_1=Nie masz uprawnień do usuwania oraz modyfikowania załączników podpiętych do B2B./#',16,1)
        ROLLBACK TRAN
        SET NOCOUNT OFF
        RETURN
    END
    END
SET NOCOUNT OFF

Re: Blokada modyfikacji załączników

: 15 gru 2022, 09:55
autor: wojtek
Dokładnie jest to samo,
zauważyłem, że formatka zachowuje się tak, że po podmianie załącznika robi update na bazie pola dab_dane a dopiero po naciśnięciu dyskietki robi update osoby modyfikującej, i tu jest problem. Bo mimo że trigger zadziała to wpisu do tabeli cdn.danebinarne nie cofnie.

pozdrawiam

Re: Blokada modyfikacji załączników

: 15 gru 2022, 10:17
autor: praiser
nie znam się tak bardzo na tym ale
DELETED pseudo table has a copy of the rows that will be either updated or deleted
FOR UPDATE
AS
SET NOCOUNT ON
IF UPDATE( Dab_dane )
DECLARE @STARE_DANE image
SELECT @STARE_DANE = Dab_dane from DELETED
BEGIN
IF EXISTS
( select * from inserted
inner join cdn.daneobiekty o on o.dao_dabid=inserted.dab_id
where o.DAO_PKPrawa=1 and inserted.DAB_OpeNumer not in (151,309,370,509))
BEGIN
UPDATE CDN.DaneBinarne set Dab_dane = @STARE_DANE where dab_id=inserted.dab_id
RAISERROR('#CDN_BLAD/# #CDN_1=Nie masz uprawnień do usuwania oraz modyfikowania załączników podpiętych do B2B./#',16,1)
ROLLBACK TRAN

END
SET NOCOUNT OFF
RETURN
END
END
SET NOCOUNT OFF

Re: Blokada modyfikacji załączników

: 15 gru 2022, 20:58
autor: taszek
A jakby za pomocą Małej Hydry poblokować kontrolki i dodać warunek poprawności, który by zwracał czy dany operator ma uprawnienia czy nie.