Example #1
0
        public IActionResult Index()
        {
            try
            {
                int    DomainId = 0;
                string Password = "";
                // var items = _domainRepository.GetAsQueryable(x => HasAccess1(x.Id)).ToList();
                var items = _domainRepository.GetAll().ToList();
                var model = _mapper.Map <IEnumerable <DomainSetting>, IEnumerable <DomainSettingViewModel> >(items);

                DomainSettingViewModel m = new DomainSettingViewModel();

                foreach (var x in model)
                {
                    m.Id       = x.Id;
                    m.Server   = x.Server;
                    m.Title    = x.Title;
                    m.IsActive = x.IsActive;
                    m.Password = x.Password;
                }
                IQueryable <DomainSetting> domainSetting = _context.DomainSetting.Where(w => w.Title != "کاربران سیستمی");
                var domain = domainSetting.Select(w => new DomainSetting
                {
                    Id       = w.Id,
                    Server   = w.Server,
                    Title    = w.Title,
                    UserName = w.UserName,
                    Password = w.Password
                }).FirstOrDefault();
                if (domain != null)
                {
                    string cipherText = "";
                    cipherText = _encriptdescriptStringRepository.DecryptString(domain.Password);
                    DomainId   = domain.Id;
                    Password   = cipherText;
                    bool ping = _pingLdap.Ping(DomainId, Password);
                    if (ping)
                    {
                        if (m.Title != "کاربران سیستمی")
                        {
                            m.IsActive = true;
                        }
                        foreach (var y in model)
                        {
                            if (y.Title != "کاربران سیستمی")
                            {
                                y.IsActive = m.IsActive;
                            }
                        }
                    }
                    return(View(model));
                }
                else
                {
                    return(View(model));
                }
            }
            catch (Exception e)
            {
                Log.Error(e, e.Message);
                return(View("~/Views/Shared/Error.cshtml", new ErrorViewModel {
                    RequestId = e.Message
                }));
            }
        }
        //[Authorize(Roles = "Admin")]
        // [ValidateAntiForgeryToken]
        public async Task <IActionResult> Create(DomainUserViewModel model)
        {
            try
            {
                model.message   = "";
                model.IsSuccess = false;
                bool ping = _pingLdap.Ping(model.DomainId, model.UserName);
                if (ping)
                {
                    List <DomainUser>      users            = _findAllADUsers.FindAll(model.DomainId, model.UserName);
                    ApplicationUser        applicationUser  = new ApplicationUser();
                    List <ApplicationUser> applicationUsers = new List <ApplicationUser>();
                    IdentityResult         result           = new IdentityResult();

                    if (users.Count > 0)
                    {
                        foreach (var user in users)
                        {
                            applicationUser.UserName             = user.UserName + "@" + user.dcString.Split("dc=")[1].Replace(",", ".") + user.dcString.Split(",dc=")[1];
                            applicationUser.FirstName            = user.FirstName;
                            applicationUser.LastName             = user.LastName;
                            applicationUser.Email                = user.Email;
                            applicationUser.EmailConfirmed       = true;
                            applicationUser.PhoneNumberConfirmed = true;
                            applicationUser.PhoneNumber          = "-";
                            applicationUser.Mobile               = "-";
                            applicationUser.AddedDate            = DateTime.Now;
                            applicationUsers.Add(applicationUser);
                        }

                        if (ModelState.IsValid)
                        {
                            byte[] salt = new byte[128 / 8];
                            model.PasswordHash = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                                                                            password: "******",
                                                                            salt: salt,
                                                                            prf: KeyDerivationPrf.HMACSHA1,
                                                                            iterationCount: 10000,
                                                                            numBytesRequested: 256 / 8));

                            foreach (var applicationUser1 in applicationUsers)
                            {
                                try
                                {
                                    result = await _userManager.CreateAsync(applicationUser1, model.PasswordHash);

                                    if (result.Succeeded)
                                    {
                                        //if (await _roleManager.FindByNameAsync(model.RoleType.ToString()) == null)
                                        //{

                                        //    await _roleManager.CreateAsync(new ApplicationRole
                                        //    {
                                        //        Name = model.RoleType.ToString(),
                                        //        NormalizedName = model.RoleType.ToString().ToUpper()
                                        //    });
                                        //}

                                        //await _userManager.AddToRoleAsync(applicationUser, model.RoleType.ToString());


                                        var systemRoles = _roleManager.Roles.ToList().Where(x => x.Id == model.RoleId);

                                        var roles = systemRoles.Select(x => x.Name).FirstOrDefault();
                                        if (roles != null)
                                        {
                                            await _userManager.AddToRoleAsync(applicationUser1, roles.ToString());
                                        }

                                        if (Request.Form.Keys.Contains("SaveAndReturn"))
                                        {
                                            model.IsSuccess = true;
                                            model.message   = "Sucsses";
                                            return(View(model));
                                        }
                                    }

                                    else
                                    {
                                        var errors = result.Errors.ToList();
                                        if (errors.Count > 0)
                                        {
                                            foreach (var error in errors)
                                            {
                                                AddErrors(result);
                                            }
                                        }

                                        else
                                        {
                                            model.IsSuccess = false;
                                            model.message   = "Error";
                                            return(View(model));
                                        }
                                    }
                                }
                                catch (Exception e)
                                {
                                    var a = e.Message;
                                }
                            }
                        }
                    }

                    else
                    {
                        var errors = result.Errors.ToList();
                        if (errors.Count > 0)
                        {
                            foreach (var error in errors)
                            {
                                AddErrors(result);
                            }
                        }

                        else
                        {
                            model.IsSuccess = false;
                            model.message   = "Error";
                            return(View(model));
                        }
                    }
                }

                else
                {
                    ModelState.AddModelError("", "دامین غیر فعال است.!");
                }


                return(View(model));
            }
            catch (Exception e)
            {
                Log.Error(e, e.Message);
                return(View("~/Views/Shared/Error.cshtml", new ErrorViewModel {
                    RequestId = e.Message
                }));
            }
        }