X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=database%2Ffunctions%2Fuser_password.sql;h=0e86be8d03bcd988d4b2d12836c1768be782a48d;hb=c843aa6e80c735c9fde563ecfae5e5233caa72b8;hp=889e49ebb233790592400e7978bd7ef92bda6e01;hpb=ab1ec1721c11a109546e162f87488db7dcfb9108;p=ndwebbie.git diff --git a/database/functions/user_password.sql b/database/functions/user_password.sql index 889e49e..0e86be8 100644 --- a/database/functions/user_password.sql +++ b/database/functions/user_password.sql @@ -1,8 +1,13 @@ CREATE OR REPLACE FUNCTION user_password() RETURNS trigger AS $_X$ DECLARE + old_password TEXT; BEGIN - IF COALESCE(NEW.password <> OLD.password,TRUE) AND + IF TG_OP = 'UPDATE' + THEN + old_password := OLD.password; + END IF; + IF COALESCE(NEW.password <> old_password,TRUE) AND NOT NEW.password SIMILAR TO '$2a$\d+$[a-zA-Z0-9./]+' THEN NEW.password := crypt(NEW.password,gen_salt('bf',10)); @@ -13,5 +18,6 @@ $_X$ LANGUAGE plpgsql; /* alter table users alter COLUMN password drop not null ; -CREATE TRIGGER user_password BEFORE UPDATE OR INSERT ON users FOR EACH ROW EXECUTE PROCEDURE user_password() +DROP TRIGGER user_password ON users; +CREATE TRIGGER user_password BEFORE INSERT OR UPDATE OF password ON users FOR EACH ROW EXECUTE PROCEDURE user_password(); */