//[Authorize(Roles = "AddUser")]
        public async Task <HttpResponseMessage> Create(HttpRequestMessage request, ApplicationUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var newAppUser = new ApplicationUser();
                newAppUser.UpdateUser(applicationUserViewModel);
                try
                {
                    newAppUser.Id = Guid.NewGuid().ToString();
                    var result = await _userManager.CreateAsync(newAppUser, applicationUserViewModel.Password);

                    if (result.Succeeded)
                    {
                        var listAppUserGroup = new List <ApplicationUserGroup>();
                        foreach (var group in applicationUserViewModel.Groups)
                        {
                            listAppUserGroup.Add(new ApplicationUserGroup()
                            {
                                GroupId = group.ID,
                                UserId  = newAppUser.Id
                            });
                            //add role to user
                            var listRole = _appRoleService.GetListRoleByGroupId(group.ID);
                            foreach (var role in listRole)
                            {
                                await _userManager.RemoveFromRoleAsync(newAppUser.Id, role.Name);

                                await _userManager.AddToRoleAsync(newAppUser.Id, role.Name);
                            }
                        }
                        _appGroupService.AddUserToGroup(listAppUserGroup, newAppUser.Id);
                        _appGroupService.Save();


                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
                catch (Exception ex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var userByEmail = await _userManager.FindByEmailAsync(model.Email);

                if (userByEmail != null)
                {
                    ModelState.AddModelError("email", "Email đã tồn tại");
                    ViewData["ErrorMsg"] = "Có lỗi xảy ra!";
                    return(View(model));
                }
                var userByUsername = await _userManager.FindByNameAsync(model.UserName);

                if (userByUsername != null)
                {
                    ModelState.AddModelError("username", "Tài khoản đã tồn tại");
                    ViewData["ErrorMsg"] = "Có lỗi xảy ra!";
                    return(View(model));
                }
                var user = new ApplicationUser()
                {
                    UserName       = model.UserName,
                    Email          = model.Email,
                    EmailConfirmed = true,
                    Birthday       = DateTime.Now,
                    FullName       = model.FullName,
                    PhoneNumber    = model.PhoneNumber,
                    Address        = model.Address
                };
                await _userManager.CreateAsync(user, model.Password);

                var groupId  = _appGroupService.AddUserToGroup(user.Id);
                var listRole = _appRoleService.GetListRoleByGroupId(groupId);
                _appRoleService.Save();
                foreach (var role in listRole)
                {
                    await _userManager.RemoveFromRoleAsync(user.Id, role.Name);

                    await _userManager.AddToRoleAsync(user.Id, role.Name);
                }

                ViewData["SuccessMsg"] = "Đăng ký thành công!";
                MailHelper.SendMail(model.Email, "Đăng ký tài khoản thành công!", "Chúc mừng bạn đã trở thành thành viên chính thức của website chúng tôi!");
            }
            else
            {
                ViewData["ErrorMsg"] = "Có lỗi xảy ra!";
            }

            return(View(model));
        }