Exemple #1
0
        public static async Task <NccUser> CreateSuperAdminUser(
            NccDbContext nccDbContext,
            UserManager <NccUser> userManager,
            RoleManager <NccRole> roleManager,
            SignInManager <NccUser> signInManager,
            WebSiteInfo setupInfo
            )
        {
            CreateCmsDefaultRoles(nccDbContext, roleManager);
            NccRole superAdmin = await roleManager.FindByNameAsync(NccCmsRoles.SuperAdmin);

            if (superAdmin != null)
            {
                var adminUser = new NccUser()
                {
                    Email    = setupInfo.Email,
                    FullName = "Site Super Admin",
                    Name     = "Super Admin",
                    UserName = setupInfo.AdminUserName,
                };

                await userManager.CreateAsync(adminUser, setupInfo.AdminPassword);

                NccUser user = await userManager.FindByNameAsync(setupInfo.AdminUserName);

                await userManager.AddToRoleAsync(user, NccCmsRoles.SuperAdmin);

                return(user);
            }

            return(null);
        }
Exemple #2
0
        private bool CreateUser(int totalCount)
        {
            int currentUserCount = _userManager.Users.Count();

            for (int i = 1; i <= totalCount; i++)
            {
                string userName = "******" + (currentUserCount + i).ToString();
                string password = "******";
                var    user     = new NccUser {
                    UserName = userName, Email = userName + "@site.com"
                };
                var result = _userManager.CreateAsync(user, password).Result;
                if (result.Succeeded)
                {
                    //result = _userManager.AddToRoleAsync(user, GlobalContext.WebSite.NewUserRole).Result;
                    user.Permissions.Add(new NccUserPermission()
                    {
                        User = user, Permission = GetRandomPermission()
                    });
                    //_logger.LogInformation("User created a new account with password.");

                    if (result.Succeeded)
                    {
                        TempData[""] = "Success";
                    }
                }
            }
            return(true);
        }
Exemple #3
0
        public static async Task <NccUser> CreateSuperAdminUser(
            UserManager <NccUser> userManager,
            RoleManager <NccRole> roleManager,
            SignInManager <NccUser> signInManager,
            WebSiteInfo setupInfo
            )
        {
            CreateCmsDefaultRoles(roleManager);
            NccRole admin = await roleManager.FindByNameAsync(NccCmsRoles.Administrator);

            var adminUser = new NccUser()
            {
                Email    = setupInfo.Email,
                FullName = "Site Admin",
                Name     = "Administrator",
                UserName = setupInfo.AdminUserName,
            };

            await userManager.CreateAsync(adminUser, setupInfo.AdminPassword);

            NccUser user = await userManager.FindByNameAsync(setupInfo.AdminUserName);

            await userManager.AddToRoleAsync(user, NccCmsRoles.SuperAdmin);

            return(user);
        }
