1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
CREATE OR REPLACE FUNCTION Verif_Pass_User(username VARCHAR2, password VARCHAR2, old_password VARCHAR2)RETURN boolean IS
isin boolean;
isdigit boolean;
chararray varchar2(52);
digitarray varchar2(20);
TYPE Tab_VarChar2 IS TABLE OF varchar2(4);
tabpass Tab_varchar2;
i integer;
m integer;
BEGIN
m := length(password);
digitarray:= '0123456789';
IF password = username THEN
raise_application_error(-20001, 'Mot de passe identique au nom de connexion');
END IF;
IF length(password) < 4 THEN
raise_application_error(-20002, 'Mot de passe inférieur à 4 caractères');
END IF;
isdigit:=FALSE;
m := length(password);
FOR i IN 1..10 LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(digitarray,i,1) THEN
isdigit:=TRUE;
GOTO findchar;
END IF;
END LOOP;
END LOOP;
IF isdigit = FALSE THEN
raise_application_error(-20003, 'Votre mot de passe doit contenir au moins un chiffre');
END IF;
<<findchar>>
tabpass(1) := 'tam';
tabpass(2) := 'camp';
tabpass(3) := 'tent';
tabpass(4) := 'azer';
tabpass(5) := 'qsdf';
tabpass(6) := 'wxcv';
tabpass(7) := 'cara';
tabpass(8) := 'mobi';
i := 1;
isin:=FALSE;
WHILE (isin = false OR i<=8) LOOP
FOR j IN 1..m LOOP
IF substr(password,j) = substr(tabpass(i),1) THEN
FOR k IN 1..length(tabpass(i)) LOOP
IF substr(password, j+k) = substr(tabpass(i),k) THEN
isin := true;
ELSE
isin := false;
END IF;
END LOOP;
END IF;
END LOOP;
i := i + 1;
END LOOP;
IF isin = TRUE THEN
raise_application_error(-20004, 'Votre mot de passe est invalide, entrez-en un autre');
END IF;
END;
/ |
Partager