private ConsolidatedResult CreateUniqueResult(string email, string connectionName)
        {
            var claimAttribute = new ClaimAttribute
            {
                ClaimEntityType = SPClaimEntityTypes.User,
                PeoplePickerAttributeDisplayName     = connectionName,
                PeoplePickerAttributeHierarchyNodeId = connectionName
            };

            var user = new Auth0.User
            {
                Email      = email,
                Name       = string.Empty,
                Picture    = string.Empty,
                Identities = new List <Identity>
                {
                    new Identity
                    {
                        Connection = connectionName,
                        IsSocial   = this.IsSocialConnection(connectionName)
                    }
                }
            };

            return(new ConsolidatedResult
            {
                Attribute = claimAttribute,
                Auth0User = user,
                PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
            });
        }
        protected virtual PickerEntity GetPickerEntity(Auth0.User auth0User, string claimEntityType)
        {
            PickerEntity pe    = CreatePickerEntity();
            SPClaim      claim = null;

            if (claimEntityType == SPClaimEntityTypes.User)
            {
                claim = new SPClaim(
                    this.identifierClaimType,
                    string.IsNullOrEmpty(this.auth0Config.IdentifierUserField) || this.auth0Config.IdentifierUserField == "Email" ?
                    auth0User.UniqueEmail() :
                    Utils.GetPropValue(auth0User, this.auth0Config.IdentifierUserField).ToString(),
                    Microsoft.IdentityModel.Claims.ClaimValueTypes.String,
                    SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedSPTrustedLoginProvider.Name));

                var displayText = !string.IsNullOrEmpty(auth0User.FamilyName) && !string.IsNullOrEmpty(auth0User.GivenName) ?
                                  string.Format("{0} {1}", auth0User.GivenName, auth0User.FamilyName) : auth0User.Name;

                pe.DisplayText =
                    !string.IsNullOrEmpty(displayText) ?
                    string.Format("{0} ({1})", displayText, auth0User.Email) :
                    auth0User.Email;

                pe.Description = string.Format(
                    "Email: {0}; Name: {1}",
                    auth0User.Email,
                    auth0User.Name);

                pe.EntityType = SPClaimEntityTypes.User;
                pe.EntityData[PeopleEditorEntityDataKeys.DisplayName] = displayText;
                pe.EntityData[PeopleEditorEntityDataKeys.Email]       = auth0User.Email;
                pe.EntityData["Picture"] = auth0User.Picture;
            }
            else if (claimEntityType == SPClaimEntityTypes.FormsRole)
            {
                claim = new SPClaim(
                    ConnectionClaimType,
                    auth0User.Identities.First().Connection,
                    Microsoft.IdentityModel.Claims.ClaimValueTypes.String,
                    SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedSPTrustedLoginProvider.Name));

                pe.DisplayText = string.Format(
                    "All Users ({0})",
                    auth0User.Identities.First().Connection);

                pe.Description = string.Format(
                    "[{0}] All Users from '{1}'",
                    ProviderInternalName,
                    auth0User.Identities.First().Connection);

                pe.EntityType = SPClaimEntityTypes.FormsRole;
            }

            pe.Claim           = claim;
            pe.IsResolved      = true;
            pe.EntityGroupName = this.pickerEntityGroupName;

            return(pe);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Greate the nodes in the People Picker representing all connections.
        /// </summary>
        /// <param name="selectedNode"></param>
        /// <returns></returns>
        private IEnumerable <ConsolidatedResult> CreatePeoplePickerConnectionNodes(string selectedNode)
        {
            var identities = new List <Identity>();

            // Get a list of all connections.
            var connections = this.GetConnections(selectedNode);

            foreach (var connection in connections)
            {
                identities.Add(new Identity
                {
                    Connection = connection.Name,
                    IsSocial   = this.IsSocialConnection(connection.Name)
                });
            }

            // Add all connections as identities.
            var results = new List <ConsolidatedResult>();

            foreach (var identity in identities)
            {
                var user = new Auth0.User
                {
                    Identities = new List <Identity> {
                        identity
                    }
                };

                results.Add(new ConsolidatedResult
                {
                    Attribute = new ClaimAttribute
                    {
                        ClaimEntityType = SPClaimEntityTypes.FormsRole,
                        PeoplePickerAttributeDisplayName     = identity.Connection,
                        PeoplePickerAttributeHierarchyNodeId = identity.Connection
                    },
                    User         = user,
                    PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole)
                });
            }

            return(results);
        }
        private IEnumerable<ConsolidatedResult> CreateAllUsersResults(string selectedNode)
        {
            var results = new List<ConsolidatedResult>();
            var identities = new List<Identity>();

            var connections = this.GetConnections(selectedNode);
            foreach (var connection in connections)
            {
                identities.Add(new Identity
                {
                    Connection = connection.Name,
                    IsSocial = this.IsSocialConnection(connection.Name)
                });
            }

            foreach (var identity in identities)
            {
                var claimAttribute = new ClaimAttribute
                {
                    ClaimEntityType = SPClaimEntityTypes.FormsRole,
                    PeoplePickerAttributeDisplayName = identity.Connection,
                    PeoplePickerAttributeHierarchyNodeId = identity.Connection
                };

                var user = new Auth0.User
                {
                    Identities = new List<Identity> { identity }
                };

                results.Add(new ConsolidatedResult
                {
                    Attribute = claimAttribute,
                    Auth0User = user,
                    PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole)
                });
            }

            return results;
        }
        private ConsolidatedResult CreateUniqueResult(string email, string connectionName)
        {
            var claimAttribute = new ClaimAttribute
            {
                ClaimEntityType = SPClaimEntityTypes.User,
                PeoplePickerAttributeDisplayName = connectionName,
                PeoplePickerAttributeHierarchyNodeId = connectionName
            };

            var user = new Auth0.User
            {
                Email = email,
                Name = string.Empty,
                Picture = string.Empty,
                Identities = new List<Identity> 
                { 
                    new Identity 
                    { 
                        Connection = connectionName, 
                        IsSocial = this.IsSocialConnection(connectionName)
                    }
                }
            };

            return new ConsolidatedResult
            {
                Attribute = claimAttribute,
                Auth0User = user,
                PickerEntity = this.GetPickerEntity(user, SPClaimEntityTypes.User)
            };
        }
        protected override void FillResolve(Uri context, string[] entityTypes, SPClaim resolveInput, List<PickerEntity> resolved)
        {
            Auth0LoggingService.Write("FillResolve input: {0}", resolveInput != null ? resolveInput.ClaimType + "/" + resolveInput.Value : "empty");

            if (!this.SetSPTrustInCurrentContext(context))
            {
                Auth0LoggingService.Write("FillResolve: SetSPTrustInCurrentContext=false.");
                return;
            }

            if (!String.Equals(resolveInput.OriginalIssuer,
                    SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedSPTrustedLoginProvider.Name),
                    StringComparison.OrdinalIgnoreCase))
            {
                Auth0LoggingService.Write("FillResolve: Original issuers don't match, {0} != {1}.", resolveInput.OriginalIssuer, SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedSPTrustedLoginProvider.Name));
                return;
            }

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                var input = resolveInput.Value.Contains(IdentifierValuesSeparator) ?
                    resolveInput.Value.Split(IdentifierValuesSeparator)[1] : resolveInput.Value;
                var connectionName = resolveInput.Value.Contains(IdentifierValuesSeparator) ?
                    resolveInput.Value.Split(IdentifierValuesSeparator)[0] : string.Empty;

                var consolidatedResults = this.ResolveInputBulk(input, connectionName);

                if (consolidatedResults != null && consolidatedResults.Count > 0)
                {
                    resolved.Add(consolidatedResults.ElementAt(0).PickerEntity);
                    return;
                }

                if (resolveInput.ClaimType == ConnectionClaimType)
                {
                    var user = new Auth0.User
                    {
                        Identities = new List<Identity> 
                        { 
                            new Identity { Connection = resolveInput.Value } 
                        }
                    };

                    resolved.Add(this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole));
                }
                else if (resolveInput.ClaimType == RoleClaimType)
                {
                    resolved.Add(this.GetRolePickerEntity(resolveInput.Value));
                }
                else if (this.alwaysResolveValue)
                {
                    var user = new Auth0.User
                    {
                        Email = input,
                        Name = string.Empty,
                        Picture = string.Empty,
                        Identities = new List<Identity> 
                        { 
                            new Identity { Connection = connectionName } 
                        }
                    };

                    resolved.Add(this.GetPickerEntity(user, SPClaimEntityTypes.User));
                }
            });
        }
 public static string UniqueEmail(this Auth0.User user)
 {
     return(user.Email != null ? user.Email : user.UserId.Split('|')[1]);
 }
        protected override void FillResolve(Uri context, string[] entityTypes, SPClaim resolveInput, List <PickerEntity> resolved)
        {
            Auth0LoggingService.Write("FillResolve input: {0}", resolveInput != null ? resolveInput.ClaimType + "/" + resolveInput.Value : "empty");

            if (!this.SetSPTrustInCurrentContext(context))
            {
                Auth0LoggingService.Write("FillResolve: SetSPTrustInCurrentContext=false.");
                return;
            }

            if (!String.Equals(resolveInput.OriginalIssuer,
                               SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedSPTrustedLoginProvider.Name),
                               StringComparison.OrdinalIgnoreCase))
            {
                Auth0LoggingService.Write("FillResolve: Original issuers don't match, {0} != {1}.", resolveInput.OriginalIssuer, SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedSPTrustedLoginProvider.Name));
                return;
            }

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                var input = resolveInput.Value.Contains(IdentifierValuesSeparator) ?
                            resolveInput.Value.Split(IdentifierValuesSeparator)[1] : resolveInput.Value;
                var connectionName = resolveInput.Value.Contains(IdentifierValuesSeparator) ?
                                     resolveInput.Value.Split(IdentifierValuesSeparator)[0] : string.Empty;

                var consolidatedResults = this.ResolveInputBulk(input, connectionName);

                if (consolidatedResults != null && consolidatedResults.Count > 0)
                {
                    resolved.Add(consolidatedResults.ElementAt(0).PickerEntity);
                    return;
                }

                if (resolveInput.ClaimType == ConnectionClaimType)
                {
                    var user = new Auth0.User
                    {
                        Identities = new List <Identity>
                        {
                            new Identity {
                                Connection = resolveInput.Value
                            }
                        }
                    };

                    resolved.Add(this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole));
                }
                else if (resolveInput.ClaimType == RoleClaimType)
                {
                    resolved.Add(this.GetRolePickerEntity(resolveInput.Value));
                }
                else if (this.alwaysResolveValue)
                {
                    var user = new Auth0.User
                    {
                        Email      = input,
                        Name       = string.Empty,
                        Picture    = string.Empty,
                        Identities = new List <Identity>
                        {
                            new Identity {
                                Connection = connectionName
                            }
                        }
                    };

                    resolved.Add(this.GetPickerEntity(user, SPClaimEntityTypes.User));
                }
            });
        }
