public async Task <ClaimsIdentity> RedeemToken(IExternalLogin login) { var provider = this.providers.Single(o => o.ProviderId == login.ProviderId); var token = await provider.GetProfileDataFromProvider(login.AccessToken); if (token.aud != provider.ClientId) { return(null); } User user = (from p in this.db.User.Include(o => o.Providers).Include(o => o.Roles) where p.Username == token.email select p).FirstOrDefault(); if (user == null) { user = await Task.Factory.StartNew(() => SignupUser(token.email)); db.SaveChanges(); } if (!user.Providers.Any(o => o.ProviderId == provider.ProviderId && o.ExternalId == token.sub)) { db.UserProvider.Add(new UserProvider() { ExternalId = token.sub, ProviderId = provider.ProviderId, User = user }); db.SaveChanges(); } return(user.ToClaimsIdentity()); }
public static void UseDatabaseConfiguration( this IApplicationBuilder app, IWebHostEnvironment environment, DbContextBase dbContextBase ) { if (environment.IsDevelopment()) { // Drop the database if it exists. dbContextBase.Database.EnsureDeleted(); // Create the database if it doesn't exist. dbContextBase.Database.EnsureCreated(); // Add 7 initial users to the system for testing: foreach (var user in "lucifer,beelzebub,mammon,azazel,asmodeus,leviathan,belphegor".Split(',')) { var newUser = new User( $"{user}@formhell.com", // Email "P@ssw0rdT0He11666", // Password "Fallen Angels" // Group ); dbContextBase.Set <User>().Add(newUser); } dbContextBase.SaveChanges(); } }
public void FindRecord() { Guid id = Guid.NewGuid(); using (var dbContextBase = new DbContextBase(options, new Dictionary <string, Type>() { { "tbl", typeof(Connector) } }, new List <Table>())) { db.Setup(c => c.SetupDataContext("Table")); db.SetupGet(c => c.Instance).Returns(dbContextBase); db.SetupGet(c => c.DbSetEntityType).Returns(typeof(Connector)); dbContextBase.Add(new Connector { Id = id, Name = "init", Port = 123 }); dbContextBase.SaveChanges(); Assert.AreEqual(1, dbContextBase.Set <Connector>().Count(), "Inital state invalid"); var connector = db.Object.Find("Table", new object[] { id }); Assert.AreEqual("init", ((Connector)connector).Name); Assert.AreEqual(123, ((Connector)connector).Port); db.Verify(c => c.SetupDataContext("Table"), Times.Once); } }
public void UpdateRecordUpdatesToDb() { using (var dbContextBase = new DbContextBase(options, new Dictionary <string, Type>() { { "tbl", typeof(Connector) } }, new List <Table>())) { dbContextBase.Add(new Connector { Name = "init" }); dbContextBase.SaveChanges(); Assert.AreEqual(1, dbContextBase.Set <Connector>().Count(), "Inital state invalid"); db.SetupGet(c => c.Instance).Returns(dbContextBase); db.SetupGet(c => c.DbSetEntityType).Returns(typeof(Connector)); var connector = dbContextBase.Set <Connector>().First(); connector.Name = "updated"; db.Object.Update(connector); db.Object.Save(); Assert.AreEqual("updated", dbContextBase.Set <Connector>().First().Name); } }
/// <summary> /// 提交 /// </summary> /// <returns></returns> public int SaveChanges() { try { return(Db.SaveChanges()); } catch (Exception ex) { _error.Execute(ex); _logger.LogError(new EventId(ex.HResult), ex, "Repository Exception"); return(0); } }
public async Task <ClaimsIdentity> RedeemToken(IExternalLogin login) { var provider = this.providers.Single(o => o.ProviderId == login.ProviderId); var token = await provider.GetProfileDataFromProvider(login.AccessToken); if (token.aud != provider.ClientId) { return(null); } User user = this.db.User.FirstOrDefault(o => o.Username == token.email); if (user == null) { user = await Task.Factory.StartNew(() => SignupUser(token.email)); db.SaveChanges(); } if (!user.Providers.Any(o => o.ProviderId == provider.ProviderId && o.ExternalId == token.sub)) { db.UserProvider.Add(new UserProvider() { ExternalId = token.sub, ProviderId = provider.ProviderId, User = user }); db.SaveChanges(); } string fingerprint = this.deviceProfiler.DeriveFingerprint(user); return(user.ToClaimsIdentity(this.config.ClaimsNamespace, fingerprint)); }
public async Task <ClaimsIdentity> SignupUser(ISignupServiceOptions options) { UserProviderLocal login = await(from p in this.db.LocalProvider.Include(o => o.User) where p.User.Username == options.Username select p).FirstOrDefaultAsync(); if (login != null) { throw new ServiceException($"A user account for {options.Username} already exists"); } User user = new User() { CultureName = options.CultureName, Enabled = true, Username = options.Username, DisplayName = options.DisplayName, TimeZoneId = options.TimeZoneId }; db.User.Add(user); string salt = crypto.CreateSalt(); db.LocalProvider.Add(new UserProviderLocal() { PasswordSalt = salt, PasswordHash = crypto.CreateKey(salt, options.Password), User = user, Provider = db.Provider.FirstOrDefault(o => o.ProviderId == ProviderTypes.Local) }); Role role = db.Role.FirstOrDefault(o => o.RoleId == RoleTypes.User); user.Roles.Add(new UserRole() { User = user, Role = role }); db.SaveChanges(); var fingerprint = this.deviceProfiler.DeriveFingerprint(user); return(user.ToClaimsIdentity(fingerprint)); }
/// <summary> /// 用户登录 /// </summary> /// <param name="userName">帐号</param> /// <param name="userPwd">密码</param> /// <returns></returns> public UserInfoSet UserLogin(string userName, string userPwd) { using (DbContextBase db = new DbContextBase()) { var resUserModel = db.UserInfoSet .FirstOrDefault(a => a.UserName == userName && a.UserPwd == userPwd); if (resUserModel != null) { resUserModel.LoginDate = DateTime.Now.ToString(); db.SaveChanges(); } return(resUserModel); } }
public void SaveChanges() { _context.SaveChanges(); }
/// <summary> /// /// </summary> /// <returns></returns> public int SaveChanges() { return(_dbContextBase.SaveChanges()); }