Exemple #1
0
        /// <summary>
        /// 创建回答
        /// </summary>
        /// <remarks>
        /// 1.登录用户可以回答问题
        /// 2.问题提问者不得回答自己的问题
        /// 3.每个回答者针对每个问题只能回答一次
        /// </remarks>
        public static bool Answer_Create(this Authorizer authorizer, AskQuestion question, out string errorMessage)
        {
            errorMessage = string.Empty;
            IUser currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                errorMessage = "您需要先登录,才能回答";
                return(false);
            }
            if (question.UserId == currentUser.UserId)
            {
                errorMessage = "提问者不可以回答自己的问题";
                return(false);
            }
            if (question.Status != QuestionStatus.Unresolved)
            {
                errorMessage = "只有未解决状态的问题,才能回答";
                return(false);
            }
            AskAnswer answer = new AskService().GetUserAnswerByQuestionId(currentUser.UserId, question.QuestionId);

            if (answer != null)
            {
                errorMessage = "您已经回答过一次,不可重复回答";
                return(false);
            }
            bool result = authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Ask_CreateAnswer());

            if (!result && currentUser.IsModerated)
            {
                errorMessage = Resources.Resource.Description_ModeratedUser_CreateAnswerDenied;
            }
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 是否具有创建Microblog的权限
        /// </summary>
        /// <param name="authorizer">被扩展对象</param>
        /// <param name="tenantTypeId">微博实体</param>
        /// <param name="ownerId">拥有者Id</param>
        /// <returns></returns>
        public static bool Microblog_Create(this Authorizer authorizer, out string errorMessage, string tenantTypeId = null, long ownerId = 0)
        {
            IUser currentUser = UserContext.CurrentUser;

            errorMessage = "没有权限发微博";
            if (currentUser == null)
            {
                errorMessage = "您必须先登录,才能发微博";
                return(false);
            }
            if (authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Microblog_Create()))
            {
                if (tenantTypeId == TenantTypeIds.Instance().User())
                {
                    return(true);
                }

                if (authorizer.AuthorizationService.IsTenantMember(currentUser, tenantTypeId, ownerId))
                {
                    return(true);
                }
                else
                {
                    errorMessage = "您必须先加入,才能发微博";
                }
            }
            if (currentUser.IsModerated)
            {
                errorMessage = Resources.Resource.Description_ModeratedUser_CreateMicroblogDenied;
            }
            return(false);
        }
Exemple #3
0
        /// <summary>
        /// 创建问题
        /// </summary>
        /// <remarks>
        /// 登录用户可以创建问题
        /// </remarks>
        public static bool Question_Create(this Authorizer authorizer, out string errorMessage)
        {
            errorMessage = "没有权限提问";
            IUser currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                errorMessage = "您需要先登录,才能创建问题";
                return(false);
            }
            bool result = authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Ask_Create());

            if (!result && currentUser.IsModerated)
            {
                errorMessage = Resources.Resource.Description_ModeratedUser_CreateQuestionDenied;
            }
            return(result);
        }
Exemple #4
0
        /// <summary>
        /// 撰写日志/转载日志(暂时用于移动端)
        /// 空间主人撰写空间用户的日志
        /// </summary>
        public static bool BlogThread_Create(this Authorizer authorizer, IUser currentUser, out string errorMessage)
        {
            //IUser currentUser = UserContext.CurrentUser;
            errorMessage = "没有权限写日志";

            if (currentUser == null)
            {
                errorMessage = "您必须先登录,才能写日志";
                return(false);
            }

            bool result = authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Blog_Create());

            if (!result && currentUser.IsModerated)
            {
                errorMessage = Resources.Resource.Description_ModeratedUser_CreateBlogThreadDenied;
            }
            return(result);
        }
Exemple #5
0
 /// <summary>
 /// 创建Photo的权限项标识
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string Photo_Create(this PermissionItemKeys pik)
 {
     return("Photo_Create");
 }
Exemple #6
0
 /// <summary>
 /// 资讯投稿的权限项标识
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string CMS_ContentItem(this PermissionItemKeys pik)
 {
     return("CMS_ContentItem");
 }
