public async Task <List <IProjectSettings> > GetUserProjects(string userName, string password) { var permission = await security.ValidatePermissions( string.Empty, userName, password, CancellationToken ).ConfigureAwait(false); var result = new List <IProjectSettings>(); //empty if (!permission.CanEditPosts) { return(result); //empty } var project = await projectQueries.GetProjectSettings(permission.ProjectId, CancellationToken); if (project != null) { result.Add(project); return(result); } //await EnsureBlogSettings().ConfigureAwait(false); //return settings; return(await projectQueries.GetProjectSettingsByUser(userName, CancellationToken).ConfigureAwait(false)); }
public async Task <List <IPost> > GetRecentPosts( string projectId, string userName, string password, int numberToGet) { var permission = await security.ValidatePermissions( projectId, userName, password, CancellationToken ).ConfigureAwait(false); if (!permission.CanEditPosts) { return(new List <IPost>()); // empty } return(await postQueries.GetRecentPosts( projectId, numberToGet, CancellationToken) .ConfigureAwait(false)); }
public async Task <MetaWeblogSecurityResult> ValiatePermissions(MetaWeblogRequest request, CancellationToken cancellationToken) { var blogResult = await blogSecurity.ValidatePermissions( request.BlogId, request.UserName, request.Password, cancellationToken ).ConfigureAwait(false); return(new MetaWeblogSecurityResult( blogResult.DisplayName, blogResult.ProjectId, blogResult.IsAuthenticated, blogResult.CanEditPosts, blogResult.CanEditPages )); }
public async Task Create( string projectId, string userName, string password, IPage page, bool publish) { var permission = await security.ValidatePermissions( projectId, userName, password, CancellationToken ).ConfigureAwait(false); if (!permission.CanEditPosts) { return; } var settings = await projectService.GetProjectSettings(projectId).ConfigureAwait(false); if (publish) { page.PubDate = DateTime.UtcNow; } if (string.IsNullOrEmpty(page.Slug)) { var slug = ContentUtils.CreateSlug(page.Title); var available = await SlugIsAvailable(slug); if (available) { page.Slug = slug; } } var urlHelper = urlHelperFactory.GetUrlHelper(actionContextAccesor.ActionContext); var imageAbsoluteBaseUrl = urlHelper.Content("~" + settings.LocalMediaVirtualPath); if (context != null) { imageAbsoluteBaseUrl = context.Request.AppBaseUrl() + settings.LocalMediaVirtualPath; } // open live writer passes in posts with absolute urls // we want to change them to relative to keep the files portable // to a different root url page.Content = await _contentProcessor.ConvertMediaUrlsToRelative( settings.LocalMediaVirtualPath, imageAbsoluteBaseUrl, //this shold be resolved from virtual using urlhelper page.Content); // olw also adds hard coded style to images page.Content = _contentProcessor.RemoveImageStyleAttribute(page.Content); // here we need to process any base64 embedded images // save them under wwwroot // and update the src in the post with the new url // since this overload of Save is only called from metaweblog // and metaweblog does not base64 encode the images like the browser client // this call may not be needed here //await mediaProcessor.ConvertBase64EmbeddedImagesToFilesWithUrls( // settings.LocalMediaVirtualPath, // post // ).ConfigureAwait(false); var nonPublishedDate = new DateTime(1, 1, 1); if (page.PubDate == nonPublishedDate) { page.PubDate = DateTime.UtcNow; } await pageCommands.Create(projectId, page).ConfigureAwait(false); await eventHandlers.HandleCreated(projectId, page).ConfigureAwait(false); }
public async Task <string> NewPost( string blogId, string userName, string password, PostStruct newPost, bool publish, string authorDisplayName ) { var permission = await _security.ValidatePermissions( blogId, userName, password, CancellationToken.None ).ConfigureAwait(false); if (!permission.CanEditPosts) { _log.LogWarning($"rejecting new post because user {userName} cannot edit posts"); return(null); } var post = _mapper.GetPostFromStruct(newPost); post.BlogId = blogId; post.Id = Guid.NewGuid().ToString(); post.Author = authorDisplayName; post.CreatedByUser = permission.DisplayName; if (publish) { post.IsPublished = true; if (post.IsPublished) { post.PubDate = DateTime.UtcNow; } } else { post.DraftAuthor = post.Author; post.DraftContent = post.Content; post.Content = null; post.PubDate = null; } var convertToRelativeUrls = true; await _blogService.Create(post, convertToRelativeUrls).ConfigureAwait(false); if (publish) { await _blogService.FirePublishEvent(post); } return(post.Id); }
public async Task <string> NewPost( string blogId, string userName, string password, PostStruct newPost, bool publish, string authorDisplayName ) { var permission = await _security.ValidatePermissions( blogId, userName, password, CancellationToken.None ).ConfigureAwait(false); if (!permission.CanEditPosts) { _log.LogWarning($"rejecting new post because user {userName} cannot edit posts"); return(null); } var post = _mapper.GetPostFromStruct(newPost); post.BlogId = blogId; post.Id = Guid.NewGuid().ToString(); post.Author = authorDisplayName; post.CreatedByUser = permission.DisplayName; var utcPubDate = _timeZoneHelper.ConvertToUtc(newPost.postDate, permission.TimeZoneId); if (publish) { if (utcPubDate.Year == 1) { //invalid because not supplied utcPubDate = DateTime.UtcNow; } if (utcPubDate <= DateTime.UtcNow) { post.IsPublished = true; post.PubDate = utcPubDate; } else { //future date needs to be draft, it will auto publish after pub date post.DraftAuthor = post.Author; post.DraftContent = post.Content; post.DraftPubDate = utcPubDate; post.IsPublished = false; post.PubDate = null; post.Content = null; } } else { post.DraftAuthor = post.Author; post.DraftContent = post.Content; if (utcPubDate > DateTime.UtcNow) { post.DraftPubDate = utcPubDate; } post.Content = null; post.PubDate = null; } await _blogUrlResolver.ConvertMediaToRelativeUrls(post).ConfigureAwait(false); await _blogService.Create(post).ConfigureAwait(false); if (publish) { await _blogService.FirePublishEvent(post).ConfigureAwait(false); } return(post.Id); }