Example #1
0
        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;
        }
Example #2
0
        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);
        }