public Task ReplaceCodesAsync(TUser user, IEnumerable <string> recoveryCodes, CancellationToken cancellationToken) { var task = new Task(() => { var code = String.Join(";", recoveryCodes); var newItem = new SDHCIdentityUserToken(); newItem.Id = Guid.NewGuid().ToString(); newItem.Value = code; newItem.UserId = user.Id; newItem.Name = "RecoveryCodes"; newItem.LoginProvider = "[AspNetUserStore]"; db.Add <SDHCIdentityUserToken>(newItem, out var response); }); task.Start(); return(task); }
public Task SetTokenAsync(TUser user, string loginProvider, string name, string value, CancellationToken cancellationToken) { var task = new Task(() => { var tokens = db.Where <SDHCIdentityUserToken>( b => b.UserId == user.Id && b.LoginProvider == loginProvider && b.Name == name ).ToList(); if (tokens.Count < 0) { var token = new SDHCIdentityUserToken() { Id = Guid.NewGuid().ToString(), FullType = typeof(SDHCIdentityUserToken).FullName, LoginProvider = loginProvider, Name = name, UserId = user.Id, Value = value, }; db.Add <SDHCIdentityUserToken>(token, out var r); return; } if (tokens.Count > 0) { var current = tokens[0]; current.Value = value; db.Update <SDHCIdentityUserToken>(current, current.Id, out var response); } if (tokens.Count > 1) { var more = tokens.Where(b => tokens.IndexOf(b) >= 1).Select(b => new UpdateEntity <SDHCIdentityUserToken>() { Object = b, Key = b.Id }).ToList(); db.Remove <SDHCIdentityUserToken>(more); } }); task.Start(); return(task); }