|
Hi Scott, API's are wonderful, and probably faster than calling the following CL, but IMO the CL is a lot simpler. You could also have it simply return the group profile for a given user profile and let the RPG compare it. PGM (&userprf &groupprf &yesno) DCL &userprf *char 10 DCL &groupprf *char 10 DCL &grpprf *char 10 DCL &yesno *char 1 RTVUSRPRF USRPRF(&userprf) GRPPRF(&grpprf) IF (&groupprf *eq &grpprf) then(do) chgvar &yesno 'Y' ENDDO ELSE DO chgvar &yesno 'N' ENDDO RETURN Regards, Peter Dow Dow Software Services, Inc. 909 425-0194 voice 909 425-0196 fax ----- Original Message ----- From: "Scott Klement" <klemscot@klements.com> To: <RPG400-L@midrange.com> Sent: Friday, November 03, 2000 2:49 PM Subject: Re: Member of group security api > > On Fri, 3 Nov 2000 Gwecnal@aol.com wrote: > > > Is there an API for determining if a user profile is a member of a group? > > Something simple where I pass the user profile name, group profile name, and > > get a yes or no. > > TIA, Lance > > > > There isn't anything THIS simple, but you could certainly write a > service program, and IT could be this simple to use. :) > > In fact, here's one that I wrote, along with an example of using it: > > > > Example of calling GROUP service program: > > D/COPY QRPGLESRC,GROUP_H > D Msg S 50A > > c *entry plist > c parm UserID 10 > c parm Group 10 > > c if IsInGroup(UserID: Group) = 1 > c eval Msg = 'User is in that group!' > C else > c eval Msg = 'User is not in that group!' > c endif > > c dsply Msg > > c eval *inlr = *on > > > Start of header file for GROUP service program (GROUP_H): > > D IsInGroup PR 10I 0 > D UsrPrf 10A const > D GrpPrf 10A const > > > Start of source for GROUP service program: > > D/COPY QRPGLESRC,GROUP_H > > P*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > P* IsInGroup( UserProfile : GroupProfile) > P* Checks if a user is in a given group profile. > P* > P* Returns: -1 = Error, 0 = Not In Group, 1 = Is In Group > P*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > P IsInGroup B export > D IsInGroup PI 10I 0 > D UsrPrf 10A const > D GrpPrf 10A const > > D RtvUsrPrf PR ExtPgm('QSYRUSRI') > D RcvVar 32766A OPTIONS(*VARSIZE) > D RcvVarLen 10I 0 const > D Format 8A const > D UsrPrf 10A const > D Error 32766A OPTIONS(*VARSIZE) > > D dsEC DS > D* Bytes Provided (size of struct) > D dsECBytesP 1 4B 0 INZ(256) > D* Bytes Available (returned by API) > D dsECBytesA 5 8B 0 INZ(0) > D* Msg ID of Error Msg Returned > D dsECMsgID 9 15 > D* Reserved > D dsECReserv 16 16 > D* Msg Data of Error Msg Returned > D dsECMsgDta 17 256 > > D dsRU DS > D* Bytes Returned > D dsRUBytRtn 10I 0 > D* Bytes Available > D dsRUBytAvl 10I 0 > D* User Profile Name > D dsRUUsrPrf 10A > D* User Class > D dsRUClass 10A > D* Special Authorities > D dsRUSpcAut 15A > D* Group Profile Name > D dsRUGrpPrf 10A > D* Owner > D dsRUOwner 10A > D* Group Authority > D dsRUGrpAut 10A > D* Limit Capabilities > D dsRULmtCap 10A > D* Group Authority Type > D dsRUAutTyp 10A > D* (reserved) > D dsRUResrv1 3A > D* Offset to Supplemental Groups > D dsRUoffSG 10I 0 > D* Number of Supplemental Groups > D dsRUnumSG 10I 0 > D* Supplemental Groups > D dsRUSupGrp 10A DIM(15) > > D X S 5I 0 > > C* Get User Profile > c callp RtvUsrPrf( dsRU: %Size(dsRU): 'USRI0200': > c UsrPrf: dsEC) > > C* Check for errors > c if dsECBytesA > 0 > c return -1 > c endif > c if dsRUnumSG<0 or dsRUnumSG>15 > c return -1 > c endif > > C* In primary group? > c if dsRUGrpPrf = GrpPrf > c return 1 > c endif > > C* In supplemental group? > c do dsRUnumSG X > c if dsRUSupGrp(X) = GrpPrf > c return 1 > c endif > c enddo > > C* Not in group. > c return 0 > P E > > > +--- > | This is the RPG/400 Mailing List! > | To submit a new message, send your mail to RPG400-L@midrange.com. > | To subscribe to this list send email to RPG400-L-SUB@midrange.com. > | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: david@midrange.com > +--- +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.