Ho famenon'ny
Ny ampahany teorika dia voafaritra tsara ao amin'ny antontan-taratasy
Tsy misy zava-baovao ao amin'ny lahatsoratra, tsy misy dikany miafina na fahalalana miafina. Soso-kevitra fotsiny momba ny fampiharana azo ampiharina amin'ny hevitra teorika. Raha misy liana dia vakio. Raha tsy liana ianao dia aza mandany fotoana.
Fanambarana olana
Raha tsy mitsoraka lalina ao amin'ny faritry ny foto-kevitra, vetivety, ny olana dia azo amboarina toy izao manaraka izao: Misy latabatra iray izay mametraka orinasa iray. Ny andalana ao amin'ny latabatra dia azo fafana, fa ny andalana tsy azo fafana ara-batana fa tsy maintsy afenina.
Fa voalaza hoe: “Aza mamafa na inona na inona, ovao fotsiny ny anarany. Ny Internet dia mitahiry ny zava-drehetra"
Teny an-dalana dia tsara ny tsy mamerina manoratra ireo fiasa voatahiry efa misy miasa miaraka amin'ity sampana ity.
Mba hampiharana io hevitra io dia manana ny toetra ny latabatra dia_fafa. Dia tsotra ny zava-drehetra - mila mahazo antoka ianao fa ny mpanjifa dia afaka mahita afa-tsy ny tsipika izay ny toetra dia_fafa DISO Inona no atao hoe mekanika? Row Level Security.
fanatanterahana
Mamorona andraikitra sy tetika misaraka
CREATE ROLE repos;
CREATE SCHEMA repos;
Mamorona ny latabatra kendrena
CREATE TABLE repos.file
(
...
is_del BOOLEAN DEFAULT FALSE
);
CREATE SCHEMA repos
Alefaso Fiarovana amin'ny laharana
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 ;
Asa fanompoana - famafana andalana iray eo amin'ny latabatra
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;
Asa fandraharahana - famafana antontan-taratasy
CREATE OR REPLACE business_functions.deleteDoc( doc_for_delete JSON )
RETURNS JSON AS $$
BEGIN
...
PERFORM repos.delete( doc_id ) ;
...
END
$$ LANGUAGE plpgsql SECURITY DEFINER;
vokatra
Ny mpanjifa dia mamafa ny antontan-taratasy
SELECT business_functions.delCFile( (SELECT json_build_object( 'CId', 3 )) );
Aorian'ny famafana dia tsy hitan'ny mpanjifa ilay antontan-taratasy
SELECT business_functions.getCFile"( (SELECT json_build_object( 'CId', 3 )) ) ;
-----------------
(0 rows)
Fa ao amin'ny tahiry dia tsy voafafa ny antontan-taratasy, ny toetra ihany no miova is_del
psql -d my_db
SELECT id, name , is_del FROM repos.file ;
id | name | is_del
--+---------+------------
1 | test_1 | t
(1 row)
Izay no takiana amin'ny fanambarana olana.
Ny vokany
Raha mahaliana ny lohahevitra, amin'ny fianarana manaraka dia azonao atao ny mampiseho ohatra iray amin'ny fampiharana ny modely mifototra amin'ny anjara amin'ny fanasarahana ny fidirana amin'ny angona amin'ny fampiasana Row Level Security.
Source: www.habr.com