Ejemplo n.º 1
0
        //[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.AddUserToGroups(listAppUserGroup, newAppUser.Id);
                        _appGroupService.Save();

                        await _userManager.UpdateAsync(newAppUser);

                        var usertest = await _userManager.FindByIdAsync(newAppUser.Id);

                        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));
            }
        }
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, ApplicationUserViewModel appUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var appUser = await _userManager.FindByIdAsync(appUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(appUserViewModel);
                    var result = await _userManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        //delete all role into user
                        var listGroup = _appGroupService.GetListGroupByUserId(appUser.Id);
                        foreach (var group in listGroup)
                        {
                            var listOldRole = _appRoleService.GetListRoleByGroupId(group.ID);
                            foreach (var role in listOldRole)
                            {
                                await _userManager.RemoveFromRoleAsync(appUser.Id, role.Name);
                            }
                        }
                        //add new role into user
                        var listAppUserGroup = new List <ApplicationUserGroup>();
                        foreach (var newGroup in appUserViewModel.Groups)
                        {
                            listAppUserGroup.Add(new ApplicationUserGroup
                            {
                                GroupId = newGroup.ID,
                                UserId  = appUser.Id
                            });
                            var listRole = _appRoleService.GetListRoleByGroupId(newGroup.ID);
                            foreach (var newRole in listRole)
                            {
                                //await _userManager.RemoveFromRoleAsync(appUser.Id, role.Name);
                                //await _userManager.RemoveFromRoleAsync(appUser.Id, newRole.Name);
                                await _userManager.AddToRoleAsync(appUser.Id, newRole.Name);
                            }
                        }
                        _appGroupService.AddUserToGroups(listAppUserGroup, appUser.Id);
                        _appGroupService.Save();
                        return(request.CreateResponse(HttpStatusCode.OK, appUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.OK, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dx)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dx.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Create([FromBody] ApplicationUserViewModel applicationUserViewModel)
        {
            //    await roleManager.AddClaimAsync(adminRole, new Claim(CustomClaimTypes.Permission, "projects.update"));
            //       var newAppUser = new ApplicationUser();
            //  newAppUser.UpdateUser(applicationUserViewModel);
            //  ApplicationUser newAppUser = PropertyCopy.Copy<ApplicationUser, ApplicationUserViewModel>(applicationUserViewModel);


            IActionResult actionResult = new ObjectResult(false);
            GenericResult addResult    = null;

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            try
            {
                var userByEmail = await _userManager.FindByEmailAsync(applicationUserViewModel.Email);

                if (userByEmail != null)
                {
                    addResult = new GenericResult()
                    {
                        Succeeded = false,
                        Message   = "Email đã tồn tại"
                    };
                    actionResult = new ObjectResult(addResult);
                    return(actionResult);
                }
                var userByUserName = await _userManager.FindByNameAsync(applicationUserViewModel.UserName);

                if (userByUserName != null)
                {
                    addResult = new GenericResult()
                    {
                        Succeeded = false,
                        Message   = "Username đã tồn tại"
                    };
                    actionResult = new ObjectResult(addResult);
                    return(actionResult);
                }


                ApplicationUser newAppUser = Mapper.Map <ApplicationUserViewModel, ApplicationUser>(applicationUserViewModel);
                newAppUser.Id            = Guid.NewGuid().ToString();
                newAppUser.PARENT_ID     = null;
                newAppUser.RECORD_STATUS = "1";
                newAppUser.AUTH_STATUS   = "U";
                newAppUser.APPROVE_DT    = null;
                newAppUser.EDIT_DT       = null;
                newAppUser.PASSWORD      = null;
                newAppUser.CREATE_DT     = DateTime.Now.Date;
                newAppUser.PARENT_ID     = _userManager.GetUserId(User);

                var result = await _userManager.CreateAsync(newAppUser, applicationUserViewModel.PASSWORD);

                if (result.Succeeded)
                {
                    var listAppUserGroup = new List <ApplicationUserGroup>();
                    var groups           = applicationUserViewModel.Groups.Where(xy => xy.Check).ToList();
                    foreach (var group in groups)
                    {
                        listAppUserGroup.Add(new ApplicationUserGroup()
                        {
                            GroupId = group.ID,
                            UserId  = newAppUser.Id
                        });

                        var listRole = _appRoleService.GetListRoleByGroupId(group.ID).ToList();

                        List <string> list = new List <string>();
                        foreach (var role in listRole)
                        {
                            list.Add(role.Name);
                        }
                        foreach (var item in list)
                        {
                            await _userManager.RemoveFromRoleAsync(newAppUser, item);

                            if (!await _userManager.IsInRoleAsync(newAppUser, item))
                            {
                                IdentityResult result2 = await _userManager.AddToRoleAsync(newAppUser, item);

                                if (!result2.Succeeded)
                                {
                                    AddErrorsFromResult(result);
                                }
                            }
                        }
                    }

                    _appGroupService.AddUserToGroups(listAppUserGroup, newAppUser.Id);
                    _appGroupService.Save();


                    //DEFACEWEBSITEContext context = new DEFACEWEBSITEContext();
                    //string pass = MD5Encoder.MD5Hash(user.Password);
                    XElement xmldata = new XElement(new XElement("Root"));
                    XElement x       = new XElement("Domain", new XElement("DOMAIN", applicationUserViewModel.Domain),
                                                    new XElement("DESCRIPTION", applicationUserViewModel.DomainDesc));
                    xmldata.Add(x);

                    string command     = $"dbo.Users_Ins @p_USERNAME = '******', @p_FULLNAME= N'{newAppUser.FULLNAME}',@p_PASSWORD = '******',@p_EMAIL = '{newAppUser.Email}',@p_PHONE = {newAppUser.PHONE},@p_PARENT_ID = '',@p_DESCRIPTION = N'{newAppUser.DESCRIPTION}',@p_RECORD_STATUS = '{newAppUser.RECORD_STATUS}',@p_AUTH_STATUS = '{newAppUser.AUTH_STATUS}',@p_CREATE_DT = '{DateTime.Now.Date}',@p_APPROVE_DT = '{newAppUser.APPROVE_DT}' ,@p_EDIT_DT= '{newAppUser.EDIT_DT}' ,@p_MAKER_ID ='{newAppUser.MAKER_ID}',@p_CHECKER_ID = '{newAppUser.CHECKER_ID}',@p_EDITOR_ID = '{newAppUser.EDITOR_ID}',@DOMAIN =N'{xmldata}'";
                    var    resultStore = _context.Database.ExecuteSqlCommand(command);
                    if (resultStore == -1)
                    {
                        addResult = new GenericResult()
                        {
                            Succeeded = false,
                            Message   = "Thêm domain thất bại"
                        };
                    }

                    addResult = new GenericResult()
                    {
                        Succeeded = true,
                        Message   = "Thêm dữ liệu thành công"
                    };
                }
                else
                {
                    addResult = new GenericResult()
                    {
                        Succeeded = false,
                        Message   = "Mật khẩu đơn giản (Hãy thử lại với chữ, số, ký tự đặc biệt)"
                    };
                }
            }

            catch (Exception ex)
            {
                addResult = new GenericResult()
                {
                    Succeeded = false,
                    Message   = "Tên không được trùng"
                };
                _loggingRepository.Add(new Error()
                {
                    Message = ex.Message, StackTrace = ex.StackTrace, DateCreated = DateTime.Now
                });
                _loggingRepository.Commit();
            }


            actionResult = new ObjectResult(addResult);
            return(actionResult);
        }
Ejemplo n.º 4
0
        public async Task <HttpResponseMessage> Create(HttpRequestMessage request, ApplicationUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var newAppUser = new ApplicationUser();          // tạo mới 1 user
                newAppUser.UpdateUser(applicationUserViewModel); // map đối tượng viewmodel và model
                try
                {
                    newAppUser.Id = Guid.NewGuid().ToString();
                    var result = await _userManager.CreateAsync(newAppUser, applicationUserViewModel.Password); // tạo mới user

                    if (result.Succeeded)
                    {
                        // add user vào group
                        var listAppUserGroup = new List <ApplicationUserGroup>();
                        foreach (var group in applicationUserViewModel.Groups)
                        {
                            listAppUserGroup.Add(new ApplicationUserGroup()
                            {
                                GroupId = group.ID,
                                UserId  = newAppUser.Id
                            });
                            //add role cho 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.AddUserToGroups(listAppUserGroup, newAppUser.Id);

                        try
                        {
                            _appGroupService.Save();
                        }
                        catch (DbEntityValidationException e)
                        {
                            foreach (var eve in e.EntityValidationErrors)
                            {
                                Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                  eve.Entry.Entity.GetType().Name, eve.Entry.State);
                                foreach (var ve in eve.ValidationErrors)
                                {
                                    Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                                      ve.PropertyName, ve.ErrorMessage);
                                }
                            }
                            throw;
                        }



                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                // bắt lỗi trùng tên
                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));
            }
        }
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, ApplicationUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser();
                if (String.IsNullOrEmpty(model.Id))
                {
                    var tempName = await _userManager.FindByNameAsync(model.UserName);

                    var tempEmail = await _userManager.FindByEmailAsync(model.Email);

                    if (tempName != null)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, "Tài khoản này đã tồn tại"));
                    }
                    if (tempEmail != null)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, "Email này đã tồn tại"));
                    }
                    if (String.IsNullOrEmpty(model.Avatar) || model.Avatar.Contains("images_none.png"))
                    {
                        model.Avatar = "~/Content/admin/img/images_none.png";
                    }
                    else
                    {
                        byte[] imageBytes = Convert.FromBase64String(model.Avatar.Split(',')[1]);
                        //Save the Byte Array as Image File.
                        string fileName = StringHelper.ToUnsignString(model.UserName) + "-" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".png";
                        string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/Content/admin/img/avatar"), fileName);
                        System.IO.File.WriteAllBytes(filePath, imageBytes);
                        model.Avatar = "~/Content/admin/img/avatar/" + fileName;
                    }
                    try
                    {
                        user.Id             = Guid.NewGuid().ToString();
                        user.Avatar         = model.Avatar;
                        user.Email          = model.Email;
                        user.Address        = model.Address;
                        user.FullName       = model.FullName;
                        user.Gender         = model.Gender;
                        user.PhoneNumber    = model.PhoneNumber;
                        user.UserName       = model.UserName;
                        user.ProvinceId     = model.ProvinceId;
                        user.DisctrictId    = model.DistrictId;
                        user.EmailConfirmed = true;
                        user.LockoutEnabled = model.LockoutEnabled;
                        var result = await _userManager.CreateAsync(user, model.Password);

                        if (result.Succeeded)
                        {
                            var listAppUserGroup = new List <ApplicationUserGroup>();

                            foreach (var group in model.Groups)
                            {
                                listAppUserGroup.Add(new ApplicationUserGroup()
                                {
                                    GroupId = group.Id,
                                    UserId  = user.Id
                                });
                                //add role to user
                                var listRole = _appRoleService.GetListRoleByGroupId(group.Id);
                                foreach (var role in listRole)
                                {
                                    await _userManager.RemoveFromRoleAsync(user.Id, role.Name);

                                    await _userManager.AddToRoleAsync(user.Id, role.Name);
                                }
                            }
                            _appGroupService.AddUserToGroups(listAppUserGroup, user.Id);
                            _appGroupService.Save();
                            return(request.CreateResponse(HttpStatusCode.Created, model));
                        }
                        else
                        {
                            return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                        }
                    }
                    catch (Exception ex)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                    }
                }
                else
                {
                    user = await _userManager.FindByIdAsync(model.Id);

                    ApplicationUser tempName = await _userManager.FindByNameAsync(model.UserName);

                    ApplicationUser tempEmail = await _userManager.FindByEmailAsync(model.Email);

                    if (tempName != null && tempName.UserName != model.UserName)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, "Tài khoản này đã tồn tại"));
                    }
                    if (tempEmail != null && tempEmail.Email != model.Email)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, "Email này đã tồn tại"));
                    }
                    if (String.IsNullOrEmpty(model.Avatar) || model.Avatar.Contains("images_none.png"))
                    {
                        user.Avatar = "~/Content/admin/img/avatar";
                    }
                    else if (!model.Avatar.StartsWith("~/Content") && user.Avatar != model.Avatar)
                    {
                        byte[] imageBytes = Convert.FromBase64String(model.Avatar.Split(',')[1]);
                        //Save the Byte Array as Image File.
                        string fileName = StringHelper.ToUnsignString(user.UserName) + "-" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".png";
                        string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/Content/admin/img/avatar"), fileName);
                        System.IO.File.WriteAllBytes(filePath, imageBytes);
                        model.Avatar = "~/Content/admin/img/avatar/" + fileName;
                    }
                    user.Avatar         = model.Avatar;
                    user.Email          = model.Email;
                    user.FullName       = model.FullName;
                    user.Address        = model.Address;
                    user.Gender         = model.Gender;
                    user.PhoneNumber    = model.PhoneNumber;
                    user.UserName       = model.UserName;
                    user.ProvinceId     = model.ProvinceId;
                    user.LockoutEnabled = model.LockoutEnabled;
                    user.DisctrictId    = model.DistrictId;
                    //    user.ApplicationGroupId = CommonConstants.Administrator;

                    var result = await _userManager.UpdateAsync(user);

                    if (result.Succeeded)
                    {
                        var listAppUserGroup = new List <ApplicationUserGroup>();

                        foreach (var group in model.Groups)
                        {
                            listAppUserGroup.Add(new ApplicationUserGroup()
                            {
                                GroupId = group.Id,
                                UserId  = user.Id // model có giá trị đâu mà gán?
                            });
                            //add role to user
                            var listRole = _appRoleService.GetListRoleByGroupId(group.Id);
                            foreach (var role in listRole)
                            {
                                await _userManager.RemoveFromRoleAsync(user.Id, role.Name);

                                await _userManager.AddToRoleAsync(user.Id, role.Name);
                            }
                        }
                        _appGroupService.AddUserToGroups(listAppUserGroup, user.Id);
                        _appGroupService.Save();
                        return(request.CreateResponse(HttpStatusCode.Created, model));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }