]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Improving database trigger
authorJean-Marc Pigeon <jmp@safe.c>
Fri, 14 Nov 2025 14:05:35 +0000 (09:05 -0500)
committerJean-Marc Pigeon <jmp@safe.c>
Fri, 14 Nov 2025 14:05:35 +0000 (09:05 -0500)
sql/mailleur.sql
sql/preset.sql

index 81cbecb88e5a054fe552c88aabbb13d51ce2c7b8..825717cdf9de793ee0db539aab4dc2a669ea49ba 100644 (file)
@@ -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
index 67601f397836c0139c81ae4218528a74fee1cd22..049e92108b6af6b1e24fa60971393e5c610ed5b5 100644 (file)
@@ -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;