public static RavenIdentityBuilder EnsureIdentityRols <TRole>(this RavenIdentityBuilder identityBuilder, params TRole[] rols) where TRole : IdentityRole { using (var identityDocumentStore = identityBuilder.Services.BuildServiceProvider().GetService <IDocumentStore>()) { foreach (var role in rols) { TRole dbrole = null; try { dbrole = identityDocumentStore.IdentitySession(session => session.Query <TRole>().FirstOrDefault(r => r.NormalizedName == role.NormalizedName)); } catch (InvalidCastException ie) { if (!ie.Message.Contains("seq")) { throw; } } if (dbrole == null) { identityDocumentStore.IdentitySession(session => session.Store(role)); } } } return(identityBuilder); }
public static RavenIdentityBuilder EnsureUserRols <TUser, TRole>(this RavenIdentityBuilder identityBuilder, TUser user, params TRole[] rols) where TRole : IdentityRole where TUser : IdentityUser { identityBuilder.EnsureIdentityRols(rols); identityBuilder.EnsureIdentityUser(ref user); using (var userManager = identityBuilder.Services.BuildServiceProvider().GetService <UserManager <TUser> >()) { Task.WaitAll(userManager.AddToRolesAsync(user, rols.Select(r => r.Name))); } return(identityBuilder); }
public static RavenIdentityBuilder EnsureIdentityUser <TUser>(this RavenIdentityBuilder identityBuilder, ref TUser user) where TUser : IdentityUser { var NormalizedUserName = user.NormalizedUserName; using (var identityDocumentStore = identityBuilder.Services.BuildServiceProvider().GetService <IDocumentStore>()) { { TUser dbuser = null; try { dbuser = identityDocumentStore.IdentitySession(session => session.Query <TUser>().FirstOrDefault(u => u.NormalizedUserName == NormalizedUserName)); } catch (InvalidCastException ie) { if (!ie.Message.Contains("seq")) { throw; } } if (dbuser == null) { using (var session = identityDocumentStore.OpenSession()) { session.Store(user); session.SaveChanges(); } } else { user = dbuser; } } } return(identityBuilder); }