Beispiel #1
0
        /// <summary>
        /// Gets a <see cref="User"/> by <see cref="User.UserName"/>.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        /// <returns></returns>
        /// <remarks>Adds new user if user doesn't exist</remarks>
        public virtual User GetUser(string userName)
        {
            if (string.IsNullOrWhiteSpace(userName))
            {
                throw new ArgumentException("userName cannot be null or whitespace.");
            }

            SitecoreUser sitecoreUser = GetUserInternal(userName);

            if (sitecoreUser == null)
            {
                throw new NullReferenceException(string.Format("'sitecoreUser' is null. Looked for: '{0}'", userName));
            }

            var name = sitecoreUser.LocalName;

            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(string.Format("The 'sitecoreUser.userName' cannot be null or whitespace. LocalName: {0}, Domain: {1}, AccountType: {2}, Name: {3}", sitecoreUser.LocalName, sitecoreUser.Domain, sitecoreUser.AccountType, sitecoreUser.Name));
            }

            // Using static method on User to avoid circular
            // dependency between IRepository<T> and this service.
            // We need user info for audit in repo.
            var user = User.SingleOrDefault(x => x.ExternalId == name);

            return(MapUser(sitecoreUser));
        }
Beispiel #2
0
 protected virtual User GetOrCreateUser(SitecoreUser sitecoreUser)
 {
     lock (_lock)
     {
         var user = User.SingleOrDefault(u => u.ExternalId.ToUpper() == sitecoreUser.LocalName.ToUpper());
         if (user == null)
         {
             user            = new User(sitecoreUser.LocalName);
             user.ExternalId = sitecoreUser.LocalName;
             user.UserGroups = _userGroupService.GetAllUserGroups().Where(x => x.ExternalId.ToUpper() == sitecoreUser.LocalName.ToUpper()).ToList();
             if (user.ExternalId != null)
             {
                 user.Save();
             }
         }
         return(user);
     }
 }