| | 118 | === Безбедност на база на податоци базирана на логика (Triggers) === |
| | 119 | |
| | 120 | Користиме Database Triggers за да спроведеме безбедносни правила што не можат да бидат заобиколени од апликацијата. Поточно, спречуваме корисник да ја избрише сопствената account за да обезбедиме стабилност на системот и следење на активности. |
| | 121 | |
| | 122 | {{{ |
| | 123 | CREATE OR REPLACE FUNCTION stock_management.prevent_self_delete() |
| | 124 | RETURNS TRIGGER AS $$ |
| | 125 | BEGIN |
| | 126 | IF OLD.username = current_setting('app.current_user', true) THEN |
| | 127 | RAISE EXCEPTION 'You cannot delete your own account.'; |
| | 128 | END IF; |
| | 129 | RETURN OLD; |
| | 130 | END; |
| | 131 | $$ LANGUAGE plpgsql; |
| | 132 | |
| | 133 | CREATE OR REPLACE TRIGGER trg_prevent_self_delete |
| | 134 | BEFORE DELETE ON stock_management.users |
| | 135 | FOR EACH ROW EXECUTE FUNCTION stock_management.prevent_self_delete(); |
| | 136 | }}} |
| | 137 | |