Semubatsiri ku
Chikamu che theoretical chinotsanangurwa zvakanaka muzvinyorwa
Hapana chitsva muchinyorwa, hapana chakavanzika chirevo kana ruzivo rwakavanzika. Ingori dhizaini nezvekuita kwekuita kweiyo theoretical pfungwa. Kana paine munhu anofarira, verenga. Kana usiri kufarira, usatambise nguva yako.
Kugadzirwa kwedambudziko
Pasina kunyura zvakadzama munharaunda yenyaya, muchidimbu, dambudziko rinogona kuumbwa sezvizvi: Pane tafura inoshandisa rimwe sangano rebhizimisi. Mitsara iri patafura inogona kudzimwa, asi mitsetse haigone kudzimwa; inofanira kuvanzwa.
Nekuti zvinonzi: "Usadzima chero chinhu, ingoitumidza zita. IInternet inochengetedza ZVESE"
Munzira, zvinokurudzirwa kusanyora zvakare mabasa akachengetwa anoshanda nesangano iri.
Kuti ishandise pfungwa iyi, tafura ine hunhu is_deted. Zvadaro zvinhu zvose zviri nyore - unofanira kuva nechokwadi chokuti mutengi anogona kuona chete mitsetse umo hunhu is_deted nhema Ndeipi nzira inoshandiswa? Row Level Security.
Kutevedzera
Gadzira chikamu chakasiyana uye schema
CREATE ROLE repos;
CREATE SCHEMA repos;
Gadzira tafura yechinangwa
CREATE TABLE repos.file
(
...
is_del BOOLEAN DEFAULT FALSE
);
CREATE SCHEMA repos
Isu tinosanganisira Row Chikamu Chengetedzo
ALTER TABLE repos.file ENABLE ROW LEVEL SECURITY ;
CREATE POLICY file_invisible_deleted ON repos.file FOR ALL TO dba_role USING ( NOT is_deleted );
GRANT ALL ON TABLE repos.file to dba_role ;
GRANT USAGE ON SCHEMA repos TO dba_role ;
Basa rebasa - kudzima mutsara mutafura
CREATE OR REPLACE repos.delete( curr_id repos.file.id%TYPE)
RETURNS integer AS $$
BEGIN
...
UPDATE repos.file
SET is_del = TRUE
WHERE id = curr_id ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
Bhizinesi basa - kudzima gwaro
CREATE OR REPLACE business_functions.deleteDoc( doc_for_delete JSON )
RETURNS JSON AS $$
BEGIN
...
PERFORM repos.delete( doc_id ) ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
Mhinduro
Mutengi anodzima gwaro
SELECT business_functions.delCFile( (SELECT json_build_object( 'CId', 3 )) );
Mushure mekudzima, mutengi haaone gwaro
SELECT business_functions.getCFile"( (SELECT json_build_object( 'CId', 3 )) ) ;
-----------------
(0 rows)
Asi mune dhatabhesi gwaro haribviswe, hunhu chete hunoshandurwa is_del
psql -d my_db
SELECT id, name , is_del FROM repos.file ;
id | name | is_del
--+---------+------------
1 | test_1 | t
(1 row)
Izvo ndizvo zvaidiwa muchirevo chedambudziko.
Mugumisiro
Kana musoro wacho uchinakidza, muchidzidzo chinotevera unokwanisa kuratidza muenzaniso wekushandisa muenzaniso wekuparadzanisa kuwana data uchishandisa Row Level Security.
Source: www.habr.com