Exemple #7
0
 /// <summary>
 /// 回答问题的权限项标识
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string Bar_CreatePost(this PermissionItemKeys pik)
 {
     return("Bar_CreatePost");
 }
Exemple #8
0
 /// <summary>
 /// 创建问题的权限项标识
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string Bar_CreateThread(this PermissionItemKeys pik)
 {
     return("Bar_CreateThread");
 }
Exemple #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="pik"></param>
 /// <returns></returns>
 public static string WikiManageApply(this PermissionItemKeys pik)
 {
     return("WikiManageApply");
 }
Exemple #10
0
 /// <summary>
 /// 编辑词条
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string WikiPageVersion_Create(this PermissionItemKeys pik)
 {
     return("WikiPageVersion_Create");
 }
Exemple #11
0
        /// <summary>
        /// 是否具有创建BarPost的权限
        /// </summary>
        /// <param name="sectionId">所属帖吧Id</param>
        /// <returns></returns>
        public static bool BarPost_Create(this Authorizer authorizer, long sectionId, out string errorMessage)
        {
            IUser currentUser = UserContext.CurrentUser;

            errorMessage = "没有权限回帖";
            BarSectionService barSectionService = new BarSectionService();
            var barSection = barSectionService.Get(sectionId);

            if (barSection == null)
            {
                return(false);
            }

            if (barSection.AuditStatus != AuditStatus.Success)
            {
                errorMessage = "由于贴吧未经过审核,所以不允许发帖";
                return(false);
            }

            if (!authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Bar_CreatePost()))
            {
                if (currentUser != null && currentUser.IsModerated)
                {
                    errorMessage = Resources.Resource.Description_ModeratedUser_CreateBarPostDenied;
                }
                return(false);
            }

            if (barSection.TenantTypeId == TenantTypeIds.Instance().Bar())
            {
                //检查是否需要是关注用户才能发帖
                IBarSettingsManager barSettingsManager = DIContainer.Resolve <IBarSettingsManager>();
                BarSettings         barSetting         = barSettingsManager.Get();
                if (barSetting.OnlyFollowerCreatePost)
                {
                    if (currentUser == null)
                    {
                        errorMessage = "您需要先登录并关注此帖吧,才能回帖";
                        return(false);
                    }
                    SubscribeService subscribeService = new SubscribeService(TenantTypeIds.Instance().BarSection());
                    bool             isSubscribed     = subscribeService.IsSubscribed(sectionId, currentUser.UserId);
                    if (!isSubscribed)
                    {
                        errorMessage = "您需要先关注此帖吧,才能回帖";
                    }
                    return(isSubscribed);
                }
            }
            else
            {
                if (authorizer.BarSection_Manage(barSection))
                {
                    return(true);
                }
                bool isTenantMember = authorizer.AuthorizationService.IsTenantMember(currentUser, barSection.TenantTypeId, barSection.SectionId);
                if (!isTenantMember)
                {
                    errorMessage = "您需要先加入,才能回帖";
                }
                return(isTenantMember);
            }

            //站点设置是否启用了匿名发帖
            ISiteSettingsManager siteSettingsManager = DIContainer.Resolve <ISiteSettingsManager>();
            SiteSettings         siteSettings        = siteSettingsManager.Get();

            if (siteSettings.EnableAnonymousPosting)
            {
                return(true);
            }

            if (currentUser == null)
            {
                errorMessage = "您必须先登录,才能回帖";
                return(false);
            }
            return(true);
        }
