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