Ejemplo n.º 9
0
        protected override void FillResolve(Uri context, string[] entityTypes, SPClaim resolveInput, List <PickerEntity> resolved)
        {
            logger.FillResolve(context, resolveInput);

            // Not in context.
            if (!this.SetLoginProviderForCurrentContext(context))
            {
                logger.FillResolveNotInContext(context);
                return;
            }

            // Issuer mismatch.
            if (!String.Equals(resolveInput.OriginalIssuer, SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedLoginProvider.Name), StringComparison.OrdinalIgnoreCase))
            {
                logger.FillResolveIssuerMismatch(resolveInput.OriginalIssuer, SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, this.associatedLoginProvider.Name));
                return;
            }

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                this.InitializeApiClient(context);

                var input          = resolveInput.Value.Contains(IdentifierValuesSeparator) ? resolveInput.Value.Split(IdentifierValuesSeparator)[1] : resolveInput.Value;
                var connectionName = resolveInput.Value.Contains(IdentifierValuesSeparator) ? resolveInput.Value.Split(IdentifierValuesSeparator)[0] : string.Empty;

                var consolidatedResults = this.ResolveInputBulk(input, connectionName);
                if (consolidatedResults != null && consolidatedResults.Count > 0)
                {
                    resolved.Add(consolidatedResults.ElementAt(0).PickerEntity);
                    return;
                }

                if (resolveInput.ClaimType == DefaultClaimTypes.Connection)
                {
                    var user = new Auth0.User
                    {
                        Identities = new List <Identity>
                        {
                            new Identity {
                                Connection = resolveInput.Value
                            }
                        }
                    };
                    resolved.Add(this.GetPickerEntity(user, SPClaimEntityTypes.FormsRole));
                }
                else if (resolveInput.ClaimType == DefaultClaimTypes.Role)
                {
                    resolved.Add(this.GetRolePickerEntity(resolveInput.Value));
                }
                else if (this.alwaysResolveValue)
                {
                    var user = new Auth0.User
                    {
                        Email      = input,
                        Name       = string.Empty,
                        Picture    = string.Empty,
                        Identities = new List <Identity>
                        {
                            new Identity {
                                Connection = connectionName
                            }
                        }
                    };

                    resolved.Add(this.GetPickerEntity(user, SPClaimEntityTypes.User));
                }

                logger.Resolved(resolved);
            });
        }