Exemple #4
0
        public ActionResult CreateEditPost(UserViewModel user, string SendEmail)
        {
            if (ModelState.IsValid)
            {
                if (user.Password == user.ConfirmPassword)
                {
                    var nccUser = new NccUser()
                    {
                        Email = user.Email, FullName = user.FullName, UserName = user.UserName, Mobile = user.Mobile, Status = EntityStatus.Active
                    };
                    var result     = _userManager.CreateAsync(nccUser, user.Password).Result;
                    var roleResult = _userManager.AddToRoleAsync(nccUser, user.Role).Result;

                    if (result.Succeeded && roleResult.Succeeded)
                    {
                        TempData["SuccessMessage"] = "User crate successful.";
                        RedirectToAction("Index");
                    }
                    else
                    {
                        TempData["ErrorMessage"] = "User create failed.";
                    }
                }
                else
                {
                    TempData["ErrorMessage"] = "Password does not match.";
                }
            }
            return(View("CreateEdit", user));
        }
        private string GetUserStatus(NccUser user)
        {
            if (user.LockoutEnabled)
            {
                if (user.LockoutEnd != null)
                {
                    if (user.LockoutEnd > DateTime.Now)
                    {
                        return("Blocked");
                    }
                }
            }

            if (user.IsRequireLogin)
            {
                return("RequireLogin");
            }

            if (GlobalContext.GlobalCache.GetNccUser(user.Id) != null)
            {
                return("Online");
            }

            return("Offline");
        }
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new NccUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=532713
                    // Send an email with this link
                    //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                    //var callbackUrl = Url.Action(nameof(ConfirmEmail), "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                    //await _emailSender.SendEmailAsync(model.Email, "Confirm your account",
                    //    $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");
                    await _userManager.AddToRoleAsync(user, NccCmsRoles.Subscriber);

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation(3, "User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
 private bool IsUserMenuChecked(MenuItemViewModel menuItem, NccUser user, string moduleName, bool isExtraAllow)
 {
     if (isExtraAllow)
     {
         return(user.ExtraPermissions.Where(
                    x => x.Permission.PermissionDetails.Where(
                        y => y.Action == menuItem.Action &&
                        y.Controller == menuItem.Controller &&
                        y.ModuleName == moduleName &&
                        (y.ExtraAllowUserId == user.Id)
                        ).Count() > 0
                    ).Count() > 0);
     }
     else
     {
         return(user.ExtraDenies.Where(
                    x => x.Permission.PermissionDetails.Where(
                        y => y.Action == menuItem.Action &&
                        y.Controller == menuItem.Controller &&
                        y.ModuleName == moduleName &&
                        (y.ExtraDenyUserId == user.Id)
                        ).Count() > 0
                    ).Count() > 0);
     }
 }
Exemple #8
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new NccUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.EmailConfirmationLink(user.Id.ToString(), code, Request.Scheme);
                    await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation("User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemple #9
0
        private (bool NotFound, bool Redirect, bool isAuthorized) IsAuthorized(NccUser nccUser, string moduleName, string controllerName, string actionName)
        {
            bool   isAuthorized = false;
            string menuName     = "";

            (menuName, controllerName, actionName) = GetControllerActionForThisRequest(controllerName, actionName);

            if (string.IsNullOrEmpty(menuName) == true || string.IsNullOrEmpty(controllerName) == true || string.IsNullOrEmpty(actionName) == true)
            {
                return(true, true, false);
            }

            if (nccUser.ExtraDenies.Where(x => x.ModuleName == moduleName && x.Action == actionName && x.Controller == controllerName).Count() > 0)
            {
                return(false, true, false);
            }
            else
            {
                if (nccUser.Permissions.Where(x => x.Permission.PermissionDetails.Where(y => y.ModuleName == moduleName && y.Action == actionName && y.Controller == controllerName).Count() > 0).Count() > 0)
                {
                    isAuthorized = true;
                }
                else
                {
                    isAuthorized = nccUser.ExtraPermissions.Where(x => x.ModuleName == moduleName && x.Action == actionName && x.Controller == controllerName).Count() > 0;
                }
            }

            return(false, false, isAuthorized);
        }
Exemple #10
0
        public async Task <IActionResult> ExternalLoginConfirmation(ExternalLoginViewModel model, string returnUrl = null)
        {
            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await _signInManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    throw new ApplicationException("Error loading external login information during confirmation.");
                }
                var user = new NccUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View(nameof(ExternalLogin), model));
        }
Exemple #11
0
 protected override NccUserRole CreateUserRole(NccUser user, NccRole role)
 {
     return(new NccUserRole()
     {
         UserId = user.Id,
         RoleId = role.Id
     });
 }
Exemple #12
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            if (GlobalContext.WebSite.AllowRegistration == false)
            {
                TempData["ErrorMessage"] = "Registration is not allowed.";
                return(Redirect("Home/Error"));
            }

            ViewData["ReturnUrl"] = returnUrl;

            if (ModelState.IsValid)
            {
                var user = new NccUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var subscriber = _nccPermissionService.Get(GlobalContext.WebSite.NewUserRole);
                    user.Permissions.Add(new NccUserPermission()
                    {
                        Permission = subscriber, User = user
                    });
                    _nccUserService.Update(user);
                    _logger.LogInformation("User created a new account with password.");

                    var rsp = FireEvent(UserActivity.Type.Registered, model.Email, user, new List <string>()
                    {
                        GlobalContext.WebSite.NewUserRole
                    }, "");
                    if (rsp != null)
                    {
                        returnUrl = rsp.ReturnUrl;
                    }

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.EmailConfirmationLink(user.Id.ToString(), code, Request.Scheme);

                    await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation("User created a new account with password.");

                    if (string.IsNullOrEmpty(returnUrl))
                    {
                        return(Redirect(NccUrlHelper.AddLanguageToUrl(CurrentLanguage, "/CmsHome")));
                    }

                    return(Redirect(returnUrl));
                }
                AddErrors(result);
            }
            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemple #13
0
        protected override IdentityUserClaim <long> CreateUserClaim(NccUser user, Claim claim)
        {
            var userClaim = new IdentityUserClaim <long> {
                UserId = user.Id
            };

            userClaim.InitializeFromClaim(claim);
            return(userClaim);
        }
