Advertisement
Guest User

Untitled

a guest
Jun 15th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 4.15 KB | None | 0 0
  1. CREATE OR  REPLACE PROCEDURE REJESTRACJA( USERNAME VARCHAR2 DEFAULT NULL,
  2.       PASSWORD VARCHAR2 DEFAULT NULL,
  3.       PASSWORD2 VARCHAR2 DEFAULT NULL,
  4.       VIMIE VARCHAR2 DEFAULT NULL,
  5.       VNAZWISKO VARCHAR2 DEFAULT NULL,
  6.       VMAIL VARCHAR2 DEFAULT NULL,
  7.       VWOJ VARCHAR2 DEFAULT NULL,
  8.       VMIEJSC VARCHAR2 DEFAULT NULL,
  9.       VPOCZT VARCHAR2 DEFAULT NULL,
  10.       VULICA VARCHAR2 DEFAULT NULL,
  11.       VNR_DOMU INT DEFAULT NULL,
  12.       VNR_TEL VARCHAR2 DEFAULT NULL
  13.       )
  14.      IS
  15.        n BOOLEAN;
  16.        m INTEGER;
  17.        DIFFER INTEGER;
  18.        ISDIGIT BOOLEAN;
  19.        ISCHAR  BOOLEAN;
  20.        ISPUNCT BOOLEAN;
  21.        DIGITARRAY VARCHAR2(20);
  22.        PUNCTARRAY VARCHAR2(25);
  23.        CHARARRAY VARCHAR2(52);
  24.        num_rows NUMBER:=0;
  25.  
  26.     BEGIN
  27.        DIGITARRAY:= '0123456789';
  28.        CHARARRAY:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  29.        PUNCTARRAY:='!"#$%&()``*+,-/:;<=>?_.';      
  30.        
  31.        -- Sprawdz czy nazwa uzytkownika jest w systemie
  32.        SELECT COUNT(*) INTO num_rows
  33.             FROM KONTO
  34.             WHERE LOGIN = USERNAME;
  35.  
  36.         IF num_rows > 0 THEN
  37.             raise_application_error(-20006, 'Nazwa uzytkownika jest juz w systemie');
  38.         END IF;
  39.        
  40.        -- jezeli pole jest puste
  41.        IF USERNAME IS NULL OR PASSWORD IS NULL OR PASSWORD2 IS NULL OR VIMIE IS NULL OR VNAZWISKO IS NULL OR VMAIL IS NULL
  42.        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
  43.          raise_application_error(-20001, 'Wypelnij wszystkie pola');
  44.        END IF;
  45.  
  46.        -- Hasla sie roznia
  47.        IF PASSWORD != PASSWORD2 THEN
  48.          raise_application_error(-20002, 'hasla sie od siebie roznia');
  49.        END IF;
  50.        
  51.        -- Sprawdz dlugosc hasla
  52.        IF LENGTH(PASSWORD) < 7 THEN
  53.           raise_application_error(-20003, 'Haslo zbyt krotkie (mniej niz 7 znakow)');
  54.        END IF;
  55.  
  56.        -- Sprawdz czy hasla nie ma na blackliscie
  57.        IF NLS_LOWER(PASSWORD) IN ('welcome', 'database', 'account', 'user', 'password',
  58.     'oracle', 'gofishingshop', 'admin', 'login') THEN
  59.           raise_application_error(-20004, 'haslo zbyt latwe');
  60.        END IF;
  61.  
  62.        -- Sprawdz czy haslo ma przynajmniej jedna litere, jedna cyfre i znak przestankowy
  63.        -- 1. Szukaj cyfry
  64.        ISDIGIT:=FALSE;
  65.        m := LENGTH(PASSWORD);
  66.        FOR i IN 1..10 LOOP
  67.           FOR j IN 1..m LOOP
  68.              IF SUBSTR(PASSWORD,j,1) = SUBSTR(DIGITARRAY,i,1) THEN
  69.                 ISDIGIT:=TRUE;
  70.                  GOTO findchar;
  71.              END IF;
  72.           END LOOP;
  73.        END LOOP;
  74.      IF ISDIGIT = FALSE THEN
  75.           raise_application_error(-20005, 'haslo powinno miec przynajmniej jedna litere, jedna cyfre i znak przestankowy');
  76.        END IF;
  77. <<findchar>>
  78.        -- 2. Szukaj litery
  79.        ISCHAR:=FALSE;
  80.        FOR i IN 1..LENGTH(CHARARRAY) LOOP
  81.           FOR j IN 1..m LOOP
  82.              IF SUBSTR(PASSWORD,j,1) = SUBSTR(CHARARRAY,i,1) THEN
  83.                 ISCHAR:=TRUE;
  84.                  GOTO findpunct;
  85.              END IF;
  86.           END LOOP;
  87.        END LOOP;
  88.        IF ISCHAR = FALSE THEN
  89.           raise_application_error(-20005, 'haslo powinno miec przynajmniej jedna litere, jedna cyfre i znak przestankowy');
  90.        END IF;
  91. <<findpunct>>
  92.        -- 3. Szukaj znaku przestankowego
  93.        ISPUNCT:=FALSE;
  94.        FOR i IN 1..LENGTH(PUNCTARRAY) LOOP
  95.           FOR j IN 1..m LOOP
  96.              IF SUBSTR(PASSWORD,j,1) = SUBSTR(PUNCTARRAY,i,1) THEN
  97.                 ISPUNCT:=TRUE;
  98.                  GOTO endsearch;
  99.              END IF;
  100.           END LOOP;
  101.        END LOOP;
  102.        IF ISPUNCT = FALSE THEN
  103.           raise_application_error(-20005, 'haslo powinno miec przynajmniej jedna litere, jedna cyfre i znak przestankowy');
  104.        END IF;
  105. <<endsearch>>
  106.  
  107.  INSERT INTO ADRES(MIEJSCOWOSC, WOJEWODZTWO, KOD_POCZTOWY, ULICA, NR_DOMU)
  108.     VALUES(VMIEJSC, VWOJ, VPOCZT, VULICA, VNR_DOMU);
  109.  INSERT INTO KONTAKT(NR_TEL, EMAIL)
  110.     VALUES(VNR_TEL, VMAIL);
  111.  INSERT INTO KONTO(ADRES_ID, KONTAKT_ID, LOGIN, HASLO, IMIE, NAZWISKO)
  112.     VALUES(ADRES_SEQ.CURRVAL, KONTAKT_SEQ.CURRVAL, USERNAME, PASSWORD, VIMIE, VNAZWISKO);
  113.  END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement