Détermination de l'utilisateur de session

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Attention : Ce code nécessite des droits administrateur.
Cette macro analyse plusieurs variables système et macro-variables spécifiques à l'environnement SAS© (telles que `_sasjs_username`, `SYS_COMPUTE_SESSION_OWNER`, `_metaperson`, et `sysuserid`) pour identifier l'utilisateur actuel. Elle gère les spécificités des sessions Viya Compute, Stored Process (où `_metaperson` est utilisé pour les utilisateurs de métadonnées) et Workspace Server. Elle inclut également une logique pour nettoyer le nom d'utilisateur en retirant les extensions de domaine d'authentification si présentes. Le code référencé 'DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas©' illustre une gestion administrative des domaines d'authentification basée sur l'ID utilisateur.
Analyse des données

Type : CREATION_INTERNE


Les données sont exclusivement des variables système et macro-variables générées par l'environnement SAS, reflétant l'utilisateur connecté ou le contexte de session. Il n'y a pas de lecture de fichiers externes ou de datasets SAS préexistants.

1 Bloc de code
MACRO mf_getuser
Explication :
Ce bloc définit la macro `mf_getuser` qui détermine l'identifiant de l'utilisateur actif. Elle vérifie l'existence de plusieurs macro-variables dans un ordre spécifique : `_sasjs_username`, `SYS_COMPUTE_SESSION_OWNER`, `_metaperson`, et `sysuserid`. Selon l'environnement (SAS Viya Compute, Stored Process, ou Workspace), une de ces variables sera utilisée pour assigner l'ID utilisateur. Une logique spécifique est incluse pour traiter `_metaperson` en retirant les extensions de domaine d'authentification et en gérant les noms d'utilisateur contenant des virgules. La valeur finale est renvoyée par la macro.
Copié !
1%macro mf_getuser(
2)/*/STORE SOURCE*/;
3 %local user;
4 
5 %IF %symexist(_sasjs_username) %THEN %let user=&_sasjs_username;
6 %ELSE %IF %symexist(SYS_COMPUTE_SESSION_OWNER) %THEN %DO;
7 %let user=&SYS_COMPUTE_SESSION_OWNER;
8 %END;
9 %ELSE %IF %symexist(_metaperson) %THEN %DO;
10 %IF %LENGTH(&_metaperson)=0 %THEN %let user=&sysuserid;
11 /* sometimes SAS will add @code_sas/DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas extension - remove for consistency */
12 /* but be sure to quote in case of usernames with commas */
13 %ELSE %let user=%unquote(%scan(%quote(&_metaperson),1, @));
14 %END;
15 %ELSE %let user=&sysuserid;
16 
17 %quote(&user)
18 
19%mend mf_getuser;
2 Bloc de code
MACRO setenv (référencée)
Explication :
Ce bloc, provenant du fichier référencé `DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas`, définit la macro `setenv`. Cette macro est un exemple de script administratif qui utilise `sysuserid` pour déterminer et définir un domaine d'authentification (`access_auth`), le rendant ainsi pertinent pour la gestion des accès et la sécurité du système. Elle démontre comment `sysuserid` peut être utilisé pour adapter les paramètres d'environnement en fonction du type d'utilisateur.
Copié !
1/* DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas */
2%put &sysuserid.;
3%macro setenv;
4%global access_auth;
5%IF %substr(&sysuserid.,1,3) = app %THEN %DO;
6 %let access_auth = DefaultAuth;
7%END;
8%ELSE %DO;
9 %let access_auth = LDAP_Auth;
10%END;
11%mend setenv;
12%setenv;
13 
14%put _all_;
3 Bloc de code
MACRO _version (référencée)
Explication :
Cette macro `_version`, référencée par l'entête, est conçue pour vérifier si la version actuelle de SAS est égale ou supérieure à une version spécifiée. Elle compare les numéros de version en utilisant les macro-fonctions `%scan` et `%eval`. Bien qu'elle ne soit pas directement appelée par la macro principale à analyser, sa présence dans les références met en évidence l'importance de la compatibilité de version dans l'environnement SAS.
Copié !
1%put NOTE: You have called the macro _VERSION, 2006-02-15.;
2%put NOTE: Copyright (c) 2001-2006 Rodney Sparapani;
3%put;
4 
5/*
6Author: Rodney Sparapani <rsparapa@mcw.edu>
7Created: 2001-00-00
8 
9This file is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13 
14This file is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18 
19You should have received a copy of the GNU General Public License
20along with this file; see the file COPYING. If not, write to
21the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22*/
23 
24/* _VERSION Documentation
25 
26 Returns a one (true) if the current version of SAS is equal to or
27 greater than the version requested; zero (false) otherwise.
28
29 POSITIONAL Parameters
30
31 ARG1 version requested
32
33 Specific OPTIONAL Parameters
34
35 NOTES= default is to not display the returned value in a NOTE,
36 if set to something, then do display
37
38 VERSION=ARG1 alias
39*/
40 
41%macro _version(arg1, notes=, version=&arg1);
42 
43%local RESULT;
44%let RESULT=%eval(%scan(&sysver, 1, .)*100+0%scan(&sysver, 2, .)>=%scan(&version, 1, .)*100+0%scan(&version, 2, .));
45%IF %LENGTH(¬es) %THEN %put NOTE: _VERSION is returning the value &RESULT;
46 
47&RESULT
48 
49%mend _version;
50 
51%*VALIDATION TEST STREAM;
4 Bloc de code
MACRO mm_getdetails (référencée)
Explication :
Cette macro `mm_getdetails` (référencée par l'entête HELP START) est un outil d'administration qui extrait les attributs et associations de métadonnées pour un URI spécifique. Elle utilise des fonctions de métadonnées SAS comme `metadata_getnasl`, `metadata_getnasn` et `metadata_getattr` pour parcourir et collecter des informations sur les objets de métadonnées, les enregistrant dans des jeux de données de sortie. Son rôle est principalement lié à la gestion et à l'audit des ressources au sein d'un environnement SAS.
Copié !
1/*** HELP START ***//**
2 @file mm_getdetails.sas
3 @brief extracts metadata attributes and associations for a particular uri
4 @param [in] uri the metadata object for which to return
5 attributes / associations
6 @param [in] sortoptions= Enables sorting of the output datasets, for example,
7 `SORTSEQ=LINGUISTIC`
8 @param [out] outattrs= (work.attributes)
9 The dataset to create that contains the list of attributes
10 @param [out] outassocs= (work.associations)
11 The dataset to contain the list of associations
12 
13 <h4> Related Files </h4>
14 @li mm_getobjects.sas
15 @li mm_gettypes.sas
16 
17**//*** HELP END ***/
18 
19%macro mm_getdetails(uri
20 ,outattrs=work.attributes
21 ,outassocs=work.associations
22 ,sortoptions=
23)/*/STORE SOURCE*/;
24 
25DATA &outassocs;
26 keep assoc assocuri name;
27 LENGTH assoc assocuri name $256;
28 call missing(of _all_);
29 rc1=1;n1=1;
30 DO while(rc1>0);
31 /* Walk through all possible associations of this object. */
32 rc1=metadata_getnasl("&uri",n1,assoc);
33 rc2=1;n2=1;
34 DO while(rc2>0);
35 /* Walk through all the associations on this machine object. */
36 rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);
37 IF (rc2>0) THEN DO;
38 rc3=metadata_getattr(assocuri,"Name",name);
39 OUTPUT;
40 END;
41 call missing(name,assocuri);
42 n2+1;
43 END;
44 n1+1;
45 END;
46RUN;
47PROC SORT &sortoptions;
48 BY assoc name;
49RUN;
50 
51DATA &outattrs;
52 keep type name value;
53 LENGTH type $4 name $256 value $32767;
54 rc1=1;n1=1;type='Prop';name='';value='';
55 DO while(rc1>0);
56 rc1=metadata_getnprp("&uri",n1,name,value);
57 IF rc1>0 THEN OUTPUT;
58 n1+1;
59 END;
60 rc1=1;n1=1;type='Attr';
61 DO while(rc1>0);
62 rc1=metadata_getnatr("&uri",n1,name,value);
63 IF rc1>0 THEN OUTPUT;
64 n1+1;
65 END;
66RUN;
67PROC SORT &sortoptions;
68 BY type name;
69RUN;
70 
71%mend mm_getdetails;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Allan Bowe (mentionné dans l'entête HELP START). Également, Rodney Sparapani (c) 2001-2006 (pour _version.sas) et HMS Analytical Software GmbH (pour macro_without_brief_tag.sas) sont des sources de code référencées qui peuvent avoir influencé le développement ou la logique des macros liées à la gestion des sessions utilisateur.