public async Task<ActionResult> Register(RegisterViewModel model, HttpPostedFileBase profileImage)
{
string imagePath = null;
if(profileImage != null && profileImage.ContentLength > 0)
{
var imageFileName = Path.GetFileName(profileImage.FileName);
imagePath = FileHelper.NextAvailableFilename(Path.Combine(Server.MapPath(ConfigurationManager.AppSettings["UsersImgPath"]), imageFileName));
profileImage.SaveAs(imagePath);
imagePath = Path.GetFileName(imagePath);
}
if (ModelState.IsValid)
{
var checkUserEmail = userMgr.ReadUser(model.Email);
if(checkUserEmail != null)
{
ModelState.AddModelError("Email", "Email is already in use");
return View(model);
}
var user = userMgr.CreateUser(model.Email, model.LastName, model.FirstName, model.NickName, imagePath);
var appUser = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(appUser, model.Password);
if (result.Succeeded)
{
UserManager.AddToRole(appUser.Id, "User");
await SignInManager.SignInAsync(appUser, isPersistent: false, rememberBrowser: false);
return RedirectToAction("Index", "Home");
}
userMgr.DeleteUser(user.Id);
AddErrors(result);
ModelState.AddModelError("Password", "Password must contain a capital and a number");
}
// If we got this far, something failed, redisplay form
return View(model);
}