예제 #1
0
        public ActionResult CreateForumPermission(ForumPermissionViewModel model)
        {
            if (IsModelValidAndPersistErrors())
            {
                ForumPermission permission = _forumPermissionRepository.First(item => item.ForumID == model.ForumID && item.RoleID == model.RoleID);
                if (permission != null)
                {
                    SetError("Permission for the role/forum combination already exists");
                }
                else
                {
                    ForumPermission forumPermission = new ForumPermission()
                    {
                        ForumID     = model.ForumID,
                        RoleID      = model.RoleID,
                        Attachments = model.Attachments,
                        Polling     = model.Polling,
                        Posting     = model.Posting,
                        Visibility  = model.Visibility
                    };

                    _forumPermissionRepository.Add(forumPermission);
                    SetSuccess("Permission added");
                    return(RedirectToAction("ForumPermissions", new { ForumID = model.ForumID }));
                }
            }

            return(RedirectToSelf());
        }
예제 #2
0
        public void CreateAppAndMenu(Group group, MvcContext ctx)
        {
            // 添加程序
            IMemberApp forumApp = appService.Add((User)ctx.viewer.obj, group, lang.get("groupBoard"), 1, AccessStatus.Public);

            // 论坛
            ForumApp app = forumService.GetById(forumApp.AppOid);

            ForumPermission.AddOwnerAdminPermission(app);

            // 添加一个论坛板块
            ForumBoard board = new ForumBoard();

            board.Name     = lang.get("groupBoard");
            board.ParentId = 0;
            board.AppId    = forumApp.AppOid;

            board.Creator    = (User)ctx.viewer.obj;
            board.CreatorUrl = ctx.viewer.obj.Url;

            board.OwnerId   = group.Id;
            board.OwnerUrl  = group.Url;
            board.OwnerType = typeof(Group).FullName;
            board.Ip        = ctx.Ip;

            board.Security = app.Security;

            db.insert(board);

            // 添加menuUrl
            String forumUrl = UrlConverter.clearUrl(board, ctx);

            menuService.AddMenuByApp(forumApp, forumApp.Name, "default", forumUrl);
        }
예제 #3
0
        public ActionResult DeleteForumPermission(int ForumPermissionID)
        {
            ForumPermission forumPermission = _forumPermissionRepository.Get(ForumPermissionID);

            _forumPermissionRepository.Delete(forumPermission);
            SetSuccess("Forum permission deleted");
            return(RedirectToAction("ForumPermissions", new { ForumID = forumPermission.ForumID }));
        }