Exemple #14
0
        private (bool NotFound, bool Redirect, bool isAuthorized) IsAuthorized(NccUser nccUser, string moduleName, string controllerName, string actionName)
        {
            bool   isAuthorized = false;
            string menuName     = "";

            (List <ControllerAction> caList, bool isMainAction) = GetControllerActionForThisRequest(controllerName, actionName);

            if (isMainAction)
            {
                foreach (var item in caList)
                {
                    if (string.IsNullOrEmpty(item.MainMenuName) == true || string.IsNullOrEmpty(item.MainController) == true || string.IsNullOrEmpty(item.MainAction) == true)
                    {
                        return(true, true, false);
                    }

                    if (nccUser.ExtraDenies.Where(x => x.ModuleName == item.ModuleName && x.Action == item.MainAction && x.Controller == item.MainController).Count() > 0)
                    {
                        return(false, true, false);
                    }
                    else
                    {
                        if (nccUser.Permissions.Where(x => x.Permission.PermissionDetails.Where(y => y.ModuleName == item.ModuleName && y.Action == item.MainAction && y.Controller == item.MainController).Count() > 0).Count() > 0)
                        {
                            isAuthorized = true;
                        }
                        else
                        {
                            isAuthorized = nccUser.ExtraPermissions.Where(x => x.ModuleName == item.ModuleName && x.Action == item.MainAction && x.Controller == item.MainController).Count() > 0;
                        }
                    }
                }
            }
            else
            {
                foreach (var item in caList)
                {
                    if (nccUser.Permissions.Where(x => x.Permission.PermissionDetails.Where(y => y.ModuleName == item.ModuleName && y.Action == item.MainAction && y.Controller == item.MainController).Count() > 0).Count() > 0)
                    {
                        isAuthorized = true;
                    }

                    if (isAuthorized == false)
                    {
                        isAuthorized = nccUser.ExtraPermissions.Where(x => x.ModuleName == item.ModuleName && x.Action == item.MainAction && x.Controller == item.MainController).Count() > 0;
                    }

                    if (isAuthorized)
                    {
                        break;
                    }
                }
            }

            return(false, false, isAuthorized);
        }
Exemple #15
0
        public ActionResult CreateEdit(string userName = "")
        {
            var user = new UserViewModel();

            if (!string.IsNullOrEmpty(userName))
            {
                NccUser nccUser = _userManager.FindByNameAsync(user.UserName).Result;
            }
            return(View(user));
        }
        private List <ModuleViewModel> GetAllowModules(NccUser user)
        {
            var activeModules = GlobalContext.GetActiveModules();
            var modules       = new List <ModuleViewModel>();

            foreach (var module in modules)
            {
            }
            return(modules);
        }
Exemple #17
0
 protected override IdentityUserLogin <long> CreateUserLogin(NccUser user, UserLoginInfo login)
 {
     return(new IdentityUserLogin <long>
     {
         UserId = user.Id,
         ProviderKey = login.ProviderKey,
         LoginProvider = login.LoginProvider,
         ProviderDisplayName = login.ProviderDisplayName
     });
 }
Exemple #18
0
 protected override IdentityUserToken <long> CreateUserToken(NccUser user, string loginProvider, string name, string value)
 {
     return(new IdentityUserToken <long>
     {
         UserId = user.Id,
         LoginProvider = loginProvider,
         Name = name,
         Value = value
     });
 }
Exemple #19
0
        private UserViewModel ToUserViewModel(NccUser user)
        {
            var uvm = new UserViewModel();

            uvm.Email    = user.Email;
            uvm.FullName = user.FullName;
            uvm.Id       = user.Id;
            uvm.Mobile   = user.Mobile;
            uvm.Role     = string.Join(",", user.Roles.Select(x => x.Role.Name).ToList());
            uvm.UserName = user.UserName;
            return(uvm);
        }
        private List <ModuleViewModel> GetModules(NccUser user, bool isAllowModule)
        {
            var activeModules = GlobalContext.GetActiveModules();
            var modules       = new List <ModuleViewModel>();

            foreach (var module in modules)
            {
                var mvm = new ModuleViewModel();
                mvm.ModuleName = module.ModuleName;
                mvm.Name       = module.Name;
                mvm.AdminMenus = GetMenus(module.ModuleName, module.AdminMenus, user, isAllowModule, "Admin");
                mvm.SiteMenus  = GetMenus(module.ModuleName, module.SiteMenus, user, isAllowModule, "WebSite");
            }
            return(modules);
        }
        private UserViewModel GetUserViewModel(NccUser user)
        {
            var uvm = new UserViewModel();

            uvm.Email        = user.Email;
            uvm.FullName     = user.FullName;
            uvm.Id           = user.Id;
            uvm.Mobile       = user.Mobile;
            uvm.RoleNames    = string.Join(",", user.Permissions.Select(x => x.Permission.Name).ToList());
            uvm.UserName     = user.UserName;
            uvm.AllowModules = GetModules(user, true);
            uvm.DenyModules  = GetModules(user, false);
            uvm.Roles        = user.Permissions.Select(x => x.PermissionId).ToArray();
            return(uvm);
        }
Exemple #22
0
        public async Task <IActionResult> ExternalLoginConfirmation(ExternalLoginViewModel model, string returnUrl = null)
        {
            if (returnUrl == null)
            {
                returnUrl = "/";
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await _signInManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    throw new ApplicationException("Error loading external login information during confirmation.");
                }
                var user = new NccUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        var defaultSignupRole = _nccPermissionService.Get(GlobalContext.WebSite.NewUserRole);
                        user.Permissions.Add(new NccUserPermission()
                        {
                            Permission = defaultSignupRole, User = user
                        });
                        UserService.Update(user);

                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        GlobalContext.GlobalCache.SetNccUser(user);
                        return(Register(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View(nameof(ExternalLogin), model));
        }
Exemple #23
0
        internal static void SetNccUser(this IMemoryCache cache, NccUser nccUser)
        {
            Hashtable cacheEntry;

            cache.TryGetValue(NccCacheKeys.UsersCache, out cacheEntry);

            if (cacheEntry != null)
            {
                cacheEntry[nccUser.Id] = nccUser;
            }
            else
            {
                cacheEntry             = new Hashtable();
                cacheEntry[nccUser.Id] = nccUser;
                var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(20));
                cache.Set(NccCacheKeys.UsersCache, cacheEntry, cacheEntryOptions);
            }
        }
