[613] | 1 | XUSKAAJ ;; kec/oak - KAAJEE Utilities ;08/24/2006
|
---|
| 2 | ;;8.0;KERNEL;**329,430**;Jul 10, 1995;Build 1
|
---|
| 3 | ;;
|
---|
| 4 | QUIT
|
---|
| 5 | ;
|
---|
| 6 | ; ------------------------------------------------------------------------
|
---|
| 7 | ; SSO/UC KAAJEE RPCs
|
---|
| 8 | ; ------------------------------------------------------------------------
|
---|
| 9 | ;
|
---|
| 10 | USERINFO(RET,CLIENTIP,SERVERNM) ; called by XUS KAAJEE GET USER INFO rpc
|
---|
| 11 | ;
|
---|
| 12 | ; INPUT:
|
---|
| 13 | ; CLIENTIP is IP address of the client workstation, used for logging (signon log) and IP blocking (failed access attempts).
|
---|
| 14 | ; SERVERNM is Identifying name for the calling application or server, used for logging (signon log).
|
---|
| 15 | ; OUTPUT:
|
---|
| 16 | ; Result(0) is the users DUZ.
|
---|
| 17 | ; Result(1) is the user name from the .01 field.
|
---|
| 18 | ; Result(2) is the users full name from the name standard file.
|
---|
| 19 | ; Result(3) is the FAMILY (LAST) NAME
|
---|
| 20 | ; Result(4) is the GIVEN (FIRST) NAME
|
---|
| 21 | ; Result(5) is the MIDDLE NAME
|
---|
| 22 | ; Result(6) is the PREFIX
|
---|
| 23 | ; Result(7) is the SUFFIX
|
---|
| 24 | ; Result(8) is the DEGREE
|
---|
| 25 | ; Result(9) is station # of the division that the user is working in.
|
---|
| 26 | ; Result(10) is the station # of the parent facility for the login division
|
---|
| 27 | ; Result(11) is the station # from the KSP site parameters, the parent "computer system"
|
---|
| 28 | ; Result(12) is the signon log entry IEN
|
---|
| 29 | ; Result(13) = # of permissible divisions
|
---|
| 30 | ; Result(14-n) are the permissible divisions for user login, in the format:
|
---|
| 31 | ; IEN of file 4^Station Name^Station Number^default? (1 or 0)
|
---|
| 32 | ;
|
---|
| 33 | N XUNC,XUNC1,XUKERR,XUKRET,XUDIVS,XUKI,XULINE,XUPARENT,XUDIVLIN,XUKDEF
|
---|
| 34 | ;
|
---|
| 35 | ; initialize return array
|
---|
| 36 | S RET(0)=DUZ
|
---|
| 37 | F I=1:1:13 S RET(I)=""
|
---|
| 38 | ;
|
---|
| 39 | ; get ptr to Name Components file
|
---|
| 40 | D GETS^DIQ(200,DUZ_",","10.1","I","XUNC","XUKERR")
|
---|
| 41 | I '$D(XUKERR) D
|
---|
| 42 | .S XUNC=XUNC(200,DUZ_",",10.1,"I")
|
---|
| 43 | .; get name components
|
---|
| 44 | .D GETS^DIQ(20,XUNC_",","1:6","","XUNC1","XUKERR")
|
---|
| 45 | .I '$D(XUKERR) D
|
---|
| 46 | ..S RET(3)=XUNC1(20,XUNC_",",1) S:'$L(RET(3)) RET(3)="^"
|
---|
| 47 | ..S RET(4)=XUNC1(20,XUNC_",",2) S:'$L(RET(4)) RET(4)="^"
|
---|
| 48 | ..S RET(5)=XUNC1(20,XUNC_",",3) S:'$L(RET(5)) RET(5)="^"
|
---|
| 49 | ..S RET(6)=XUNC1(20,XUNC_",",4) S:'$L(RET(6)) RET(6)="^"
|
---|
| 50 | ..S RET(7)=XUNC1(20,XUNC_",",5) S:'$L(RET(7)) RET(7)="^"
|
---|
| 51 | ..S RET(8)=XUNC1(20,XUNC_",",6) S:'$L(RET(8)) RET(8)="^"
|
---|
| 52 | ;
|
---|
| 53 | ; get .01 New Person name, Name components name, and login division info
|
---|
| 54 | D USERINFO^XUSRB2(.XUKRET)
|
---|
| 55 | S RET(1)=XUKRET(1) S:'$L(RET(1)) RET(1)="^"
|
---|
| 56 | S RET(2)=XUKRET(2) S:'$L(RET(2)) RET(2)="^"
|
---|
| 57 | S RET(9)=$P(XUKRET(3),U,3) S:'$L(RET(9)) RET(9)="0"
|
---|
| 58 | ;
|
---|
| 59 | ; get parent facility station#
|
---|
| 60 | S XUPARENT=$$PRNT^XUAF4(RET(9))
|
---|
| 61 | S RET(10)=$S(($P(XUPARENT,U)<1):XUPARENT,1:$$STA^XUAF4($P(XUPARENT,U)))
|
---|
| 62 | S:'$L(RET(10)) RET(10)="^"
|
---|
| 63 | ;
|
---|
| 64 | ; get the computer system station#
|
---|
| 65 | S RET(11)=$$STA^XUAF4($$KSP^XUPARAM("INST"))
|
---|
| 66 | S:'$L(RET(11)) RET(11)="0"
|
---|
| 67 | ;
|
---|
| 68 | ; make signon log entry, get IEN
|
---|
| 69 | S RET(12)=$$SIGNLOG^XUSKAAJ(CLIENTIP,SERVERNM)
|
---|
| 70 | ;
|
---|
| 71 | ; get permitted divisions
|
---|
| 72 | S XUDIVLIN=13 ; return array subscript counter for division start point
|
---|
| 73 | D DIVGET^XUSRB2(.XUDIVS,DUZ)
|
---|
| 74 | I '+XUDIVS(0) S RET(XUDIVLIN)=1,RET(XUDIVLIN+1)=XUKRET(3)_"^1" ; only 1 division, so use login division.
|
---|
| 75 | I +XUDIVS(0) S RET(XUDIVLIN)=+XUDIVS(0) D
|
---|
| 76 | .S XUKDEF=$O(^VA(200,DUZ,2,"AX1",1,"")) ; default division if any. Should only be 1.
|
---|
| 77 | .S XUKI=0,XULINE=XUDIVLIN F S XUKI=$O(XUDIVS(XUKI)) Q:XUKI']"" D
|
---|
| 78 | ..S XULINE=XULINE+1,RET(XULINE)=XUDIVS(XUKI)
|
---|
| 79 | ..S $P(RET(XULINE),U,4)=$S($P(XUDIVS(XUKI),U)=XUKDEF:1,1:0)
|
---|
| 80 | ;
|
---|
| 81 | Q
|
---|
| 82 | ;
|
---|
| 83 | SIGNOFF(RET,DA) ; kill entry in sign-on log. Called by XUS KAAJEE LOGOUT rpc.
|
---|
| 84 | D LOUT^XUSCLEAN(DA)
|
---|
| 85 | S RET=1 Q
|
---|
| 86 | ;
|
---|
| 87 | SIGNLOG(CLIENTIP,SERVERNM) ; make a signon log entry for KAAJEE user
|
---|
| 88 | ; todo: expand size of server name field?
|
---|
| 89 | N XP1,XPIP,XPCLNM,Y
|
---|
| 90 | S:$D(IO("IP")) XPIP=IO("IP") S IO("IP")=CLIENTIP
|
---|
| 91 | S:$D(IO("CLNM")) XPCLNM=IO("CLNM") S IO("CLNM")=$E(SERVERNM,1,20)
|
---|
| 92 | ;
|
---|
| 93 | D GETENV^%ZOSV
|
---|
| 94 | S XP1=$$SLOG^XUS1($P(Y,U,2),,,$P(Y,U),$P(Y,U,3),"KAAJEE","")
|
---|
| 95 | ;
|
---|
| 96 | S:$D(XPIP) IO("IP")=XPIP
|
---|
| 97 | S:$D(XPCLNM) IO("CLNM")=XPCLNM
|
---|
| 98 | Q XP1
|
---|
| 99 | ;
|
---|