made folder paths cross platform, introduced file handler for abstracting the serving of files, enabled url mapping for broken file links, resolved public folder deletion issue
This commit is contained in:
@ -73,7 +73,7 @@ namespace Oqtane.Repository
|
||||
int start = segments.Length;
|
||||
for (int i = 0; i < segments.Length; i++)
|
||||
{
|
||||
if (segments[i] == "api" || segments[i] == "pages" || segments[i] == Constants.ModuleDelimiter)
|
||||
if (Constants.ReservedRoutes.Contains(segments[i]) || segments[i] == Constants.ModuleDelimiter)
|
||||
{
|
||||
start = i;
|
||||
break;
|
||||
|
@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@ -82,6 +83,24 @@ namespace Oqtane.Repository
|
||||
return file;
|
||||
}
|
||||
|
||||
public File GetFile(int siteId, string folderPath, string fileName)
|
||||
{
|
||||
var file = _db.File.AsNoTracking()
|
||||
.Include(item => item.Folder)
|
||||
.FirstOrDefault(item => item.Folder.SiteId == siteId &&
|
||||
item.Folder.Path.ToLower() == folderPath &&
|
||||
item.Name.ToLower() == fileName);
|
||||
|
||||
if (file != null)
|
||||
{
|
||||
IEnumerable<Permission> permissions = _permissions.GetPermissions(EntityNames.Folder, file.FolderId).ToList();
|
||||
file.Folder.Permissions = permissions.EncodePermissions();
|
||||
file.Url = GetFileUrl(file, _tenants.GetAlias());
|
||||
}
|
||||
|
||||
return file;
|
||||
}
|
||||
|
||||
public void DeleteFile(int fileId)
|
||||
{
|
||||
File file = _db.File.Find(fileId);
|
||||
@ -105,17 +124,7 @@ namespace Oqtane.Repository
|
||||
|
||||
private string GetFileUrl(File file, Alias alias)
|
||||
{
|
||||
string url = "";
|
||||
switch (file.Folder.Type)
|
||||
{
|
||||
case FolderTypes.Private:
|
||||
url = Utilities.ContentUrl(alias, file.FileId);
|
||||
break;
|
||||
case FolderTypes.Public:
|
||||
url = alias.BaseUrl + Utilities.UrlCombine("Content", "Tenants", alias.TenantId.ToString(), "Sites", file.Folder.SiteId.ToString(), file.Folder.Path) + file.Name;
|
||||
break;
|
||||
}
|
||||
return url;
|
||||
return Utilities.FileUrl(alias, file.Folder.Path, file.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Models;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
@ -10,6 +10,7 @@ namespace Oqtane.Repository
|
||||
File UpdateFile(File file);
|
||||
File GetFile(int fileId);
|
||||
File GetFile(int fileId, bool tracking);
|
||||
File GetFile(int siteId, string folderPath, string fileName);
|
||||
void DeleteFile(int fileId);
|
||||
string GetFilePath(int fileId);
|
||||
string GetFilePath(File file);
|
||||
|
@ -134,7 +134,7 @@ namespace Oqtane.Repository
|
||||
new Permission(PermissionNames.Edit, RoleNames.Admin, true)
|
||||
}.EncodePermissions()
|
||||
});
|
||||
_folderRepository.AddFolder(new Folder { SiteId = site.SiteId, ParentId = folder.FolderId, Name = "Public", Type = FolderTypes.Public, Path = Utilities.PathCombine("Public", Path.DirectorySeparatorChar.ToString()), Order = 1, ImageSizes = "", Capacity = 0, IsSystem = false,
|
||||
_folderRepository.AddFolder(new Folder { SiteId = site.SiteId, ParentId = folder.FolderId, Name = "Public", Type = FolderTypes.Public, Path = "Public/", Order = 1, ImageSizes = "", Capacity = 0, IsSystem = false,
|
||||
Permissions = new List<Permission>
|
||||
{
|
||||
new Permission(PermissionNames.Browse, RoleNames.Admin, true),
|
||||
@ -144,7 +144,7 @@ namespace Oqtane.Repository
|
||||
});
|
||||
_folderRepository.AddFolder(new Folder
|
||||
{
|
||||
SiteId = site.SiteId, ParentId = folder.FolderId, Name = "Users", Type = FolderTypes.Private, Path = Utilities.PathCombine("Users",Path.DirectorySeparatorChar.ToString()), Order = 3, ImageSizes = "", Capacity = 0, IsSystem = true,
|
||||
SiteId = site.SiteId, ParentId = folder.FolderId, Name = "Users", Type = FolderTypes.Private, Path = "Users/", Order = 3, ImageSizes = "", Capacity = 0, IsSystem = true,
|
||||
Permissions = new List<Permission>
|
||||
{
|
||||
new Permission(PermissionNames.Browse, RoleNames.Admin, true),
|
||||
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Oqtane.Extensions;
|
||||
@ -41,7 +40,7 @@ namespace Oqtane.Repository
|
||||
}
|
||||
|
||||
// add folder for user
|
||||
Folder folder = _folders.GetFolder(user.SiteId, Utilities.PathCombine("Users", Path.DirectorySeparatorChar.ToString()));
|
||||
Folder folder = _folders.GetFolder(user.SiteId, "Users/");
|
||||
if (folder != null)
|
||||
{
|
||||
_folders.AddFolder(new Folder
|
||||
@ -50,7 +49,7 @@ namespace Oqtane.Repository
|
||||
ParentId = folder.FolderId,
|
||||
Name = "My Folder",
|
||||
Type = FolderTypes.Private,
|
||||
Path = Utilities.PathCombine(folder.Path, user.UserId.ToString(), Path.DirectorySeparatorChar.ToString()),
|
||||
Path = $"Users/{user.UserId}/",
|
||||
Order = 1,
|
||||
ImageSizes = "",
|
||||
Capacity = Constants.UserFolderCapacity,
|
||||
|
Reference in New Issue
Block a user