Este ejemplo es una consulta SQL que nos devuelve los nombres de los Roles de un usuario determinado, en este caso "DOMINIO\usuario":
SELECT RB.Name FROM FilteredRole RB
INNER JOIN FilteredSystemUserRoles UR ON UR.RoleId=RB.RoleId
INNER JOIN FilteredSystemUser U ON UR.SystemUserId=U.SystemUserId
WHERE U.DomainName='DOMINIO\usuario'
Ahora bien, si queremos saber un poco más de sus permisos por ejemplo que nivel de acceso tiene de lectura en contactos (Rol de seguridad "prvReadContact"), podemos acceder a traves del SQL Server, pero ahora de forma NO SOPORTADA:
SELECT RB.Name, RP.PrivilegeDepthMask FROM FilteredRole RB
INNER JOIN FilteredSystemUserRoles UR ON UR.RoleId=RB.RoleId
INNER JOIN FilteredSystemUser U ON UR.SystemUserId=U.SystemUserId
INNER JOIN RolePrivileges RP ON RP.RoleId=RB.RoleId
INNER JOIN Privilege P ON P.PrivilegeId=RP.PrivilegeId
WHERE
U.DomainName='DOMINIO\usuario' AND P.Name='prvReadContact'
El atributo "PrivilegeDepthMask" dará un número con el nivel de acceso, donde por ejemplo "1" es a nivel de usuario y "8" es a nivel de organización.
Para un listado de los permisos recomiendo este enlace:
http://msdn.microsoft.com/en-us/library/bb955027.aspx
Un saludo!
No hay comentarios:
Publicar un comentario