using Microsoft.AspNetCore.Identity; using Raven.Client.Documents; using Raven.Client.Documents.Linq; using Raven.Client.Documents.Session; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using zero.Core.Entities; namespace zero.Core.Identity { public partial class UserStore : IUserRoleStore where TUser : class, IUser { /// public Task AddToRoleAsync(TUser user, string roleName, CancellationToken cancellationToken) { user.Roles.Add(roleName); return Task.CompletedTask; } /// public Task> GetRolesAsync(TUser user, CancellationToken cancellationToken) { return Task.FromResult((IList)user.Roles.ToList()); } /// public async Task> GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken) { using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) { return await session.Query().Where(x => roleName.In(x.Roles)).ToListAsync(); } } /// public Task IsInRoleAsync(TUser user, string roleName, CancellationToken cancellationToken) { return Task.FromResult(user.Roles.Contains(roleName, StringComparer.InvariantCultureIgnoreCase)); } /// public Task RemoveFromRoleAsync(TUser user, string roleName, CancellationToken cancellationToken) { user.Roles.Remove(roleName); return Task.CompletedTask; } } }