I am using this sample project (https://github.com/imranbaloch/ASPNETIdentityWithOnion) as my application architecture, in this sample the core is completly decoplied from the i
I'm using this framework, no need to have a link in every entity To get the userID reference, i added a property UserIDBy in BaseEntity so every entity will inherit it.
public abstract class BaseEntity
{
public int Id { get; set; }
public string UserIDBy { get; set; }
}
Next, in the web project, there is already an extension method called GetUserId(this IIdentity identity)
in IdentityExtensions.cs
, so to stock the UserIDBy in every Create and Edit action result:
Create Action Result :
// POST: /Region/Create
[HttpPost]
public async Task Create([Bind(Include = "RegionName")] Region region)
{
if (ModelState.IsValid)
{
// TODO: Add insert logic here
var id = User.Identity.GetUserId();
region.UserIDBy = id.ToString();
await _regionService.AddAsync(region);
return Json(new { success = true });
}
return PartialView("_Create", region);
}
Edit Action Result :
//// POST: /Region/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "id,RegionName")] Region region)
{
if (ModelState.IsValid)
{
var id = User.Identity.GetUserId();
region.UserIDBy = id.ToString();
_regionService.Update(region);
return Json(new { success = true });
}
return PartialView("_Edit", region);
}
Dont forget to import it :
using Myapp.Web.Extensions;