private ApplicationUser createASPUser(RegisterUserView userView) { //User management: var userContext = new ApplicationDbContext(); var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(userContext)); var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(userContext)); //Create User Role: string roleName = "User"; //Check to see if Role Exist, if not create it: if (!roleManager.RoleExists(roleName)) { roleManager.Create(new IdentityRole(roleName)); } //Create the ASP NET User: var userASP = new ApplicationUser { UserName = userView.userName, Email = userView.userName, PhoneNumber = userView.Phone, }; userManager.Create(userASP, userView.Password); //Add user to role: userASP = userManager.FindByName(userView.userName); userManager.AddToRole(userASP.Id, "User"); return userASP; }
public async Task<ActionResult> Register(RegisterUserView userView) { if (ModelState.IsValid) { //Upload Image: string path = string.Empty; string picture = string.Empty; if (userView.Photo != null) { picture = Path.GetFileName(userView.Photo.FileName); path = Path.Combine(Server.MapPath("~/Content/Photos"), picture); userView.Photo.SaveAs(path); using (MemoryStream ms = new MemoryStream()) { userView.Photo.InputStream.CopyTo(ms); byte[] array = ms.GetBuffer(); } } //Save record: var user = new User { Address = userView.Address, FirstName = userView.FirstName, Grade = userView.Grade, Group = userView.Group, LastName = userView.LastName, Phone = userView.Phone, Photo = string.IsNullOrEmpty(picture) ? string.Empty : string.Format("~/Content/Photos/{0}", picture), userName = userView.userName }; var db = new DemocracyContext(); db.Users.Add(user); try { db.SaveChanges(); var userASP = this.createASPUser(userView); await SignInManager.SignInAsync(userASP, isPersistent: false, rememberBrowser: false); return RedirectToAction("Index", "Home"); } catch (Exception ex) { if (ex.InnerException != null && ex.InnerException.InnerException != null && ex.InnerException.InnerException.Message.Contains("userNameIndex")) { ModelState.AddModelError(string.Empty,"The Email has already used for another User."); } else { ModelState.AddModelError(string.Empty, ex.Message); } return View(userView); } } // If we got this far, something failed, redisplay form return View(userView); }