public UserInfo GetOrCreate() { var currentPrincipal = _userPrincipalProvider.Get(); var userInfo = _userInfoProvider.Get(currentPrincipal.Sid); if (userInfo != null) { if (userInfo.Login.Equals(currentPrincipal.Name, StringComparison.InvariantCultureIgnoreCase)) { return(userInfo); } var existsUserAdInfo = _adUserInfoProvider.Get(currentPrincipal.Sid); _userInfoProvider.Update(userInfo.Id, existsUserAdInfo.Login, existsUserAdInfo.DisplayName, existsUserAdInfo.Email); return(userInfo); } var newUserAdInfo = _adUserInfoProvider.Get(currentPrincipal.Sid); return(_userInfoProvider.Create( new UserInfo { DisplayName = newUserAdInfo.DisplayName, Email = newUserAdInfo.Email, Login = newUserAdInfo.Login, Sid = currentPrincipal.Sid })); }