mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 14:04:36 +00:00
98 lines
2.7 KiB
SAS
98 lines
2.7 KiB
SAS
/**
|
|
@file
|
|
@brief Fetches all groups or the groups for a particular member
|
|
@details When building applications that run on multiple flavours of SAS, it
|
|
is convenient to use a single macro (like this one) to fetch the groups
|
|
regardless of the flavour of SAS being used
|
|
|
|
The alternative would be to compile a generic macro in target-specific
|
|
folders (SASVIYA, SAS9 and SASJS). This avoids compiling unnecessary macros
|
|
at the expense of a more complex sasjsconfig.json setup.
|
|
|
|
|
|
@param [in] mdebug= (0) Set to 1 to enable DEBUG messages
|
|
@param [in] user= (0) Provide the username on which to filter
|
|
@param [in] uid= (0) Provide the userid on which to filter
|
|
@param [in] repo= (foundation) SAS9 only, choose the metadata repo to query
|
|
@param [in] access_token_var= (ACCESS_TOKEN) VIYA only.
|
|
The global macro variable to contain the access token
|
|
@param [in] grant_type= (sas_services) VIYA only.
|
|
Valid values are "password" or "authorization_code" (unquoted).
|
|
@param [out] outds= (work.mx_getgroups) This output dataset will contain the
|
|
list of groups. Format:
|
|
|GROUPNAME:$32.|GROUPDESC:$256.|GROUPURI:best.|
|
|
|---|---|---|
|
|
|`SomeGroup `|`A group `|`1`|
|
|
|`Another Group`|`this is a different group`|`2`|
|
|
|`admin`|`Administrators `|`3`|
|
|
|
|
<h4> SAS Macros </h4>
|
|
@li mf_getplatform.sas
|
|
@li mm_getgroups.sas
|
|
@li ms_getgroups.sas
|
|
@li mv_getgroups.sas
|
|
@li mv_getusergroups.sas
|
|
|
|
**/
|
|
|
|
%macro mx_getgroups(
|
|
mdebug=0,
|
|
user=0,
|
|
uid=0,
|
|
repo=foundation,
|
|
access_token_var=ACCESS_TOKEN,
|
|
grant_type=sas_services,
|
|
outds=work.mx_getgroups
|
|
)/*/STORE SOURCE*/;
|
|
%local platform name shortloc;
|
|
%let platform=%mf_getplatform();
|
|
|
|
%if &platform=SASJS %then %do;
|
|
%ms_getgroups(
|
|
user=&user,
|
|
uid=&uid,
|
|
outds=&outds,
|
|
mdebug=&mdebug
|
|
)
|
|
data &outds;
|
|
length groupuri groupname $32 groupdesc $128 ;
|
|
set &outds;
|
|
keep groupuri groupname groupdesc;
|
|
groupuri=cats(groupid);
|
|
groupname=name;
|
|
groupdesc=description;
|
|
run;
|
|
proc sort; by groupname; run;
|
|
%end;
|
|
%else %if &platform=SAS9 or &platform=SASMETA %then %do;
|
|
%if &user=0 %then %let user=;
|
|
%mm_getGroups(
|
|
user=&user
|
|
,outds=&outds
|
|
,repo=&repo
|
|
,mDebug=&mdebug
|
|
)
|
|
proc sort data=&outds; by groupname; run;
|
|
%end;
|
|
%else %if &platform=SASVIYA %then %do;
|
|
%if &user=0 %then %do;
|
|
%mv_getgroups(access_token_var=&access_token_var
|
|
,grant_type=&grant_type
|
|
,outds=&outds
|
|
)
|
|
%end;
|
|
%else %do;
|
|
%mv_getusergroups(&user
|
|
,outds=&outds
|
|
,access_token_var=&access_token_var
|
|
,grant_type=&grant_type
|
|
)
|
|
%end;
|
|
proc sort
|
|
data=&outds(rename=(id=groupuri name=groupname description=groupdesc))
|
|
out=&outds (keep=groupuri groupname groupdesc);
|
|
by groupname;
|
|
run;
|
|
%end;
|
|
|
|
%mend mx_getgroups; |