Exemplo n.º 1
0
    /// <inheritdoc />
    protected override Task <IdentityUserLogin <string> > FindUserLoginAsync(string loginProvider, string providerKey,
                                                                             CancellationToken cancellationToken)
    {
        cancellationToken.ThrowIfCancellationRequested();
        ThrowIfDisposed();

        if (string.IsNullOrWhiteSpace(loginProvider))
        {
            throw new ArgumentNullException(nameof(loginProvider));
        }

        if (string.IsNullOrWhiteSpace(providerKey))
        {
            throw new ArgumentNullException(nameof(providerKey));
        }

        var logins = _externalLoginService.Find(loginProvider, providerKey).ToList();

        if (logins.Count == 0)
        {
            return(Task.FromResult((IdentityUserLogin <string>)null !));
        }

        IIdentityUserLogin found = logins[0];

        return(Task.FromResult(new IdentityUserLogin <string>
        {
            LoginProvider = found.LoginProvider,
            ProviderKey = found.ProviderKey,

            // TODO: We don't store this value so it will be null
            ProviderDisplayName = null,
            UserId = found.UserId,
        }));
    }
Exemplo n.º 2
0
        /// <inheritdoc />
        public override Task RemoveLoginAsync(MemberIdentityUser user, string loginProvider, string providerKey, CancellationToken cancellationToken = default)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            if (string.IsNullOrWhiteSpace(loginProvider))
            {
                throw new ArgumentNullException(nameof(loginProvider));
            }

            if (string.IsNullOrWhiteSpace(providerKey))
            {
                throw new ArgumentNullException(nameof(providerKey));
            }

            IIdentityUserLogin userLogin = user.Logins.SingleOrDefault(l => l.LoginProvider == loginProvider && l.ProviderKey == providerKey);

            if (userLogin != null)
            {
                user.Logins.Remove(userLogin);
            }

            return(Task.CompletedTask);
        }
        public IdentityUserStore(IRepository <IIdentityUser <TKey>, TKey> userRepository,
                                 IRepository <IIdentityUserLogin <TKey>, TKey> userLoginRepository,
                                 IRepository <IIdentityUserClaim <TKey>, TKey> userClaimRepository,
                                 IRepository <IIdentityUserRole <TKey>, TKey> userRoleRepository,
                                 IRepository <IIdentityRole, string> roleRepository,
                                 IUnitOfWork <IIdentityUser <TKey>, TKey> userUnitOfWork,
                                 IUnitOfWork <IIdentityUserLogin <TKey>, TKey> userLoginUnitOfWork,
                                 IUnitOfWork <IIdentityUserClaim <TKey>, TKey> userClaimUnitOfWork,
                                 IUnitOfWork <IIdentityUserRole <TKey>, TKey> userRoleUnitOfWork,
                                 IUnitOfWork <IIdentityRole, string> roleUnitOfWork,
                                 IIdentityUserLogin <TKey> identityUserLogin,
                                 IIdentityUserClaim <TKey> identityUserClaim,
                                 IIdentityUserRole <TKey> identityUserRole

                                 )
        {
            _userRepository      = userRepository;
            _userLoginRepository = userLoginRepository;
            _userClaimRepository = userClaimRepository;
            _userRoleRepository  = userRoleRepository;
            _roleRepository      = roleRepository;

            _userUnitOfWork      = userUnitOfWork;
            _userLoginUnitOfWork = userLoginUnitOfWork;
            _userClaimUnitOfWork = userClaimUnitOfWork;
            _userRoleUnitOfWork  = userRoleUnitOfWork;
            _roleUnitOfWork      = roleUnitOfWork;

            _identityUserLogin = identityUserLogin;
            _identityUserClaim = identityUserClaim;
            _identityUserRole  = identityUserRole;
        }
Exemplo n.º 4
0
        public ExternalLoginDto BuildDto(IIdentityUserLogin entity)
        {
            var dto = new ExternalLoginDto
            {
                Id            = entity.Id,
                CreateDate    = entity.CreateDate,
                LoginProvider = entity.LoginProvider,
                ProviderKey   = entity.ProviderKey,
                UserId        = entity.UserId
            };

            return(dto);
        }
Exemplo n.º 5
0
        public static ExternalLoginDto BuildDto(IIdentityUserLogin entity)
        {
            var dto = new ExternalLoginDto
            {
                Id            = entity.Id,
                CreateDate    = entity.CreateDate,
                LoginProvider = entity.LoginProvider,
                ProviderKey   = entity.ProviderKey,
                UserId        = int.Parse(entity.UserId, CultureInfo.InvariantCulture), // TODO: This is temp until we change the ext logins to use GUIDs
                UserData      = entity.UserData
            };

            return(dto);
        }
Exemplo n.º 6
0
        public static ExternalLoginDto BuildDto(IIdentityUserLogin entity)
        {
            var asExtended = entity as IIdentityUserLoginExtended;
            var dto        = new ExternalLoginDto
            {
                Id            = entity.Id,
                CreateDate    = entity.CreateDate,
                LoginProvider = entity.LoginProvider,
                ProviderKey   = entity.ProviderKey,
                UserId        = entity.UserId,
                UserData      = asExtended?.UserData
            };

            return(dto);
        }
Exemplo n.º 7
0
        public void Removes_Existing_Duplicates_On_Save()
        {
            var user = new UserBuilder().Build();

            UserService.Save(user);

            string   providerKey = Guid.NewGuid().ToString("N");
            DateTime latest      = DateTime.Now.AddDays(-1);
            DateTime oldest      = DateTime.Now.AddDays(-10);

            using (global::Umbraco.Cms.Core.Scoping.IScope scope = ScopeProvider.CreateScope())
            {
                // insert duplicates manuall
                ScopeAccessor.AmbientScope.Database.Insert(new ExternalLoginDto
                {
                    UserOrMemberKey = user.Key,
                    LoginProvider   = "test1",
                    ProviderKey     = providerKey,
                    CreateDate      = latest
                });
                ScopeAccessor.AmbientScope.Database.Insert(new ExternalLoginDto
                {
                    UserOrMemberKey = user.Key,
                    LoginProvider   = "test1",
                    ProviderKey     = providerKey,
                    CreateDate      = oldest
                });
            }

            // try to save 2 other duplicates
            ExternalLogin[] externalLogins = new[]
            {
                new ExternalLogin("test2", providerKey),
                new ExternalLogin("test2", providerKey),
                new ExternalLogin("test1", providerKey)
            };

            ExternalLoginService.Save(user.Key, externalLogins);

            var logins = ExternalLoginService.GetExternalLogins(user.Key).ToList();

            // duplicates will be removed, keeping the latest entries
            Assert.AreEqual(2, logins.Count);

            IIdentityUserLogin test1 = logins.Single(x => x.LoginProvider == "test1");

            Assert.Greater(test1.CreateDate, latest);
        }
Exemplo n.º 8
0
        /// <inheritdoc />
        protected override Task <IdentityUserLogin <string> > FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();

            var logins = _externalLoginService.Find(loginProvider, providerKey).ToList();

            if (logins.Count == 0)
            {
                return(Task.FromResult((IdentityUserLogin <string>)null));
            }

            IIdentityUserLogin found = logins[0];

            return(Task.FromResult(new IdentityUserLogin <string>
            {
                LoginProvider = found.LoginProvider,
                ProviderKey = found.ProviderKey,
                ProviderDisplayName = null, // TODO: We don't store this value so it will be null
                UserId = found.UserId
            }));
        }