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