public async Task <IActionResult> Edit(int id, [Bind("Id,IdentityResourceId,Type")] IdentityClaims identityClaims) { if (id != identityClaims.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(identityClaims); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!IdentityClaimsExists(identityClaims.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(identityClaims)); }
public async Task <IActionResult> Create([Bind("Id,IdentityResourceId,Type")] IdentityClaims identityClaims) { if (ModelState.IsValid) { _context.Add(identityClaims); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(identityClaims)); }
public static string MapIdentityClaims(this IdentityClaims client) { return(client.Type); }
public async Task <ActionResult> PostAsync() { string input = null; // If not data came in, then return if (this.Request.Body == null) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is null", HttpStatusCode.Conflict))); } // Read the input claims from the request body using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8)) { input = await reader.ReadToEndAsync(); } // Check input content value if (string.IsNullOrEmpty(input)) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is empty", HttpStatusCode.Conflict))); } // Convert the input string into IdentityClaims object IdentityClaims inputClaims = IdentityClaims.Parse(input); if (inputClaims == null) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Can not deserialize input claims", HttpStatusCode.Conflict))); } if (string.IsNullOrEmpty(inputClaims.signInName)) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'signInName' is null or empty", HttpStatusCode.Conflict))); } if (string.IsNullOrEmpty(inputClaims.password)) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'password' is null or empty", HttpStatusCode.Conflict))); } // Create or reference an existing table CloudTable table = await Common.CreateTableAsync("identities"); var identityEntity = new IdentityEntity(inputClaims.signInName); identityEntity.displayName = inputClaims.displayName; identityEntity.password = inputClaims.password; identityEntity.givenName = inputClaims.givenName; identityEntity.surName = inputClaims.surName; try { // Create the InsertOrReplace table operation TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(identityEntity); // Execute the operation. TableResult result = await table.ExecuteAsync(insertOrMergeOperation); } catch (StorageException e) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel(e.Message, HttpStatusCode.Conflict))); } return(Ok()); }
private async Task CleanupIdentityResourceAsync(IdentityResource entity, CancellationToken cancellationToken = default(CancellationToken)) { var identityClaims = await IdentityClaims.Where(x => x.IdentityResource.Id == entity.Id).ToListAsync(); IdentityClaims.RemoveRange(identityClaims); }
public async Task <ActionResult> PostAsync() { string input = null; // If not data came in, then return if (this.Request.Body == null) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is null", HttpStatusCode.Conflict))); } // Read the input claims from the request body using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8)) { input = await reader.ReadToEndAsync(); } // Check input content value if (string.IsNullOrEmpty(input)) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Request content is empty", HttpStatusCode.Conflict))); } // Convert the input string into IdentityClaims object IdentityClaims inputClaims = IdentityClaims.Parse(input); if (inputClaims == null) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Can not deserialize input claims", HttpStatusCode.Conflict))); } if (string.IsNullOrEmpty(inputClaims.signInName)) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'signInName' is null or empty", HttpStatusCode.Conflict))); } if (string.IsNullOrEmpty(inputClaims.password)) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("User 'password' is null or empty", HttpStatusCode.Conflict))); } // Create or reference an existing table CloudTable table = await Common.CreateTableAsync("identities"); try { TableOperation retrieveOperation = TableOperation.Retrieve <IdentityEntity>("Account", inputClaims.signInName); TableResult result = await table.ExecuteAsync(retrieveOperation); IdentityEntity identityEntity = result.Result as IdentityEntity; if (identityEntity == null) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Account not found", HttpStatusCode.Conflict))); } if (inputClaims.password != identityEntity.password) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel("Bad username or password", HttpStatusCode.Conflict))); } IdentityClaims outputClaims = new IdentityClaims(); outputClaims.signInName = inputClaims.signInName; outputClaims.displayName = identityEntity.displayName; outputClaims.givenName = identityEntity.givenName; outputClaims.surName = identityEntity.surName; return(Ok(outputClaims)); } catch (StorageException e) { return(StatusCode((int)HttpStatusCode.Conflict, new B2CResponseModel(e.Message, HttpStatusCode.Conflict))); } }