public static async Task xRemoveLoginAsync <TContext, TUser, TKey, TUserLogin>(this IIdentityUserLoginStoreWithContext <TContext, TUser, TKey, TUserLogin> store, TUser user, string loginProvider, string providerKey, CancellationToken cancellationToken = default) where TContext : class, IIdentityContext//, IIdentityContext_WithUserLogins<TKey> where TKey : IEquatable <TKey> where TUserLogin : class, IIdentityUserLogin <TKey> where TUser : class, IIdentityUserWithLogins <TKey> { store.ThrowIfCancelledRequestOrDisposedOrUserNull(user, cancellationToken); var entry = await store.xFindUserLoginAsync(user.Id, loginProvider, providerKey, cancellationToken); if (entry != null) { await store.Context.DbDeleteAsync(entry); } }
public static async Task <TUser> xFindByLoginAsync <TContext, TUser, TKey, TUserLogin>(this IIdentityUserLoginStoreWithContext <TContext, TUser, TKey, TUserLogin> store, string loginProvider, string providerKey, CancellationToken cancellationToken = default) where TContext : class, IIdentityContext//, IIdentityContext_WithUserLogins<TKey> where TKey : IEquatable <TKey> where TUserLogin : class, IIdentityUserLogin <TKey> where TUser : class, IIdentityUserWithLogins <TKey> { cancellationToken.ThrowIfCancellationRequested(); var userLogin = await store.xFindUserLoginAsync(loginProvider, providerKey, cancellationToken); if (userLogin != null) { return((TUser)await store.Context.DbGetQueryable <TUser>().xFindByIdAsync(userLogin.UserId, cancellationToken)); } return(null); }