Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE REJESTRACJA( USERNAME VARCHAR2 DEFAULT NULL,
- PASSWORD VARCHAR2 DEFAULT NULL,
- PASSWORD2 VARCHAR2 DEFAULT NULL,
- VIMIE VARCHAR2 DEFAULT NULL,
- VNAZWISKO VARCHAR2 DEFAULT NULL,
- VMAIL VARCHAR2 DEFAULT NULL,
- VWOJ VARCHAR2 DEFAULT NULL,
- VMIEJSC VARCHAR2 DEFAULT NULL,
- VPOCZT VARCHAR2 DEFAULT NULL,
- VULICA VARCHAR2 DEFAULT NULL,
- VNR_DOMU INT DEFAULT NULL,
- VNR_TEL VARCHAR2 DEFAULT NULL
- )
- IS
- n BOOLEAN;
- m INTEGER;
- DIFFER INTEGER;
- ISDIGIT BOOLEAN;
- ISCHAR BOOLEAN;
- ISPUNCT BOOLEAN;
- DIGITARRAY VARCHAR2(20);
- PUNCTARRAY VARCHAR2(25);
- CHARARRAY VARCHAR2(52);
- num_rows NUMBER:=0;
- BEGIN
- DIGITARRAY:= '0123456789';
- CHARARRAY:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- PUNCTARRAY:='!"#$%&()``*+,-/:;<=>?_.';
- -- Sprawdz czy nazwa uzytkownika jest w systemie
- SELECT COUNT(*) INTO num_rows
- FROM KONTO
- WHERE LOGIN = USERNAME;
- IF num_rows > 0 THEN
- raise_application_error(-20006, 'Nazwa uzytkownika jest juz w systemie');
- END IF;
- -- jezeli pole jest puste
- IF USERNAME IS NULL OR PASSWORD IS NULL OR PASSWORD2 IS NULL OR VIMIE IS NULL OR VNAZWISKO IS NULL OR VMAIL IS NULL
- OR VWOJ IS NULL OR VMIEJSC IS NULL OR VPOCZT IS NULL OR VULICA IS NULL OR VNR_DOMU IS NULL OR VNR_TEL IS NULL THEN
- raise_application_error(-20001, 'Wypelnij wszystkie pola');
- END IF;
- -- Hasla sie roznia
- IF PASSWORD != PASSWORD2 THEN
- raise_application_error(-20002, 'hasla sie od siebie roznia');
- END IF;
- -- Sprawdz dlugosc hasla
- IF LENGTH(PASSWORD) < 7 THEN
- raise_application_error(-20003, 'Haslo zbyt krotkie (mniej niz 7 znakow)');
- END IF;
- -- Sprawdz czy hasla nie ma na blackliscie
- IF NLS_LOWER(PASSWORD) IN ('welcome', 'database', 'account', 'user', 'password',
- 'oracle', 'gofishingshop', 'admin', 'login') THEN
- raise_application_error(-20004, 'haslo zbyt latwe');
- END IF;
- -- Sprawdz czy haslo ma przynajmniej jedna litere, jedna cyfre i znak przestankowy
- -- 1. Szukaj cyfry
- 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(-20005, 'haslo powinno miec przynajmniej jedna litere, jedna cyfre i znak przestankowy');
- END IF;
- <<findchar>>
- -- 2. Szukaj litery
- ISCHAR:=FALSE;
- FOR i IN 1..LENGTH(CHARARRAY) LOOP
- FOR j IN 1..m LOOP
- IF SUBSTR(PASSWORD,j,1) = SUBSTR(CHARARRAY,i,1) THEN
- ISCHAR:=TRUE;
- GOTO findpunct;
- END IF;
- END LOOP;
- END LOOP;
- IF ISCHAR = FALSE THEN
- raise_application_error(-20005, 'haslo powinno miec przynajmniej jedna litere, jedna cyfre i znak przestankowy');
- END IF;
- <<findpunct>>
- -- 3. Szukaj znaku przestankowego
- ISPUNCT:=FALSE;
- FOR i IN 1..LENGTH(PUNCTARRAY) LOOP
- FOR j IN 1..m LOOP
- IF SUBSTR(PASSWORD,j,1) = SUBSTR(PUNCTARRAY,i,1) THEN
- ISPUNCT:=TRUE;
- GOTO endsearch;
- END IF;
- END LOOP;
- END LOOP;
- IF ISPUNCT = FALSE THEN
- raise_application_error(-20005, 'haslo powinno miec przynajmniej jedna litere, jedna cyfre i znak przestankowy');
- END IF;
- <<endsearch>>
- INSERT INTO ADRES(MIEJSCOWOSC, WOJEWODZTWO, KOD_POCZTOWY, ULICA, NR_DOMU)
- VALUES(VMIEJSC, VWOJ, VPOCZT, VULICA, VNR_DOMU);
- INSERT INTO KONTAKT(NR_TEL, EMAIL)
- VALUES(VNR_TEL, VMAIL);
- INSERT INTO KONTO(ADRES_ID, KONTAKT_ID, LOGIN, HASLO, IMIE, NAZWISKO)
- VALUES(ADRES_SEQ.CURRVAL, KONTAKT_SEQ.CURRVAL, USERNAME, PASSWORD, VIMIE, VNAZWISKO);
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement