From: Jean-Marc Pigeon Date: Fri, 14 Nov 2025 14:05:35 +0000 (-0500) Subject: Improving database trigger X-Git-Tag: tag-0.17~27 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=1ffe120863afe9eb2c8d62195929877dd13590a4;p=jmp%2Fmailleur Improving database trigger --- diff --git a/sql/mailleur.sql b/sql/mailleur.sql index 81cbecb..825717c 100644 --- a/sql/mailleur.sql +++ b/sql/mailleur.sql @@ -175,11 +175,17 @@ CREATE TABLE admins ( #ifdef POSTGRESQL CREATE FUNCTION updpass() RETURNS trigger AS $$ - BEGIN - NEW.hash = md5(HASHING); - new.password = crypt (NEW.password,gen_salt('md5')); - RETURN NEW; - END + BEGIN + DECLARE skip INT DEFAULT 0; + SET skip = skip_password_trigger; + IF skip = 0 THEN + NEW.hash = md5(HASHING); + NEW.password = crypt (NEW.password,gen_salt('md5')); + ELSE + NEW.password = NEW.password; + end if; + RETURN NEW; + END $$ LANGUAGE 'plpgsql'; CREATE TRIGGER keephash @@ -190,19 +196,34 @@ CREATE TRIGGER keephash #if defined(MYSQL) || defined(MYSQLI) DELIMITER $$ + CREATE TRIGGER sethash BEFORE UPDATE ON emails FOR EACH ROW - BEGIN - set NEW.hash=MD5(HASHING); - set NEW.password=encrypt(NEW.password,concat('$1$',md5(rand()))); - END$$ + BEGIN + DECLARE skip INT DEFAULT 0; + SET skip = skip_password_trigger; + IF skip = 0 THEN + set NEW.hash=MD5(HASHING); + set NEW.password=encrypt(NEW.password,concat('$1$',md5(rand()))); + ELSE + set NEW.password=NEW.password; + END IF; + END$$ CREATE TRIGGER updhash BEFORE INSERT ON emails FOR EACH ROW - BEGIN - set NEW.hash=MD5(HASHING); - set NEW.password=encrypt(NEW.password,concat('$1$',md5(rand()))); - END$$ + BEGIN + DECLARE skip INT DEFAULT 0; + SET skip = skip_password_trigger; + IF skip = 0 THEN + set NEW.hash=MD5(HASHING); + set NEW.password=encrypt(NEW.password,concat('$1$',md5(rand()))); + ELSE + set NEW.password=NEW.password; + END IF; + END$$ + +DELIMITER ; #endif diff --git a/sql/preset.sql b/sql/preset.sql index 67601f3..049e921 100644 --- a/sql/preset.sql +++ b/sql/preset.sql @@ -6,7 +6,8 @@ /* */ /********************************************************/ - +//to update password the literal way +SET skip_password_trigger = '1'; /********************************************************/ /* */ /* Creating the bare minimun user configuration */ @@ -20,4 +21,9 @@ INSERT INTO admins (email) INSERT INTO emails (email,password) VALUES (ROOTDOMAINNAME,RPASS); - +/********************************************************/ +/* */ +/* Preset value completed */ +/* */ +/********************************************************/ +RESET skip_password_trigger;