Exemple #12
0
        /// <summary>
        /// 是否具有创建BarThread的权限
        /// </summary>
        /// <param name="authorizer"></param>
        /// <param name="sectionId">所属帖吧Id</param>
        /// <param name="errorMessage">无权信息提示</param>
        /// <returns></returns>
        public static bool BarThread_Create(this Authorizer authorizer, long sectionId, out string errorMessage)
        {
            errorMessage = string.Empty;
            IUser currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                errorMessage = "您需要先登录,才能发帖";
                return(false);
            }
            BarSectionService barSectionService = new BarSectionService();
            var barSection = barSectionService.Get(sectionId);

            if (barSection == null)
            {
                errorMessage = "贴吧不存在";
                return(false);
            }

            if (authorizer.BarSection_Manage(barSection))
            {
                return(true);
            }

            if (!authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Bar_CreateThread()))
            {
                if (currentUser.IsModerated)
                {
                    errorMessage = Resources.Resource.Description_ModeratedUser_CreateBarThreadDenied;
                }
                return(false);
            }
            if (barSection.TenantTypeId == TenantTypeIds.Instance().Bar())
            {
                IBarSettingsManager barSettingsManager = DIContainer.Resolve <IBarSettingsManager>();
                BarSettings         barSetting         = barSettingsManager.Get();
                if (barSetting.OnlyFollowerCreateThread)
                {
                    SubscribeService subscribeService = new SubscribeService(TenantTypeIds.Instance().BarSection());
                    if (subscribeService.IsSubscribed(sectionId, currentUser.UserId))
                    {
                        return(true);
                    }
                    else
                    {
                        errorMessage = "您需要先关注此帖吧,才能发帖";
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                if (authorizer.AuthorizationService.IsTenantMember(currentUser, barSection.TenantTypeId, barSection.SectionId))
                {
                    return(true);
                }
                else
                {
                    TenantType tenantType = new TenantTypeService().Get(barSection.TenantTypeId);
                    errorMessage = string.Format("只有加入{0}才能发帖", tenantType.Name);
                    return(false);
                }
            }
        }
Exemple #13
0
 /// <summary>
 /// 创建Blog的权限项标识
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string Blog_Create(this PermissionItemKeys pik)
 {
     return("Blog_Create");
 }
Exemple #14
0
        /// <summary>
        /// 上传照片/照片采集
        /// </summary>
        /// <remarks>
        /// 相册主人或管理员可以上传指定相册的图片
        /// </remarks>
        public static bool Photo_Create(this Authorizer authorizer, Album album, out string errorMessage)
        {
            IUser currentUser = UserContext.CurrentUser;

            errorMessage = "没有权限上传照片";

            if (currentUser == null)
            {
                errorMessage = "您必须先登录,才能上传照片";
                return(false);
            }

            if (authorizer.IsAdministrator(PhotoConfig.Instance().ApplicationId))
            {
                return(true);
            }

            if (album.UserId == currentUser.UserId && authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Photo_Create()))
            {
                return(true);
            }

            if (currentUser.IsModerated)
            {
                errorMessage = Resources.Resource.Description_ModeratedUser_CreatePhotoDenied;
            }
            return(false);
        }
Exemple #15
0
        /// <summary>
        /// 上传照片
        /// </summary>
        /// <param name="authorizer"></param>
        /// <param name="spaceKey"></param>
        /// <returns></returns>
        public static bool Photo_Upload(this Authorizer authorizer, string spaceKey, out string errorMessage)
        {
            IUser currentUser = UserContext.CurrentUser;

            errorMessage = "没有权限上传照片";

            if (currentUser == null)
            {
                errorMessage = "您必须先登录,才能上传照片";
                return(false);
            }

            if (authorizer.IsAdministrator(PhotoConfig.Instance().ApplicationId))
            {
                return(true);
            }

            if (currentUser.UserName.Equals(spaceKey, StringComparison.CurrentCultureIgnoreCase) && authorizer.AuthorizationService.Check(currentUser, PermissionItemKeys.Instance().Photo_Create()))
            {
                return(true);
            }
            if (currentUser.IsModerated)
            {
                errorMessage = Resources.Resource.Description_ModeratedUser_CreatePhotoDenied;
            }
            return(false);
        }
Exemple #16
0
 /// <summary>
 /// 回答问题的权限项标识
 /// </summary>
 /// <param name="pik"><see cref="PermissionItemKeys"/></param>
 /// <returns></returns>
 public static string Ask_CreateAnswer(this PermissionItemKeys pik)
 {
     return("Ask_CreateAnswer");
 }