]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Starting to implement trigger form postgres SQL
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 7 Jul 2025 16:39:27 +0000 (12:39 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Mon, 7 Jul 2025 16:39:27 +0000 (12:39 -0400)
sql/Makefile
sql/mailleur.sql
sql/trigger [new file with mode: 0644]
support/crdb.sh

index 06e75085099cb7d0938e43d06d99ba9dd5f278d7..3095b4f8af574e3a95521427cc527a27d6858189 100644 (file)
@@ -49,15 +49,13 @@ ndbmysql:
             ) | sudo mariadb 
 
 dbpostg        :  mailleur.postg
-          @-(                                          \
+          @ -(                                         \
             echo "CREATE ROLE apache WITH LOGIN;";     \
-            echo "CREATE ROLE dovecot WITH LOGIN;";    \
-            echo "CREATE DATABASE mailleur             \
-                       ENCODING='UTF8';"               \
+            echo "CREATE ROLE dovecot WITH LOGIN;";    \
+            echo "CREATE EXTENSION pgcrypto;";         \
+            echo "CREATE DATABASE mailleur ";          \
+            echo "              ENCODING='UTF8';";     \
             ) | psql -q -U postgres template1
-          @ (                                          \
-            echo "CREATE EXTENSION pgcrypto;"          \
-            ) | psql -q mailleur;
           @ cat mailleur.postg | psql -q mailleur;
           @ cpp -P -DPOSTGRESQL datatest.sql | psql -q mailleur;
           @ echo "POSGRESQL database ready"
@@ -65,9 +63,9 @@ dbpostg       :  mailleur.postg
 ndbpostg:
           @-(                                          \
             echo "drop database mailleur;";            \
-            echo "DROP EXTENSION pgcrypto;";           \
             echo "DROP ROLE apache;";                  \
             echo "DROP ROLE dovecot;";                 \
+            echo "DROP EXTENSION pgcrypto;";           \
             ) | psql -q -U postgres template1
 
 #--------------------------------------------------------------------
index 8af9b8a275d4fda5ab7c580fc398881066897708..927868dd9718bc9f0a7ec5690a586afbccb3302b 100644 (file)
@@ -69,6 +69,21 @@ CREATE TABLE emails  (
 GRANT SELECT,INSERT,UPDATE,DELETE      ON emails TO mailapache;
 GRANT SELECT                           ON emails TO maildove;
 
+//defining the password trigger according database type
+#ifdef POSTGRESQL
+CREATE FUNCTION updpass()
+  RETURNS trigger AS $$
+       BEGIN
+       NEW.hash = md5(concat (NEW.email,':',NEW.realm,':',new.password));
+       NEW.password = crypt(new.password, gen_salt('md5'));
+       RETURN NEW;
+       END
+  $$ LANGUAGE 'plpgsql';
+
+CREATE TRIGGER keephash
+       BEFORE INSERT OR UPDATE on emails
+       FOR EACH ROW EXECUTE PROCEDURE updpass();
+#endif
 
 //table about session
 CREATE TABLE sessions  (
diff --git a/sql/trigger b/sql/trigger
new file mode 100644 (file)
index 0000000..510872d
--- /dev/null
@@ -0,0 +1,25 @@
+
+#To encrypt a field with md5 keys
+select crypt( 'data', gen_salt('md5'));
+
+
+DROP TRIGGER IF EXISTS cool 
+ ON emails  CASCADE;
+
+CREATE OR REPLACE FUNCTION updpass()
+  RETURNS trigger AS
+$$
+BEGIN
+NEW.hash = md5(concat (NEW.email,':',NEW.realm,':',new.password));
+NEW.password = crypt(new.password, gen_salt('md5'));
+RETURN NEW;
+END;
+
+$$
+LANGUAGE 'plpgsql';
+
+CREATE TRIGGER cool
+  BEFORE INSERT OR UPDATE
+  ON emails
+  FOR EACH ROW
+  EXECUTE PROCEDURE updpass();
index b86e9166facf1cf00b26c5edd53633b415269222..44f447ea22d7413cd11c10a28d157dea73e9a7f1 100755 (executable)
@@ -85,7 +85,8 @@ case "$DB_TYPE" in
       echo "CREATE ROLE $APPNAME WITH LOGIN CREATEDB SUPERUSER;"
       echo "CREATE ROLE apache WITH LOGIN;"
       echo "CREATE ROLE dovecot WITH LOGIN;"
-      echo "CREATE EXTENSION pgcrypto;"
+      echo "DROP EXTENSION IF EXISTS pgcrypto;"
+      echo "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
       echo "CREATE DATABASE $APPNAME ENCODING='UTF8';"
       ) | /usr/bin/su - -m postgres -c "$SQL $SQLHOST $SQLPORT template1" >> $LOG
       echo "data-base is now created" >> $LOG