/// <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)); }
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); } }