示例#1
0
        public override OperationStatus HasPermission(EntityPermission permission, ContentComment item = null, Guid?threadId = null)
        {
            if (!Security.IsCurrentUserValid())
            {
                return(OperationStatus.NoPermission);
            }
            if (IsCurrentAdminUser())
            {
                return(OperationStatus.Granted);
            }

            if (item != null && permission.IsDataChangePermission())
            {
                var currentThread = _threadWork.GetThread(item.Topic.ThreadId);
                if (item.IsHidden || item.Topic.IsHidden || currentThread.IsHidden || currentThread.IsAbstract)
                {
                    return(OperationStatus.CommentHasHidden);
                }
                if (item.IsLocked || item.Topic.IsLocked || currentThread.IsLocked)
                {
                    return(OperationStatus.CommentHasLocked);
                }
                if (Security.CurrentUser.UserId != item.UserId)
                {
                    return(OperationStatus.NoPermission);
                }
            }

            if (PermissionNameDictionary.ContainsKey(permission))
            {
                Guid?tId = null;
                if (item != null && item.Topic != null)
                {
                    tId = item.Topic.ThreadId;
                }
                else if (threadId.HasValue)
                {
                    tId = threadId;
                }

                if (tId == null)
                {
                    return(PermissionWork.IsPermissionGranted(Security.CurrentUser.RoleId, PermissionNameDictionary[permission]) ?
                           OperationStatus.Granted : OperationStatus.NoPermission);
                }
                else
                {
                    return(PermissionWork.IsPermissionGranted(Security.CurrentUser.RoleId, PermissionNameDictionary[permission], tId) ?
                           OperationStatus.Granted : OperationStatus.NoPermission);
                }
            }

            return(OperationStatus.NoPermission);
        }
示例#2
0
        static TopicWork()
        {
            PermissionNameDictionary.Add(EntityPermission.Read, PermissionConstants.Topic_Read);
            PermissionNameDictionary.Add(EntityPermission.Add, PermissionConstants.Topic_Add);
            PermissionNameDictionary.Add(EntityPermission.Update, PermissionConstants.Topic_Update);
            PermissionNameDictionary.Add(EntityPermission.Delete, PermissionConstants.Topic_Delete);
            PermissionNameDictionary.Add(EntityPermission.Vote, PermissionConstants.Topic_Vote);

            PermissionNameDictionary.Add(EntityPermission.UploadDocumentRead, PermissionConstants.Topic_Upload_Document_Read);
            PermissionNameDictionary.Add(EntityPermission.UploadDocument, PermissionConstants.Topic_Upload_Document);
            PermissionNameDictionary.Add(EntityPermission.UploadImage, PermissionConstants.Topic_Upload_Image);
        }