public IActionResult Login([FromBody][Bind(include: "Email, Password")] Data.Entities.Account account) { PasswordHasher <Data.Entities.Account> hasher = new PasswordHasher <Data.Entities.Account>( new OptionsWrapper <PasswordHasherOptions>( new PasswordHasherOptions() { CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV3 } )); if (!ModelState.IsValid) { return(BadRequest()); } var user = _context.Accounts.FirstOrDefault(a => a.Email == account.Email); if (user == null) { return(NotFound()); } ; var result = hasher.VerifyHashedPassword(user, user.Password, account.Password); if (result == PasswordVerificationResult.Success) { return(Ok(user)); } return(Ok(account)); }
public IActionResult Register([FromBody][Bind("Username, Email, Password")] Data.Entities.Account account) { if (ModelState.IsValid) { PasswordHasher <Data.Entities.Account> hasher = new PasswordHasher <Data.Entities.Account>( new OptionsWrapper <PasswordHasherOptions>( new PasswordHasherOptions() { CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV3 } )); account.Password = hasher.HashPassword(account, account.Password); account.Token = Guid.NewGuid().ToString(); _context.Accounts.Add(account); _context.SaveChanges(); return(Ok(account)); } return(BadRequest()); }
/// <summary> /// 获得关系 /// </summary> /// <param name="main"></param> /// <param name="relations"></param> public static void GetRelation(Data.Entities.Account main, params Data.Entities.Account[] relations) { if (String.IsNullOrEmpty(main.Name) || main.Type.HasValue == false) { throw new ArgumentException("main 中的属性name和Type必须有值"); } var names = new List <String>(); names.Add(main.Name); var types = new List <int>(); types.Add((int)main.Type.Value); foreach (var r in relations) { if (r.Type.HasValue) { types.Add(r.Type.Value); } if (String.IsNullOrEmpty(r.Name) == false) { names.Add(r.Name); } } var entity = UMC.Data.Database.Instance().ObjectEntity <Data.Entities.Account>(); entity.Where.And().In(new Data.Entities.Account { Name = names[0] }, names.ToArray()).And().In(new Data.Entities.Account { Type = types[0] }, types.ToArray()); var mids = new List <Guid>(); Guid mid = Guid.NewGuid(); var rels = new List <Data.Entities.Account>(); entity.Order.Asc(new Data.Entities.Account { user_id = Guid.Empty }); entity.Query(g => { rels.Add(g); if (g.user_id.Value != mid) { mid = g.user_id.Value; mids.Add(mid); } }); if (mids.Count > 0) { entity.Where.Reset().And().In(new Data.Entities.Account { user_id = mids[0] }, mids.ToArray()).And().In(new Data.Entities.Account { Type = main.Type }, types.ToArray()); entity.Query(g => { rels.Add(g); }); } var memberId = Guid.Empty; var orel = rels.FindAll(g => g.Type == main.Type); var om = orel.Find(g => String.Equals(main.Name, g.Name) && g.Type == main.Type); if (om == null) { if (relations.Length > 0) { var rel = new List <Data.Entities.Account>(relations).Find(g => String.IsNullOrEmpty(g.Name) == false); if (rel != null) { var v = rels.Find(g => String.Equals(g.Name, rel.Name) && rel.Type == g.Type); if (v != null) { main.user_id = v.user_id; } } } if ((main.user_id ?? Guid.Empty) == Guid.Empty) { main.user_id = Guid.NewGuid(); } main.Flags = UMC.Security.UserFlags.Normal; entity.Where.Reset().And().Equal(new Data.Entities.Account { Type = main.Type, user_id = main.user_id }).Entities.IFF(e => e.Update(main) == 0, e => e.Insert(main)); } else { if (main.user_id.HasValue) { if (main.user_id.Value != om.user_id.Value) { entity.Where.Reset().And().Equal(new Data.Entities.Account { Type = main.Type, user_id = main.user_id }) .Entities.IFF(e => e.Update(main) == 0, e => e.Update(main)); } } else { main.user_id = om.user_id; } } memberId = main.user_id.Value; foreach (var r in relations) { var mrel = rels.FindAll(g => g.Type == r.Type && memberId == g.user_id); if (String.IsNullOrEmpty(r.Name) == false) { var mcards = mrel.FindAll(g => String.Equals(r.Name, g.Name, StringComparison.CurrentCultureIgnoreCase)); switch (mcards.Count) { case 0: r.user_id = memberId; if (mrel.Count > 0) { entity.Where.Reset().And().Equal(new Data.Entities.Account { Type = r.Type }) .And().In(new Data.Entities.Account { user_id = memberId }, mids.ToArray()).Entities.Delete(); } entity.Insert(r); mrel.Add(r); break; default: r.Flags = UMC.Security.UserFlags.Normal; r.user_id = mcards[0].user_id; r.Name = mcards[0].Name; r.user_id = mcards[0].user_id; r.ConfigData = mcards[0].ConfigData; break; } } else { var m = mrel.Find(g => r.Type == g.Type && memberId == g.user_id); if (m != null) { r.user_id = m.user_id; r.Name = m.Name; r.Flags = m.Flags; r.ConfigData = m.ConfigData; } } } }