*DECK NVFTVAA USETEXT TEXTNVF USETEXT TXTANVF USETEXT TXSMNVF PROC NVFTVAA((PT)); # TITLE NVFTVAA - VALIDATE USER'S RIGHT TO ACCESS APPL # BEGIN # NVFTVAA # # ** NVFTVAA - VALIDATE USER'S RIGHT TO ACCESS APPLICATION. * * E. THAVIKULWAT 81/10/28 * C. BRION 83/05/10 * * THIS PROCEDURE'S MAIN FUNCTION IS TO DETERMINE IF APPLICATION * NAME IS VALID (EXIST IN *AST* TABLE), AND IF SO, IS USER VALIDATED * TO ACCESS THE APPLICATION. IT IS CALLED INTO EXECUTION BY THE * FOLLOWING PROCEDURES: * *NVFTETI* *NVFTVVD* * * PROC NVFTVAA((PT)) * * ENTRY: * PT = POINTER TO PTAC ENTRY * * EXIT: * APPROPRIATE MESSAGE ISSUED IF ANY ERRORS. OTHERWISE, PTAC ENTRY * UPDATED WITH THE APPLICATION NAME TO SWITCH TO. * * NOTES: * 1) USER VOLUNTEERED APPLICATION NAME OF "HELLO", "LOGIN", "BYE", * OR "LOGOUT" OVERRIDES ANY MANDATORY/IMPLIED MANDATORY/PRIMARY * APPLICATION NAME. * 2) IF THE MANDATORY/PRIMARY APPLICATION NAME FROM THE *LCF* IS * USED AND IF THE NAME IS ONE OF THE RESERVED APPLICATION NAME * OF "HELLO", "LOGIN", "BYE", OR "LOGOUT", THEN THE NAME WILL * NOT BE IN THE *AST* TABLE AND WILL RESULT IN ILLEGAL * APPLICATION. * * METHOD: * IF USER VOLUNTEERED APPLICATION NAME EXIST, CALL PROCEDURE * *NVFTCRN* TO DETERMINE IF IT IS ONE OF THE RESERVED APPLICATION * NAME OF "HELLO", "LOGIN", "BYE", OR "LOGOUT". IF IT IS, JUST * EXIT AS *NVFTCRN* WOULD HAVE TAKEN APPROPRIATE ACTION DEPENDING * ON THE RESERVED NAME. IF IT IS NOT, CALL INTERNAL PROCEDURE * *DAPNAME* TO DETERMINE THE SWITCH APPLICATION NAME. SEARCH * *AST* TABLE FOR A MATCH ON THE APPLICATION NAME. IF MATCH AND * THE ACCESS WORD BIT POSITION OF THE USER'S ACCESS WORD IS SET, * THEN USER IS VALIDATED TO ACCESS THE REQUESTED APPLICATION. * OTHERWISE, USER IS NOT VALIDATED TO ACCESS THE REQUESTED * APPLICATION. # # **** PROC NVFTVAA - XREF LIST. # XREF BEGIN PROC NVFTCRN; # CHECK FOR RESERVED APPLICATION NAME # PROC NVFTILP; # ISSUE LOGIN PROMPT # PROC NVFTPSV; # PROCESS SUCCESSFUL VALIDATION # PROC NVFTPUV; # PROCESS UNSUCCESSFUL VALIDATION # PROC NVFUMQE; # TRANSFER TEXT TO QUEUE # PROC NVFTRLC; # REFUSE LOANED CONNECTION # END $BEGIN XREF BEGIN PROC MESSAGE; # ISSUE DAYFILE MESSAGE # END $END # **** # *CALL TMSGNVF ITEM ADDR I; # ADDRESSING INFORMATION FOR ABH # ITEM BPOS I; # BIT POSITION (SYMPL NOTATION) # ITEM ERRFLAG B; # ERROR INDICATOR FLAG # ITEM I I; # LOOP VARIABLE # ITEM MATCH B; # EXIT LOOP VARIABLE # ITEM NENTRY I; # NUMBER OF ENTRIES IN TABLE # ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC # ITEM RNAME I; # RESERVED NAME INDICATOR # ITEM SMOUT B; # SM TYPE OUT FOR NVFTRLC # CONTROL EJECT; # * IF USER VOLUNTEERED APPLICATION NAME AND NAME IS NOT INVALID, * CALL *NVFTCRN* TO DETERMINE IF NAME IS ONE OF THE RESERVED * APPLICATION NAME. # IF (PTA$VAF[PT]) AND (NOT PTA$INVAF[PT]) THEN # VOLUNTEERED AND VALID # BEGIN NVFTCRN(PT,RNAME); IF (RNAME NQ NORESNAM$) THEN BEGIN IF RNAME EQ LOGIN$ THEN BEGIN # * RESERVED APPLICATION NAME OF "HELLO" OR "LOGIN". * IF NOT LOAN REQUEST TYPE, ISSUE PROMPT. # IF PTA$LRC[PT] LS RCRC"LSA" THEN BEGIN NVFTILP(PT); END IF PTA$LRC[PT] GQ RCRC"LSA" THEN BEGIN # * RESERVED APPLICATION NAME AND LOAN REQUEST CONNECTION. * NOT ALLOWED, RETURN CONNECTION TO PRIMARY. # IF PTA$LRC[PT] EQ RCRC"LSA" THEN SMOUT = TRUE; ELSE SMOUT = FALSE; PTA$LRC[PT] = RCRC"SNA"; NVFTRLC(PT,SMOUT,PTA$LRC[PT]); END END # * IF ANY RESERVED NAME WAS FOUND, JUST RETURN. IF THE RESERVED * NAME WAS "BYE" OR "LOGOUT", NVF WILL HAVE ALREADY TERMINATED * THE CONNECTION. # RETURN; END END # * CALL INTERNAL PROCEDURE *DAPNAME* TO DETERMINE SWITCH APPLICATION * NAME. # DAPNAME; # * *DAPNAME* WILL RETURN AN ERROR IF BOTH MANDATORY AND IMPLIED * MANDATORY APPLICATION NAME IS SPECIFIED AND THE NAMES ARE NOT * THE SAME. # IF (NOT ERRFLAG) AND (NOT PTA$INVAF[PT]) THEN # NO ERROR # BEGIN # * SEARCH *AST* TABLE FOR THE REQUESTED APPLICATION NAME. IF * MATCH AND USER HAS PERMISSION TO ACCESS APPLICATION, THEN CALL * *NVFTPSV* TO CONTINUE PROCESSING. OTHERWISE, CALL *NVFTPUV* TO * ISSUE APPROPRIATE ERROR MESSAGE. # ERRFLAG = TRUE; MATCH = FALSE; NENTRY = ASTLNGTH / ASTSIZ$; FOR I = 0 STEP 1 WHILE (NOT MATCH AND I LS NENTRY) DO BEGIN IF (AST$ANAM[I] EQ PTA$SWTAPP[PT]) THEN # FOUND REQUESTED APPLICATION # BEGIN IF AST$AWBP[I] NQ NSAWBP$ THEN BEGIN # APPLICATION NOT "NS" # BPOS = 59 - AST$AWBP[I]; # BIT POSITION (SYMPL NOTATION) # IF (BPTA$AAVW[PT] EQ 1) THEN # USER VALIDATED TO ACCESS APPL # BEGIN ERRFLAG = FALSE; # INDICATE APPLICATION FOUND # END END MATCH = TRUE; # EXIT LOOP # END END END IF NOT MATCH AND (PTA$LRC[PT] EQ RCRC"LSA") THEN # SECONDARY APPLICATION DOES NOT EXIT # BEGIN SMOUT = TRUE; PTA$LRC[PT] = RCRC"SAI"; NVFTRLC (PT,SMOUT,PTA$LRC[PT]); # SEND CR/RCN/A WITH RC=23B # RETURN; END IF (PTA$INVAF[PT]) OR (ERRFLAG) THEN # INVALID APPL OR USER OF APPL # BEGIN NVFTPUV(PT); # UNSUCCESSFUL APPL VALIDATION # END ELSE # VALID APPL AND USER # BEGIN PTA$PROMPT[PT] = AWTAPP$; NVFTPSV(PT); # SUCCESSFUL APPL VALIDATION # END RETURN; CONTROL EJECT; PROC DAPNAME; # TITLE DAPNAME - DETERMINE SWITCH APPLICATION NAME # BEGIN # DAPNAME # # ** DAPNAME - DETERMINE SWITCH APPLICATION NAME. * * E. THAVIKULWAT 81/10/28 * * THIS PROCEDURE IS INTERNAL TO PROCEDURE *NVFTVAA* AND IS CALLED * ONLY BY *NVFTVAA*. IT'S MAIN FUNCTION IS TO DETERMINE THE * APPROPRIATE APPLICATION TO SWITCH THE USER TO. * * PROC DAPNAME * * ENTRY: * PT = POINTER TO PTAC ENTRY. * * EXIT: * SWITCH APPLICATION NAME ENTERED IN PTAC ENTRY. * * NOTES: * FOR AUTOLOGIN DATA, THE FOLLOWING ORDER OF PRECEDENCE IS USED * TO DETERMINE SWITCH APPLICATION NAME: * 1) MANDATORY OR IMPLIED MANDATORY APPLICATION NAME, * WHICHEVER IS SPECIFIED. * 2) PRIMARY APPLICATION NAME IF PRIMARY INDICATED AND USER * VOLUNTEERED VALUE IS "NULL" OR BLANK. * 3) USER VOLUNTEERED APPLICATION NAME IS USED OTHERWISE. * * IF MANDATORY AND IMPLIED MANDATORY APPLICATION NAME ARE BOTH * SPECIFIED, THE NAMES MUST BE THE SAME. OTHERWISE, AN ERROR IS * ISSUED AND THE CONNECTION TERMINATED. * * METHOD: * IF MANDATORY OR IMPLIED MANDATORY APPLICATION NAME SPECIFIED * AND USER STILL VOLUNTEERED AN APPLICATION NAME (CAN ONLY BE * VIA ABBREVIATED FORMAT), CLEAR APPLICATION INVALID FLAG FIELD * IN PTAC ENTRY AS THE VOLUNTEERED NAME WILL NOT BE USED AND * ISSUE MESSAGE THAT VOLUNTEERED NAME IS IGNORED. SET SWITCH * APPLICATION NAME TO MANDATORY OR IMPLIED MANDATORY, WHICHEVER * ONE IS SPECIFIED. IF DEFAULT (ACTUALLY PRIMARY BUT IS CHANGED * TO DEFAULT BY *NVFTILP* SO THAT SUBSEQUENT LOGIN WILL SOLICIT * APPLICATION PROMPT) SPECIFIED INSTEAD AND VOLUNTEERED * APPLICATION NAME IS "NULL" OR BLANK, SET SWITCH APPLICATION NAME * TO THE DEFAULT(PRIMARY) VALUE. OTHERWISE, SET SWITCH APPLICATION * NAME TO THE USER VOLUNTEERED APPLICATION NAME. # ERRFLAG = FALSE; IF (PTA$APPIND[PT] EQ MNDATRY$) OR (PTA$VDSF[PT]) THEN # MANDATORY AND/OR IMPLIED MANDATORY # BEGIN PTA$SWTAPP[PT] = PTA$ALIAPP[PT]; # PRESET TO MANDATORY # IF (PTA$VAF[PT]) THEN # HAVE USER VOLUNTEERED APPL # BEGIN # SEND APPLICATION IGNORED MSG # PTA$INVAF[PT] = FALSE; # CLEAR INVALID APPL FLAG # UPA$TYPE[0] = "APPLICATION"; ADDR = PTA$ACN[PT]; NVFUMQE(P,UPABUF[0],APPTTX$,ADDR,LMSG40$); END # * IF MANDATORY AND IMPLIED MANDATORY ARE BOTH SPECIFIED, THE * NAMES MUST BE THE SAME. # IF (PTA$APPIND[PT] EQ MNDATRY$) AND (PTA$VDSF[PT]) THEN # MANDATRY AND IMPLIED MANDATRY # BEGIN IF (PTA$ALIAPP[PT] NQ PTA$VDSAPP[PT]) THEN # NAMES NOT THE SAME # BEGIN ERRFLAG = TRUE; END END ELSE # MANDATORY OR IMPLIED MANDATRY # BEGIN IF (PTA$VDSF[PT]) THEN # IMPLIED MANDATORY # BEGIN PTA$SWTAPP[PT] = PTA$VDSAPP[PT]; # SET TO IMPLIED MNDATRY # END END END ELSE # NON-MANDATORY # BEGIN PTA$SWTAPP[PT] = PTA$VLTAPP[PT]; # PRESET TO VOLUNTEERED APPL # # * IF VOLUNTEERED APPLICATION NAME IS "NULL" OR BLANK, AND DEFAULT * (ACTUALLY PRIMARY) SPECIFIED, USE THE DEFAULT NAME. OTHERWISE, * USE THE VOLUNTEERED NAME. # IF (PTA$APPIND[PT] EQ DEFAULT$) AND ((PTA$VLTAPP[PT] EQ NULL$) OR (PTA$VLTAPP[PT] EQ " ")) THEN # DEFAULT AND NULL (OR BLANK) # BEGIN PTA$SWTAPP[PT] = PTA$ALIAPP[PT]; # USE DEFAULT NAME # END END END # END DAPNAME # END # END NVFTVAA # TERM