public async Task <IActionResult> Edit(Guid id, [Bind("Id,CredentialSchemaId,UserId")] ClaimDefinition claimDefinition) { if (id != claimDefinition.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(claimDefinition); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ClaimDefinitionExists(claimDefinition.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["CredentialSchemaId"] = new SelectList(_context.CredentialSchemas, "Id", "Attributes", claimDefinition.CredentialSchemaId); ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", claimDefinition.UserId); return(View(claimDefinition)); }
public async Task <ClaimDefinition> CreateClaimDefinitionAsync(string userId, Guid credentialSchemaId) { var schema = await _dbContext.CredentialSchemas.Include(p => p.User).FirstOrDefaultAsync(p => p.Id == credentialSchemaId); var schemaCreatorWalletData = await GetDefaultWalletDataAsync(schema.UserId); var walletData = await GetDefaultWalletDataAsync(userId); var wallet = await Wallet.OpenWalletAsync(walletData.Name, null, null); try { using (var pool = await PoolUtils.CreateAndOpenPoolLedgerAsync()) { var schemaData = JsonConvert.SerializeObject(new { name = schema.Name, version = schema.Version }); var getSchemaRequest = await Ledger.BuildGetSchemaRequestAsync(walletData.Did, schemaCreatorWalletData.Did, schemaData); var getSchemaResponse = await Ledger.SubmitRequestAsync(pool, getSchemaRequest); var schemaValue = JObject.Parse(getSchemaResponse).GetValue("result"); var claimDefJson = await AnonCreds.IssuerCreateAndStoreClaimDefAsync(wallet, walletData.Did, schemaValue.ToString(), "CL", false); var claimDef = JObject.Parse(claimDefJson); var claimDefRequest = await Ledger.BuildClaimDefTxnAsync(walletData.Did, claimDef.Value <int>("ref"), claimDef.Value <string>("signature_type"), claimDef.GetValue("data").ToString()); var result = await Ledger.SignAndSubmitRequestAsync(pool, wallet, walletData.Did, claimDefRequest); var claimDefinition = new ClaimDefinition { Id = Guid.NewGuid(), CredentialSchemaId = credentialSchemaId, UserId = userId }; _dbContext.ClaimDefinitions.Add(claimDefinition); await _dbContext.SaveChangesAsync(); return(claimDefinition); } } catch (Exception ex) { throw; } finally { await wallet.CloseAsync(); } }
public async Task <IActionResult> Create([Bind("CredentialSchemaId")] ClaimDefinition claimDefinition) { if (ModelState.IsValid) { await _identityService.CreateClaimDefinitionAsync(_userManager.GetUserId(User), claimDefinition.CredentialSchemaId); return(RedirectToAction(nameof(Index))); } ViewData["CredentialSchemaId"] = new SelectList(_context.CredentialSchemas, "Id", "Attributes", claimDefinition.CredentialSchemaId); ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", claimDefinition.UserId); return(View(claimDefinition)); }