Esempio n. 1
0
        public PrincipalRoleInfoInstance(ScriptEngine engine, PrincipalRoleInfo principalRoleInfo)
            : base(engine)
        {
            if (principalRoleInfo == null)
            {
                throw new ArgumentNullException("principalRoleInfo");
            }

            m_principalInstance = new PrincipalInstance(Engine, principalRoleInfo.Principal);

            m_roles = Engine.Array.Construct(principalRoleInfo.Roles.Select(r => new RoleInstance(Engine, r)));

            PopulateFields();
            PopulateFunctions();
        }
Esempio n. 2
0
        public static PrincipalRoleInfo MapPrincipalRoleInfoFromSPRoleAssignment(SPRoleAssignment roleAssignment)
        {
            var result = new PrincipalRoleInfo();

            if (roleAssignment.Member is SPUser)
            {
                var spUser = roleAssignment.Member as SPUser;
                result.Principal = new User
                {
                    Email     = spUser.Email,
                    LoginName = spUser.LoginName,
                    Name      = spUser.Name,
                };
            }
            else if (roleAssignment.Member is SPGroup)
            {
                var spGroup = roleAssignment.Member as SPGroup;
                result.Principal = new Group
                {
                    LoginName = spGroup.LoginName,
                    Name      = spGroup.Name,
                    DistributionGroupEmail = spGroup.DistributionGroupEmail,
                };
            }
            else
            {
                throw new NotSupportedException("Unknown or Unsupported Principal Type...");
            }

            result.Roles = new List <Role>();
            foreach (var role in roleAssignment.RoleDefinitionBindings.OfType <SPRoleDefinition>())
            {
                var r = new Role
                {
                    Name        = role.Name,
                    Order       = role.Order,
                    Description = role.Description,
                };

                string permissionsString = Enum.Format(typeof(SPBasePermissions), role.BasePermissions, "F");
                r.BasePermissions = permissionsString.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();

                result.Roles.Add(r);
            }

            return(result);
        }
Esempio n. 3
0
        public static PrincipalRoleInfo MapPrincipalRoleInfoFromSPSecurableObject(SPSecurableObject securableObject, SPPrincipal principal)
        {
            PrincipalRoleInfo result = null;

            try
            {
                var roleAssignment = securableObject.RoleAssignments.GetAssignmentByPrincipal(principal);
                result = MapPrincipalRoleInfoFromSPRoleAssignment(roleAssignment);
            }
            catch
            {
                //Do nothing. This assumes that catching the exception is less performance intensive than doing the following:
                //SPRoleAssignment roleAssignment = securableObject.RoleAssignments.OfType<SPRoleAssignment>()
                //                                              .Where(sp => sp.Member.ID == principal.ID)
                //                                              .FirstOrDefault();
            }

            return(result);
        }