From: Jean-Marc Pigeon Date: Fri, 14 Nov 2025 16:16:39 +0000 (-0500) Subject: Trying to make database trigger simpler X-Git-Tag: tag-0.17~21 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=2ca74d40cefbfa944b307d1888d6094687d6109d;p=jmp%2Fmailleur Trying to make database trigger simpler --- diff --git a/sql/mailleur.sql b/sql/mailleur.sql index 629c1bb..ac79f0d 100644 --- a/sql/mailleur.sql +++ b/sql/mailleur.sql @@ -175,17 +175,15 @@ CREATE TABLE admins ( #ifdef POSTGRESQL CREATE FUNCTION updpass() RETURNS trigger AS $$ - DECLARE skip BOOLEAN := FALSE; BEGIN - SELECT skip_password_trigger INTO skip - FROM temp_skip_flag limit 1; - IF skip = FALSE THEN - NEW.hash = md5(HASHING); - NEW.password = crypt (NEW.password,gen_salt('md5')); - ELSE - NEW.password = NEW.password; - END if; - RETURN NEW; + IF NEW.password IS NULL OR length(trim(NEW.password)) = 0 THEN + RETURN NEW; + END IF; + IF substring(NEW.password,1,1) = '$' THEN + RETURN NEW; + END IF; + NEW.hash = md5(HASHING); + NEW.password = crypt (NEW.password,gen_salt('md5')); END; $$ LANGUAGE 'plpgsql'; @@ -201,14 +199,14 @@ DELIMITER $$ CREATE TRIGGER sethash BEFORE UPDATE ON emails FOR EACH ROW BEGIN - DECLARE skip BOOLEAN DEFAULT FALSE; - SELECT IFNULL(MAX(skip_password_trigger),FALSE) INTO skip - FROM temp_skip_flag; - IF skip = FALSE THEN + IF NEW.password IS NULL OR + LENGTH(TRIM(NEW.password))=0 OR + LEFT(NEW.password,1) != '$' THEN + THEN + set NEW.password=NEW.password; + else set NEW.hash=MD5(HASHING); set NEW.password=encrypt(NEW.password,concat('$1$',md5(rand()))); - ELSE - set NEW.password=NEW.password; END IF; END$$ @@ -216,14 +214,14 @@ CREATE TRIGGER sethash CREATE TRIGGER updhash BEFORE INSERT ON emails FOR EACH ROW BEGIN - DECLARE skip BOLLEAN DEFAULT FALSE; - SELECT IFNULL(MAX(skip_password_trigger),FALSE) INTO skip - FROM temp_skip_flag; - IF skip = FALSE THEN + IF NEW.password IS NULL OR + LENGTH(TRIM(NEW.password))=0 OR + LEFT(NEW.password,1) != '$' THEN + THEN + set NEW.password=NEW.password; + else set NEW.hash=MD5(HASHING); set NEW.password=encrypt(NEW.password,concat('$1$',md5(rand()))); - ELSE - set NEW.password=NEW.password; END IF; END$$ diff --git a/sql/preset.sql b/sql/preset.sql index 42b2a78..7088111 100644 --- a/sql/preset.sql +++ b/sql/preset.sql @@ -6,11 +6,6 @@ /* */ /********************************************************/ -CREATE TEMPORARY TABLE temp_skip_flag ( - skip_password_trigger BOOLEAN - ); - -INSERT INTO temp_skip_flag VALUES (TRUE); /********************************************************/ /* */ /* Creating the bare minimun user configuration */ @@ -29,5 +24,4 @@ INSERT INTO emails (email,password) /* Preset value completed */ /* */ /********************************************************/ -DELETE FROM temp_skip_flag;