示例#1
0
        public async Task <IActionResult> CreateNote(string token, string noteTitle, string notebookId, bool isMarkdown, string dataSignJson)
        {
            if (string.IsNullOrEmpty(noteTitle))
            {
                noteTitle = "未命名";
            }
            var re       = new ApiRe();
            var verify   = false;
            var user     = tokenSerivce.GetUserByToken(token);
            var notebook = notebookService.GetNotebookById(notebookId.ToLongByHex());

            if (user == null || notebook == null)
            {
                return(LeanoteJson(re));
            }
            if (this.config.SecurityConfig.ForceDigitalSignature)
            {
                //验证签名
                var dataSign = DataSignDTO.FromJSON(dataSignJson);
                verify = await this.ePassService.VerifyDataSign(dataSign);

                if (!verify)
                {
                    return(LeanoteJson(re));
                }
                verify = dataSign.SignData.Operate.Equals("/api/Note/CreateNote");
                if (!verify)
                {
                    re.Msg = "Operate is not Equals ";
                    return(LeanoteJson(re));
                }
                //签名存证
                this.dataSignService.AddDataSign(dataSign, "CreateNote");
            }



            var repositoryId = notebook.NotesRepositoryId;

            verify = noteRepositoryService.Verify(repositoryId, user.UserId, RepositoryAuthorityEnum.Write);
            if (!verify)
            {
                return(LeanoteJson(re));
            }
            var noteId        = idGenerator.NextId();
            var noteContentId = idGenerator.NextId();
            var content       = isMarkdown ? "欢迎使用markdown文档 power by vditor" : "欢迎使用富文本文档 power by textbus";
            var usn           = noteRepositoryService.IncrUsn(repositoryId);

            NoteContent noteContent = new NoteContent()
            {
                NoteContentId = noteContentId,
                Abstract      = content,
                Content       = content,

                UserId        = user.UserId,
                NoteId        = noteId,
                CreatedTime   = DateTime.Now,
                UpdatedTime   = DateTime.Now,
                UpdatedUserId = user.UserId
            };

            noteContentService.AddNoteContent(noteContent);

            var note = new Note()
            {
                NotebookId        = notebook.NotebookId,
                NoteId            = noteId,
                ContentId         = noteContentId,
                Title             = noteTitle,
                UrlTitle          = noteTitle,
                NotesRepositoryId = repositoryId,
                IsMarkdown        = isMarkdown,
                CreatedTime       = DateTime.Now,
                UserId            = user.UserId,
                CreatedUserId     = user.UserId,
                Desc = string.Empty,
                Usn  = usn,
                Tags = Array.Empty <string>()
            };

            noteService.AddNote(note);
            re.Ok   = true;
            re.Data = note;
            return(LeanoteJson(re));
        }
示例#2
0
        public async Task <IActionResult> DeleteNotebook(string token, string noteRepositoryId, string notebookId, bool recursively, bool force, string dataSignJson)
        {
            User  user   = tokenSerivce.GetUserByToken(token);
            var   verify = false;
            ApiRe re     = new ApiRe()
            {
                Ok  = false,
                Msg = "NOTLOGIN",
            };

            if (user == null)
            {
                re.Msg = "NOTLOGIN";
                return(LeanoteJson(re));
            }
            if (this.config.SecurityConfig.ForceDigitalSignature)
            {
                //验证签名
                var dataSign = DataSignDTO.FromJSON(dataSignJson);
                verify = await this.ePassService.VerifyDataSign(dataSign);

                if (!verify)
                {
                    return(LeanoteJson(re));
                }
                verify = dataSign.SignData.Operate.Equals("/api/Notebook/DeleteNotebook");
                if (!verify)
                {
                    re.Msg = "Operate is not Equals ";
                    return(LeanoteJson(re));
                }
                //签名存证
                this.dataSignService.AddDataSign(dataSign, "DeleteNotebook");
            }

            var message      = "";
            var notebook     = notebookService.GetNotebookById(notebookId.ToLongByHex());
            var repositoryId = notebook.NotesRepositoryId;

            if (repositoryId != noteRepositoryId.ToLongByHex())
            {
                return(LeanoteJson(re));
            }
            //鉴别用户是否有权限
            verify = noteRepositoryService.Verify(repositoryId, user.UserId, RepositoryAuthorityEnum.Write);
            if (verify == false)
            {
                return(LeanoteJson(re));
            }
            //增加usn
            var usn = noteRepositoryService.IncrUsn(repositoryId);

            if (recursively)
            {
                re.Ok = notebookService.DeleteNotebookRecursively(notebookId.ToLongByHex(), usn);
            }
            else
            {
                re.Ok = notebookService.DeleteNotebook(notebookId.ToLongByHex(), usn);
            }

            return(LeanoteJson(re));
        }