From 2ca74d40cefbfa944b307d1888d6094687d6109d Mon Sep 17 00:00:00 2001 From: Jean-Marc Pigeon Date: Fri, 14 Nov 2025 11:16:39 -0500 Subject: [PATCH] Trying to make database trigger simpler --- sql/mailleur.sql | 42 ++++++++++++++++++++---------------------- sql/preset.sql | 6 ------ 2 files changed, 20 insertions(+), 28 deletions(-) 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; -- 2.47.3