예제 #4
0
        public static string GetForumPermission(RestCommand command, int categoryID)
        {
            ForumPermission forumPermission = ForumPermissions.GetForumPermission(command.LoginUser, categoryID);

            if (forumPermission.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(forumPermission.GetXml("ForumPermission", true));
        }
예제 #5
0
        public ActionResult EditForumPermission(ForumPermissionViewModel model)
        {
            if (IsModelValidAndPersistErrors())
            {
                ForumPermission forumPermission = _forumPermissionRepository.Get(model.ForumPermissionID);
                forumPermission.ForumID     = model.ForumID;
                forumPermission.RoleID      = model.RoleID;
                forumPermission.Attachments = model.Attachments;
                forumPermission.Polling     = model.Polling;
                forumPermission.Posting     = model.Posting;
                forumPermission.Visibility  = model.Visibility;
                _forumPermissionRepository.Update(forumPermission);
                SetSuccess("Forum permissions updated");
                return(RedirectToAction("ForumPermissions", new { ForumID = model.ForumID }));
            }

            return(RedirectToSelf(new { ForumPermissionID = model.ForumPermissionID }));
        }
예제 #6
0
        public ActionResult EditForumPermission(int ForumPermissionID)
        {
            ForumPermission          forumPermission = _forumPermissionRepository.Get(ForumPermissionID);
            ForumPermissionViewModel model           = new ForumPermissionViewModel()
            {
                Forums = _forumRepository.Get(),
                Roles  = _roleRepository.Get(),

                ForumID           = forumPermission.ForumID,
                ForumPermissionID = forumPermission.ForumPermissionID,
                RoleID            = forumPermission.RoleID,
                Attachments       = forumPermission.Attachments,
                Polling           = forumPermission.Polling,
                Posting           = forumPermission.Posting,
                Visibility        = forumPermission.Visibility,
            };

            return(View(model));
        }
예제 #7
0
 protected bool CanSeeContent(PostV5 post, bool isThreadContent)
 {
     if (isThreadContent)
     {
         if (Thread.IsValued)
         {
             if (ForumPermission.Can(My, ForumPermissionSetNode.Action.ViewValuedThread))
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
         else if (ForumPermission.Can(My, ForumPermissionSetNode.Action.ViewThread))
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         if (ForumPermission.Can(My, ForumPermissionSetNode.Action.ViewReply))
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
예제 #8
0
 public ForumApp()
 {
     this.Security = ForumPermission.GetDefaultPermission();
 }
예제 #9
0
        protected override bool CheckPermission()
        {
            if (Forum == null)
            {
                if (Thread == null)
                {
                    return(false);
                }

                Response.Redirect(BbsUrlHelper.GetArchiverThreadUrl(Thread.Forum.CodeName, Thread.ThreadID));
                //ErrorMessage = "版块不存在";
                //return false;
            }
            if (false == Forum.CanVisit(My))
            {
                if (!Forum.CanDisplayInList(My))
                {
                    ErrorMessage = "版块不存在!";
                }
                else
                {
                    ErrorMessage = "您没有权限进入该版块!";
                }
                return(false);
            }

            //版块类型正常,但需要密码
            if (Forum.ForumType == ForumType.Normal && !string.IsNullOrEmpty(Forum.Password))
            {
                //如果当前用户不拥有“进入版块不需要密码”的权限,继续检查
                if (!Forum.SigninWithoutPassword(My))
                {
                    //检查这个用户之前是否已经通过这个版块的验证,避免重复输入密码
                    if (!My.IsValidatedForum(Forum))
                    {
                        ErrorMessage = "进入该版块需要密码";
                        return(false);
                    }
                }
            }

            if (Thread == null || ReplyList == null)
            {
                ErrorMessage = "主题不存在";
                return(false);
            }

            if (Thread.ForumID != Forum.ForumID)
            {
                Response.Redirect(UrlHelper.GetArchiverThreadUrl(Thread.Forum.CodeName, Thread.ThreadID));
            }

            if (Can(ForumPermissionSetNode.Action.VisitThread) == false)
            {
                ErrorMessage = "您所在的用户组没有进入主题页的权限";
                return(false);
            }

            if (Thread.ThreadType == ThreadType.Move)
            {
                BasicThread tempThread   = PostBOV5.Instance.GetThread(Thread.RedirectThreadID);
                string      tempCodeName = "";
                if (tempThread != null)
                {
                    Forum tempForum = ForumBO.Instance.GetForum(tempCodeName);
                    if (tempForum != null)
                    {
                        tempCodeName = tempForum.CodeName;
                    }
                    else
                    {
                        ErrorMessage = "主题不存在!";
                        return(false);
                    }
                }
                else
                {
                    ErrorMessage = "主题不存在!";
                    return(false);
                }
                string url = BbsUrlHelper.GetArchiverThreadUrl(tempCodeName, tempThread.ThreadID);
                Response.Redirect(url);

                return(false);
            }
            else if (Thread.ThreadType == ThreadType.Question)
            {
                //PostV5 bestPost;
                //QuestionV5 question = PostBOV5.Instance.GetQuestion(Thread.ThreadID, out bestPost);
                //Question question = PostManager.GetQuestion(thread.ThreadID, false, out bestPost);
                QuestionThread question = null;
                if (Thread is QuestionThread)
                {
                    question = (QuestionThread)Thread;

                    if (PageNumber == 1 && question.BestPost != null)
                    {
                        //把最佳答案插入第2楼
                        m_ReplyList.Insert(1, question.BestPost);
                    }
                }
                if (question == null)
                {
                    ErrorMessage = "主题不存在!";
                }
                if (Thread.IsClosed)
                {
                    IsShowReplies = true;
                }
                else if (question.AlwaysEyeable || ForumPermission.Can(My, ForumPermissionSetNode.Action.AlwaysViewContents) || Thread.IsReplied(My))
                {
                    IsShowReplies = true;
                }
                else
                {
                    IsShowReplies = false;
                }
            }


            return(true);
        }
예제 #10
0
파일: ForumBoard.cs 프로젝트: zhdwwf/wojilu
 public ForumBoard(int id)
 {
     Id            = id;
     this.Security = ForumPermission.GetDefaultPermission();
 }
예제 #11
0
 protected bool Can(ForumPermissionSetNode.Action action)
 {
     return(ForumPermission.Can(My, action));
 }