Exemple #1
0
        public ActionResult Add(
            string name,
            string ruleType,
            string criterion,
            string theme,
            int priority,
            string zone,
            string position) {

            if (!Services.Authorizer.Authorize(Orchard.Themes.Permissions.ApplyTheme, T("Cannot manage themes")))
                return new HttpUnauthorizedResult();

            _settingsService.Add(name, ruleType, criterion, theme, priority, zone, position);

            return RedirectToAction("Index");
        }
Exemple #2
0
        private InstallerResult CreateInitialData()
        {
            var installerResult = new InstallerResult {
                Successful = true, Message = "Congratulations, MVC Forum has installed successfully"
            };

            // I think this is all I need to call to kick EF into life
            //EFCachingProviderConfiguration.DefaultCache = new AspNetCache();
            //EFCachingProviderConfiguration.DefaultCachingPolicy = CachingPolicy.CacheAll;

            // Now setup the services as we can't do it in the constructor
            InitialiseServices();

            // First UOW to create the data needed for other saves
            using (var unitOfWork = _UnitOfWorkManager.NewUnitOfWork())
            {
                try
                {
                    // Check if category exists or not, we only do a single check for the first object within this
                    // UOW because, if anything failed inside. Everything else would be rolled back to because of the
                    // transaction
                    const string exampleCatName = "Example Category";
                    if (_categoryService.GetAll().FirstOrDefault(x => x.Name == exampleCatName) == null)
                    {
                        // Doesn't exist so add the example category
                        var exampleCat = new Category {
                            Name = exampleCatName, ModeratePosts = false, ModerateTopics = false
                        };
                        _categoryService.Add(exampleCat);

                        // Add the default roles
                        var standardRole = new MembershipRole {
                            RoleName = AppConstants.StandardMembers
                        };
                        var guestRole = new MembershipRole {
                            RoleName = AppConstants.GuestRoleName
                        };
                        var adminRole = new MembershipRole {
                            RoleName = AppConstants.AdminRoleName
                        };
                        _roleService.CreateRole(standardRole);
                        _roleService.CreateRole(guestRole);
                        _roleService.CreateRole(adminRole);

                        unitOfWork.Commit();
                    }
                }
                catch (Exception ex)
                {
                    unitOfWork.Rollback();
                    installerResult.Exception  = ex.InnerException;
                    installerResult.Message    = "Error creating the initial data >> Category & Roles";
                    installerResult.Successful = false;
                    return(installerResult);
                }
            }

            // Add / Update the default language strings
            installerResult = AddOrUpdateTheDefaultLanguageStrings(installerResult);
            if (!installerResult.Successful)
            {
                return(installerResult);
            }

            // Now we have saved the above we can create the rest of the data
            using (var unitOfWork = _UnitOfWorkManager.NewUnitOfWork())
            {
                try
                {
                    // if the settings already exist then do nothing
                    if (_settingsService.GetSettings(false) == null)
                    {
                        // Get the default language
                        var startingLanguage = _localizationService.GetLanguageByName("en-GB");

                        // Get the Standard Members role
                        var startingRole = _roleService.GetRole(AppConstants.StandardMembers);

                        // create the settings
                        var settings = new Settings
                        {
                            ForumName                   = "MVC Forum",
                            ForumUrl                    = "http://www.mydomain.com",
                            IsClosed                    = false,
                            EnableRSSFeeds              = true,
                            DisplayEditedBy             = true,
                            EnablePostFileAttachments   = false,
                            EnableMarkAsSolution        = true,
                            EnableSpamReporting         = true,
                            EnableMemberReporting       = true,
                            EnableEmailSubscriptions    = true,
                            ManuallyAuthoriseNewMembers = false,
                            EmailAdminOnNewMemberSignUp = true,
                            TopicsPerPage               = 20,
                            PostsPerPage                = 20,
                            EnablePrivateMessages       = true,
                            MaxPrivateMessagesPerMember = 50,
                            PrivateMessageFloodControl  = 1,
                            EnableSignatures            = false,
                            EnablePoints                = true,
                            PointsAllowedToVoteAmount   = 1,
                            PointsAddedPerPost          = 1,
                            PointsAddedForSolution      = 4,
                            PointsDeductedNagativeVote  = 2,
                            AdminEmailAddress           = "*****@*****.**",
                            NotificationReplyEmail      = "*****@*****.**",
                            SMTPEnableSSL               = false,
                            Theme = "Metro",
                            NewMemberStartingRole = startingRole,
                            DefaultLanguage       = startingLanguage,
                            ActivitiesPerPage     = 20,
                            EnableAkisment        = false,
                            EnableSocialLogins    = false,
                            EnablePolls           = true
                        };
                        _settingsService.Add(settings);

                        unitOfWork.Commit();
                    }
                }
                catch (Exception ex)
                {
                    unitOfWork.Rollback();
                    installerResult.Exception  = ex.InnerException;
                    installerResult.Message    = "Error creating the initial data >> Settings";
                    installerResult.Successful = false;
                    return(installerResult);
                }
            }


            // Now we have saved the above we can create the rest of the data
            using (var unitOfWork = _UnitOfWorkManager.NewUnitOfWork())
            {
                try
                {
                    // If the admin user exists then don't do anything else
                    if (_membershipService.GetUser("admin") == null)
                    {
                        // Set up the initial category permissions
                        var readOnly = new Permission {
                            Name = AppConstants.PermissionReadOnly
                        };
                        var deletePosts = new Permission {
                            Name = AppConstants.PermissionDeletePosts
                        };
                        var editPosts = new Permission {
                            Name = AppConstants.PermissionEditPosts
                        };
                        var stickyTopics = new Permission {
                            Name = AppConstants.PermissionCreateStickyTopics
                        };
                        var lockTopics = new Permission {
                            Name = AppConstants.PermissionLockTopics
                        };
                        var voteInPolls = new Permission {
                            Name = AppConstants.PermissionVoteInPolls
                        };
                        var createPolls = new Permission {
                            Name = AppConstants.PermissionCreatePolls
                        };
                        var createTopics = new Permission {
                            Name = AppConstants.PermissionCreateTopics
                        };
                        var attachFiles = new Permission {
                            Name = AppConstants.PermissionAttachFiles
                        };
                        var denyAccess = new Permission {
                            Name = AppConstants.PermissionDenyAccess
                        };

                        _permissionService.Add(readOnly);
                        _permissionService.Add(deletePosts);
                        _permissionService.Add(editPosts);
                        _permissionService.Add(stickyTopics);
                        _permissionService.Add(lockTopics);
                        _permissionService.Add(voteInPolls);
                        _permissionService.Add(createPolls);
                        _permissionService.Add(createTopics);
                        _permissionService.Add(attachFiles);
                        _permissionService.Add(denyAccess);

                        // Set up global permissions
                        var editMembers = new Permission {
                            Name = AppConstants.PermissionEditMembers, IsGlobal = true
                        };

                        _permissionService.Add(editMembers);

                        // create the admin user and put him in the admin role
                        var admin = new MembershipUser
                        {
                            Email      = "*****@*****.**",
                            UserName   = "******",
                            Password   = "******",
                            IsApproved = true,
                            DisableEmailNotifications = false,
                            DisablePosting            = false,
                            DisablePrivateMessages    = false
                        };
                        _membershipService.CreateUser(admin);

                        // Do a save changes just in case
                        unitOfWork.SaveChanges();

                        // Put the admin in the admin role
                        var adminRole = _roleService.GetRole(AppConstants.AdminRoleName);
                        admin.Roles = new List <MembershipRole> {
                            adminRole
                        };

                        unitOfWork.Commit();
                    }
                }
                catch (Exception ex)
                {
                    unitOfWork.Rollback();
                    installerResult.Exception  = ex.InnerException;
                    installerResult.Message    = "Error creating the initial data >> Admin user & Permissions";
                    installerResult.Successful = false;
                    return(installerResult);
                }
            }

            return(installerResult);
        }