Add validation for person twitter handle.

This commit is contained in:
2019-06-30 21:00:04 +01:00
parent 2a31a164db
commit 0fabe49a14
3 changed files with 49 additions and 60 deletions

View File

@@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query;
namespace cicm_web.Areas.Admin.Controllers
{
@@ -12,7 +13,7 @@ namespace cicm_web.Areas.Admin.Controllers
[Authorize]
public class PeopleController : Controller
{
private readonly cicmContext _context;
readonly cicmContext _context;
public PeopleController(cicmContext context)
{
@@ -22,25 +23,17 @@ namespace cicm_web.Areas.Admin.Controllers
// GET: People
public async Task<IActionResult> Index()
{
var cicmContext = _context.People.Include(p => p.CountryOfBirth);
IIncludableQueryable<Person, Iso31661Numeric> cicmContext = _context.People.Include(p => p.CountryOfBirth);
return View(await cicmContext.ToListAsync());
}
// GET: People/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
if(id == null) return NotFound();
var person = await _context.People
.Include(p => p.CountryOfBirth)
.FirstOrDefaultAsync(m => m.Id == id);
if (person == null)
{
return NotFound();
}
Person person = await _context.People.Include(p => p.CountryOfBirth).FirstOrDefaultAsync(m => m.Id == id);
if(person == null) return NotFound();
return View(person);
}
@@ -57,32 +50,32 @@ namespace cicm_web.Areas.Admin.Controllers
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Name,Surname,BirthDate,DeathDate,Webpage,Twitter,Facebook,Photo,CountryOfBirthId,Id")] Person person)
public async Task<IActionResult> Create(
[Bind("Name,Surname,BirthDate,DeathDate,Webpage,Twitter,Facebook,Photo,CountryOfBirthId,Id")]
Person person)
{
if (ModelState.IsValid)
if(ModelState.IsValid)
{
_context.Add(person);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["CountryOfBirthId"] = new SelectList(_context.Iso31661Numeric, "Id", "Name", person.CountryOfBirthId);
ViewData["CountryOfBirthId"] =
new SelectList(_context.Iso31661Numeric, "Id", "Name", person.CountryOfBirthId);
return View(person);
}
// GET: People/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
if(id == null) return NotFound();
var person = await _context.People.FindAsync(id);
if (person == null)
{
return NotFound();
}
ViewData["CountryOfBirthId"] = new SelectList(_context.Iso31661Numeric, "Id", "Name", person.CountryOfBirthId);
Person person = await _context.People.FindAsync(id);
if(person == null) return NotFound();
ViewData["CountryOfBirthId"] =
new SelectList(_context.Iso31661Numeric, "Id", "Name", person.CountryOfBirthId);
return View(person);
}
@@ -91,70 +84,64 @@ namespace cicm_web.Areas.Admin.Controllers
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Name,Surname,BirthDate,DeathDate,Webpage,Twitter,Facebook,Photo,CountryOfBirthId,Id")] Person person)
public async Task<IActionResult> Edit(
int id, [Bind("Name,Surname,BirthDate,DeathDate,Webpage,Twitter,Facebook,Photo,CountryOfBirthId,Id")]
Person person)
{
if (id != person.Id)
{
return NotFound();
}
if(id != person.Id) return NotFound();
if (ModelState.IsValid)
if(ModelState.IsValid)
{
try
{
_context.Update(person);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
catch(DbUpdateConcurrencyException)
{
if (!PersonExists(person.Id))
{
return NotFound();
}
else
{
throw;
}
if(!PersonExists(person.Id)) return NotFound();
throw;
}
return RedirectToAction(nameof(Index));
}
ViewData["CountryOfBirthId"] = new SelectList(_context.Iso31661Numeric, "Id", "Name", person.CountryOfBirthId);
ViewData["CountryOfBirthId"] =
new SelectList(_context.Iso31661Numeric, "Id", "Name", person.CountryOfBirthId);
return View(person);
}
// GET: People/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
if(id == null) return NotFound();
var person = await _context.People
.Include(p => p.CountryOfBirth)
.FirstOrDefaultAsync(m => m.Id == id);
if (person == null)
{
return NotFound();
}
Person person = await _context.People.Include(p => p.CountryOfBirth).FirstOrDefaultAsync(m => m.Id == id);
if(person == null) return NotFound();
return View(person);
}
// POST: People/Delete/5
[HttpPost, ActionName("Delete")]
[HttpPost]
[ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var person = await _context.People.FindAsync(id);
Person person = await _context.People.FindAsync(id);
_context.People.Remove(person);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
private bool PersonExists(int id)
bool PersonExists(int id)
{
return _context.People.Any(e => e.Id == id);
}
[AcceptVerbs("Get", "Post")]
public IActionResult VerifyTwitter(string twitter) =>
twitter?.Length > 0 && twitter[0] == '@' ? Json(true) : Json("Invalid twitter handle.");
}
}
}