Exemple #24
0
        public ActionResult CreateEdit(string userName = "")
        {
            var activeModules = GlobalContext.GetActiveModules();

            ViewBag.Modules = activeModules;
            var permissions = _nccPermissionService.LoadAll();

            ViewBag.Roles = new SelectList(permissions, "Id", "Name");

            var user = new UserViewModel();

            if (!string.IsNullOrEmpty(userName))
            {
                NccUser nccUser = _nccUserService.GetByUserName(userName);
                user          = new UserViewModel(nccUser);
                ViewBag.Roles = new SelectList(permissions, "Id", "Name", nccUser.Permissions.Select(x => x.PermissionId).ToArray());
            }
            return(View(user));
        }
Exemple #25
0
        private UserActivity FireEvent(UserActivity.Type type, string email, NccUser user, IList <string> roles, string returnUrl)
        {
            try
            {
                var rsp = _mediator.SendAll(new OnUserActivity(new UserActivity()
                {
                    ActivityType = type,
                    Email        = email,
                    Ip           = NetworkUtility.GetUserIp(HttpContext),
                    NewRoles     = roles,
                    User         = user,
                    ReturnUrl    = returnUrl
                })).Result;

                return(rsp.LastOrDefault());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
            }
            return(null);
        }
Exemple #26
0
        private static bool HasUserPermission(NccUser user, AdminMenuItem subItem)
        {
            if (user.Roles.Where(x => x.Role.Name == NccCmsRoles.SuperAdmin).Count() > 0)
            {
                return(true);
            }

            var controller = "";
            var action     = "";

            if (string.IsNullOrEmpty(subItem.Url) == false)
            {
                (controller, action) = NccUrlHelper.GetControllerActionFromUrl(subItem.Url);
            }
            else
            {
                controller = subItem.Controller;
                action     = subItem.Action;
            }

            if (user.ExtraDenies.Where(x => x.Action == action && x.Controller == controller).Count() > 0)
            {
                return(false);
            }
            else if (user.Permissions.Where(x => x.Permission.PermissionDetails.Where(y => y.Action == action && y.Controller == controller).Count() > 0).Count() > 0)
            {
                return(true);
            }
            else if (user.ExtraPermissions.Where(x => x.Action == action && x.Controller == controller).Count() > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        //private List<MenuViewModel> GetAdminMenus(ModuleViewModel module, NccUser user, bool isExtraAllow)
        //{
        //    var menuList = new List<MenuViewModel>();
        //    foreach (var adminMenu in module.AdminMenus)
        //    {
        //        var amvm = new MenuViewModel();
        //        amvm.Name = adminMenu.Name;
        //        amvm.Order = adminMenu.Order;
        //        amvm.Type = "Admin";
        //        amvm.Url = adminMenu.Url;
        //        foreach (var menuItem in adminMenu.MenuItems)
        //        {
        //            amvm.MenuItems.Add(new MenuItemViewModel() {
        //                Action = menuItem.Action,
        //                Controller = menuItem.Controller,
        //                Name = menuItem.Name,
        //                Order = menuItem.Order,
        //                IsChecked = IsUserMenuChecked(menuItem, user, module.ModuleId, isExtraAllow)
        //            });
        //        }
        //        menuList.Add(amvm);
        //    }
        //    return menuList;
        //}

        private List <MenuViewModel> GetMenus(string moduleName, List <MenuViewModel> menus, NccUser user, bool isExtraAllow, string type)
        {
            var menuList = new List <MenuViewModel>();

            foreach (var siteMenu in menus)
            {
                var amvm = new MenuViewModel();
                amvm.Name  = siteMenu.Name;
                amvm.Order = siteMenu.Order;
                amvm.Type  = type;
                amvm.Url   = siteMenu.Url;
                foreach (var menuItem in siteMenu.MenuItems)
                {
                    amvm.MenuItems.Add(new MenuItemViewModel()
                    {
                        Action     = menuItem.Action,
                        Controller = menuItem.Controller,
                        Name       = menuItem.Name,
                        Order      = menuItem.Order,
                        IsChecked  = IsUserMenuChecked(menuItem, user, moduleName, isExtraAllow)
                    });
                }
                menuList.Add(amvm);
            }
            return(menuList);
        }
        private List <NccPermissionDetails> GetSelectedPermissionDetails(List <ModuleViewModel> modules, NccUser user, bool isExtraAllowPermission)
        {
            var permissionDetailsList = new List <NccPermissionDetails>();

            foreach (var module in modules)
            {
                foreach (var adminMenu in module.AdminMenus)
                {
                    foreach (var item in adminMenu.MenuItems)
                    {
                        if (item.IsChecked)
                        {
                            var pd = new NccPermissionDetails()
                            {
                                Action     = item.Action,
                                Controller = item.Controller,
                                ModuleName = module.ModuleName,
                                Name       = adminMenu.Name,
                                Order      = item.Order,
                            };
                            if (isExtraAllowPermission)
                            {
                                pd.AllowUser = user;
                            }
                            else
                            {
                                pd.DenyUser = user;
                            }
                            permissionDetailsList.Add(pd);
                        }
                    }
                }

                foreach (var webSiteMenu in module.SiteMenus)
                {
                    foreach (var item in webSiteMenu.MenuItems)
                    {
                        if (item.IsChecked)
                        {
                            var pd = new NccPermissionDetails()
                            {
                                Action     = item.Action,
                                Controller = item.Controller,
                                ModuleName = module.ModuleName,
                                Name       = webSiteMenu.Name,
                                Order      = item.Order
                            };
                            if (isExtraAllowPermission)
                            {
                                pd.AllowUser = user;
                            }
                            else
                            {
                                pd.DenyUser = user;
                            }
                            permissionDetailsList.Add(pd);
                        }
                    }
                }
            }

            return(permissionDetailsList);
        }
        public ActionResult CreateEdit(UserViewModel user, string SendEmail)
        {
            bool   isSuccess     = false;
            string returnMessage = "User Creation failed";

            if (user.Id > 0 && !string.IsNullOrEmpty(user.Email) && !string.IsNullOrEmpty(user.FullName) && !string.IsNullOrEmpty(user.Mobile))
            {
                var oldUser = _nccUserService.GetNccUser(user.Id);

                oldUser.FullName = user.FullName;
                oldUser.Email    = user.Email;
                oldUser.Mobile   = user.Mobile;

                oldUser.ExtraDenies.RemoveAll(x => x.ExtraDenyUserId == user.Id);
                oldUser.ExtraPermissions.RemoveAll(x => x.ExtraAllowUserId == user.Id);

                var allowedAdminMenuItems = user.AllowModules.Select(x => new { ModuleId = x.ModuleName, Items = x.AdminMenus.SelectMany(y => y.MenuItems.Where(z => z.IsChecked == true)) });

                var allowedWebSiteMenuItems = user.AllowModules.Select(x => new { ModuleId = x.ModuleName, Items = x.SiteMenus.SelectMany(y => y.MenuItems.Where(z => z.IsChecked == true)) }).ToList();

                foreach (var moduleMenu in allowedAdminMenuItems)
                {
                    foreach (var menuItem in moduleMenu.Items)
                    {
                        oldUser.ExtraPermissions.Add(new NccPermissionDetails()
                        {
                            Action           = menuItem.Action,
                            AllowUser        = oldUser,
                            Controller       = menuItem.Controller,
                            ExtraAllowUserId = oldUser.Id,
                            ModuleName       = moduleMenu.ModuleId
                        });
                    }
                }

                foreach (var moduleMenu in allowedWebSiteMenuItems)
                {
                    foreach (var menuItem in moduleMenu.Items)
                    {
                        oldUser.ExtraPermissions.Add(new NccPermissionDetails()
                        {
                            Action           = menuItem.Action,
                            AllowUser        = oldUser,
                            Controller       = menuItem.Controller,
                            ExtraAllowUserId = oldUser.Id,
                            ModuleName       = moduleMenu.ModuleId
                        });
                    }
                }

                var deniedAdminMenuItems = user.DenyModules.Select(x => new { ModuleId = x.ModuleName, Items = x.AdminMenus.SelectMany(y => y.MenuItems.Where(z => z.IsChecked == true)) });

                var deniedWebSiteMenuItems = user.DenyModules.Select(x => new { ModuleId = x.ModuleName, Items = x.SiteMenus.SelectMany(y => y.MenuItems.Where(z => z.IsChecked == true)) }).ToList();

                foreach (var moduleMenu in deniedAdminMenuItems)
                {
                    foreach (var menuItem in moduleMenu.Items)
                    {
                        oldUser.ExtraDenies.Add(new NccPermissionDetails()
                        {
                            Action          = menuItem.Action,
                            DenyUser        = oldUser,
                            Controller      = menuItem.Controller,
                            ExtraDenyUserId = oldUser.Id,
                            ModuleName      = moduleMenu.ModuleId
                        });
                    }
                }

                foreach (var moduleMenu in deniedWebSiteMenuItems)
                {
                    foreach (var menuItem in moduleMenu.Items)
                    {
                        oldUser.ExtraDenies.Add(new NccPermissionDetails()
                        {
                            Action          = menuItem.Action,
                            DenyUser        = oldUser,
                            Controller      = menuItem.Controller,
                            ExtraDenyUserId = oldUser.Id,
                            ModuleName      = moduleMenu.ModuleId
                        });
                    }
                }

                _nccUserService.Update(oldUser);

                if (user.IsSuperAdmin)
                {
                    NccUser userTemp = _userManager.FindByNameAsync(oldUser.UserName).Result;
                    var     result   = _userManager.AddToRoleAsync(userTemp, NccCmsRoles.SuperAdmin).Result;
                    if (result.Succeeded)
                    {
                        isSuccess     = true;
                        returnMessage = " User SuperAdmin Role update successful.";
                    }
                    else
                    {
                        isSuccess     = false;
                        returnMessage = result.Errors?.FirstOrDefault()?.Description;
                    }
                }
                else
                {
                    NccUser userTemp = _userManager.FindByNameAsync(oldUser.UserName).Result;
                    var     result   = _userManager.RemoveFromRoleAsync(userTemp, NccCmsRoles.SuperAdmin).Result;
                    if (result.Succeeded)
                    {
                        isSuccess     = true;
                        returnMessage = " User SuperAdmin Role remove successful.";
                    }
                    else
                    {
                        isSuccess     = false;
                        returnMessage = result.Errors?.FirstOrDefault()?.Description;
                    }
                }

                isSuccess = true;
                GlobalContext.GlobalCache.SetNccUser(oldUser);
                //return RedirectToAction("Index");
            }
            else if (ModelState.IsValid)
            {
                if (user.Password == user.ConfirmPassword)
                {
                    var nccUser = new NccUser()
                    {
                        Email = user.Email, FullName = user.FullName, UserName = user.UserName, Mobile = user.Mobile, Status = EntityStatus.Active
                    };
                    var result = _userManager.CreateAsync(nccUser, user.Password).Result;

                    var createdUser = _userManager.FindByNameAsync(user.UserName).Result;
                    if (createdUser != null)
                    {
                        if (user.IsSuperAdmin)
                        {
                            NccUser userTemp = _userManager.FindByNameAsync(createdUser.UserName).Result;
                            var     temp     = _userManager.AddToRoleAsync(userTemp, NccCmsRoles.SuperAdmin).Result;
                            isSuccess     = true;
                            returnMessage = "User created successfully.";
                        }
                        else
                        {
                            foreach (var item in user.Roles)
                            {
                                var permission = _nccPermissionService.Get(item);
                                createdUser.Permissions.Add(new NccUserPermission()
                                {
                                    Permission = permission, User = createdUser
                                });
                            }

                            createdUser.ExtraPermissions = GetSelectedPermissionDetails(user.AllowModules, createdUser, true);
                            createdUser.ExtraDenies      = GetSelectedPermissionDetails(user.DenyModules, createdUser, false);

                            var upResult = _userManager.UpdateAsync(createdUser).Result;
                            if (upResult.Succeeded == false)
                            {
                                returnMessage = "User role assign failed.";
                            }
                            else
                            {
                                GlobalContext.GlobalCache.SetNccUser(createdUser);
                                isSuccess     = true;
                                returnMessage = "User created successfully.";
                            }
                        }
                    }
                }
                else
                {
                    returnMessage = "Password does not match.";
                }
            }
            else
            {
                returnMessage = "Please enter all required fields.";
                ModelState.AddModelError("", "Please enter all required fields.");
            }

            if (isSuccess)
            {
                ShowMessage(returnMessage, MessageType.Success, false, true);
                return(RedirectToAction("CreateEdit"));
            }

            var activeModules = GlobalContext.GetActiveModules();

            ViewBag.Modules = activeModules;
            var permissions = _nccPermissionService.LoadAll();

            ViewBag.Roles = new SelectList(permissions, "Id", "Name");

            ShowMessage(returnMessage, MessageType.Error);
            return(View("CreateEdit", user));
        }
Exemple #30
0
        public static async Task SaveBasicData(NccUser nccUser, NccDbContext nccDbConetxt, UserManager <NccUser> userManager, RoleManager <NccRole> roleManager, NccSignInManager <NccUser> signInManager, WebSiteInfo setupInfo)
        {
            string enDemoTitle   = "";
            string enDemoSlug    = "";
            string enDemoContent = "";
            string bnDemoTitle   = "";
            string bnDemoSlug    = "";
            string bnDemoContent = "";

            //var webSiteRepository = new NccWebSiteRepository(nccDbConetxt);
            //var webSiteInfoRepository = new NccWebSiteInfoRepository(nccDbConetxt);
            //var webSiteService = new NccWebSiteService(webSiteRepository, webSiteInfoRepository);

            #region Create a sample page
            var nccPageRepository        = new NccPageRepository(nccDbConetxt);
            var nccPageDetailsRepository = new NccPageDetailsRepository(nccDbConetxt);
            var nccPageService           = new NccPageService(nccPageRepository, nccPageDetailsRepository);

            try
            {
                enDemoTitle   = "Sample Page ";
                enDemoSlug    = "Sample-Page";
                enDemoContent = "This is a sample page.";
                bnDemoTitle   = "নমুনা পৃষ্ঠা ";
                bnDemoSlug    = "নমুনা-পৃষ্ঠা";
                bnDemoContent = "এটি একটি নমুনা পাতা।";

                NccPage page = new NccPage();
                page.Metadata    = "DEMODATA";
                page.PublishDate = DateTime.Now;
                page.PageStatus  = NccPageStatus.Published;
                page.PageType    = NccPageType.Public;
                page.Layout      = "SiteLayout";
                page.CreateBy    = page.ModifyBy = 1;
                page.Name        = enDemoTitle;

                foreach (var item in SupportedCultures.Cultures)
                {
                    NccPageDetails _nccPageDetails = new NccPageDetails();
                    _nccPageDetails.Language = item.TwoLetterISOLanguageName;
                    if (item.TwoLetterISOLanguageName == "en")
                    {
                        _nccPageDetails.Title           = enDemoTitle;
                        _nccPageDetails.Slug            = enDemoSlug;
                        _nccPageDetails.Name            = enDemoSlug;
                        _nccPageDetails.Content         = "<h1 style=\"text-align:center\">" + enDemoTitle + "</h1><p>" + enDemoContent + "</p>";
                        _nccPageDetails.MetaDescription = enDemoTitle + " " + enDemoContent;
                    }
                    else if (item.TwoLetterISOLanguageName == "bn")
                    {
                        _nccPageDetails.Title           = bnDemoTitle;
                        _nccPageDetails.Slug            = bnDemoSlug;
                        _nccPageDetails.Name            = bnDemoSlug;
                        _nccPageDetails.Content         = "<h1 style=\"text-align:center\">" + bnDemoTitle + "</h1><p>" + bnDemoContent + "</p>";
                        _nccPageDetails.MetaDescription = bnDemoTitle + " " + bnDemoContent;
                    }
                    page.PageDetails.Add(_nccPageDetails);
                }
                nccPageService.Save(page);
            }
            catch (Exception ex)
            {
            }
            #endregion

            #region Create a sample category
            var categoryRepository = new NccCategoryRepository(nccDbConetxt);
            var categoryService    = new NccCategoryService(categoryRepository);

            try
            {
                enDemoTitle = "Sample Category ";
                enDemoSlug  = "Sample-Category";
                bnDemoTitle = "নমুনা ক্যাটাগরি ";
                bnDemoSlug  = "নমুনা-ক্যাটাগরি";
                NccCategory item = new NccCategory();
                item.Metadata      = "DEMODATA";
                item.Name          = enDemoTitle;
                item.CategoryImage = "/media/Images/2017/06/image-slider-0.jpg";
                foreach (var lang in SupportedCultures.Cultures)
                {
                    NccCategoryDetails _nccDetails = new NccCategoryDetails();
                    _nccDetails.Language = lang.TwoLetterISOLanguageName;
                    if (lang.TwoLetterISOLanguageName == "en")
                    {
                        _nccDetails.Title = enDemoTitle;
                        _nccDetails.Slug  = enDemoSlug;
                        _nccDetails.Name  = enDemoSlug;
                    }
                    else if (lang.TwoLetterISOLanguageName == "bn")
                    {
                        _nccDetails.Title = bnDemoTitle;
                        _nccDetails.Slug  = bnDemoSlug;
                        _nccDetails.Name  = bnDemoSlug;
                    }
                    item.CategoryDetails.Add(_nccDetails);
                }
                categoryService.Save(item);
            }
            catch (Exception ex) { }
            #endregion
            //var tagRepository = new NccTagRepository(nccDbConetxt);
            //var tagService = new NccTagService(tagRepository);

            #region Create a sample post
            var postRepository        = new NccPostRepository(nccDbConetxt);
            var postDetailsRepository = new NccPostDetailsRepository(nccDbConetxt);
            var postService           = new NccPostService(postRepository, postDetailsRepository);

            try
            {
                enDemoTitle   = "Sample Post ";
                enDemoSlug    = "Sample-Post";
                enDemoContent = "This is a sample post.";
                bnDemoTitle   = "নমুনা পোস্ট ";
                bnDemoSlug    = "নমুনা-পোস্ট";
                bnDemoContent = "এটি একটি নমুনা পোস্ট।";
                var categoryList = categoryService.LoadAll();

                NccPost post = new NccPost();
                post.Metadata     = "DEMODATA";
                post.PublishDate  = DateTime.Now;
                post.PostStatus   = NccPostStatus.Published;
                post.PostType     = NccPostType.Public;
                post.Layout       = "SiteLayout";
                post.CreateBy     = post.ModifyBy = 1;
                post.Name         = enDemoTitle;
                post.AllowComment = true;
                post.ThumImage    = "/media/Images/2017/06/image-slider-2.jpg";
                foreach (var postItem in SupportedCultures.Cultures)
                {
                    NccPostDetails _nccPostDetails = new NccPostDetails();
                    _nccPostDetails.Language = postItem.TwoLetterISOLanguageName;
                    if (postItem.TwoLetterISOLanguageName == "en")
                    {
                        _nccPostDetails.Title           = enDemoTitle;
                        _nccPostDetails.Slug            = enDemoSlug;
                        _nccPostDetails.Name            = enDemoSlug;
                        _nccPostDetails.Content         = "<h1 style=\"text-align:center\">" + enDemoTitle + "</h1><hr />" + enDemoContent;
                        _nccPostDetails.MetaDescription = enDemoTitle + " " + enDemoContent;
                    }
                    else if (postItem.TwoLetterISOLanguageName == "bn")
                    {
                        _nccPostDetails.Title           = bnDemoTitle;
                        _nccPostDetails.Slug            = bnDemoSlug;
                        _nccPostDetails.Name            = bnDemoSlug;
                        _nccPostDetails.Content         = "<h1 style=\"text-align:center\">" + bnDemoTitle + "</h1><hr />" + bnDemoContent;
                        _nccPostDetails.MetaDescription = bnDemoTitle + " " + bnDemoContent;
                    }
                    post.PostDetails.Add(_nccPostDetails);
                }
                postService.Save(post);

                try
                {
                    post            = postService.Get(post.Id, true);
                    post.Categories = new List <NccPostCategory>();
                    var temp = categoryList.FirstOrDefault();
                    if (temp != null)
                    {
                        if (post.Categories.Where(x => x.CategoryId == temp.Id).Count() <= 0)
                        {
                            post.Categories.Add(new NccPostCategory()
                            {
                                Post = post, CategoryId = temp.Id
                            });
                        }
                    }
                    postService.Update(post);
                }
                catch (Exception ex) { }
            }
            catch (Exception ex) { }
            #endregion

            #region Create a sample comment
            var commentsRepository = new NccCommentsRepository(nccDbConetxt);
            var commentsService    = new NccCommentsService(commentsRepository);
            try
            {
                enDemoContent = "This is a sample comment.";
                bnDemoContent = "এটি একটি নমুনা মন্তব্য।";
                NccComment commentItem = new NccComment();
                commentItem.Metadata = "DEMODATA";
                commentItem.Name     = "Sample Comments";
                commentItem.Content  = enDemoContent;
                if (Language == "bn")
                {
                    commentItem.Content = bnDemoContent;
                }
                commentItem.CommentStatus = NccComment.NccCommentStatus.Approved;
                commentItem.Post          = postService.LoadAll().FirstOrDefault();
                commentsService.Save(commentItem);
            }
            catch (Exception ex) { }
            #endregion

            #region Create sample menu
            var menuRepository     = new NccMenuRepository(nccDbConetxt);
            var menuItemRepository = new NccMenuItemRepository(nccDbConetxt);
            var menuService        = new NccMenuService(menuRepository, menuItemRepository);

            try
            {
                NccMenu nccMenu = new NccMenu()
                {
                    Name         = "Main Menu",
                    Position     = "Navigation",
                    MenuOrder    = 1,
                    MenuLanguage = ""
                };
                if (Language == "bn")
                {
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 1,
                        Module         = "",
                        Name           = "হোম",
                        Target         = "_self",
                        Url            = "/"
                    });
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 2,
                        Module         = "",
                        Name           = "নমুনা পৃষ্ঠা",
                        Target         = "_self",
                        Url            = "/নমুনা-পৃষ্ঠা"
                    });
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 3,
                        Module         = "",
                        Name           = "ব্লগ পোস্ট",
                        Target         = "_self",
                        Url            = "/Post"
                    });
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 4,
                        Module         = "",
                        Name           = "ব্লগ বিভাগ",
                        Target         = "_self",
                        Url            = "/Category"
                    });
                }
                else
                {
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 1,
                        Module         = "",
                        Name           = "Home",
                        Target         = "_self",
                        Url            = "/"
                    });
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 2,
                        Module         = "",
                        Name           = "Sample Page",
                        Target         = "_self",
                        Url            = "/Sample-Page"
                    });
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 3,
                        Module         = "",
                        Name           = "Blog Posts",
                        Target         = "_self",
                        Url            = "/Post"
                    });
                    nccMenu.MenuItems.Add(new NccMenuItem()
                    {
                        Action     = "",
                        Controller = "",
                        Data       = "",
                        //Id = item.Id,
                        MenuActionType = NccMenuItem.ActionType.Url,
                        MenuOrder      = 4,
                        Module         = "",
                        Name           = "Blog Categories",
                        Target         = "_self",
                        Url            = "/Category"
                    });
                }

                menuService.Save(nccMenu);
            }
            catch (Exception ex) { }
            #endregion

            #region Create sample widget
            //var currentWebsite = nccWebSiteService.LoadAll().FirstOrDefault();
            //var nccWebSiteWidget = new NccWebSiteWidget()
            //{
            //    WebSite = currentWebsite,
            //    WidgetConfigJson = "",
            //    ModuleId = "NetCoreCMS.Core.Modules.Cms",
            //    WidgetId = "NetCoreCms.Modules.Cms.CmsSearch",
            //    ThemeId = "com.NetCoreCMS.themes.NccSeventeen",
            //    LayoutName = "SiteLayout",
            //    Zone = "RightSidebar",
            //    WidgetOrder = 1,
            //    WidgetData = "",
            //};
            //nccWebSiteWidgetService.Save(nccWebSiteWidget);
            #endregion
        }