diff --git a/src/NzbDrone.Api/RootFolders/RootFolderModule.cs b/src/NzbDrone.Api/RootFolders/RootFolderModule.cs
index a4c0f892b..a2c4daed8 100644
--- a/src/NzbDrone.Api/RootFolders/RootFolderModule.cs
+++ b/src/NzbDrone.Api/RootFolders/RootFolderModule.cs
@@ -17,7 +17,8 @@ public RootFolderModule(IRootFolderService rootFolderService,
PathExistsValidator pathExistsValidator,
DroneFactoryValidator droneFactoryValidator,
MappedNetworkDriveValidator mappedNetworkDriveValidator,
- StartupFolderValidator startupFolderValidator)
+ StartupFolderValidator startupFolderValidator,
+ FolderWritableValidator folderWritableValidator)
: base(signalRBroadcaster)
{
_rootFolderService = rootFolderService;
@@ -34,7 +35,8 @@ public RootFolderModule(IRootFolderService rootFolderService,
.SetValidator(droneFactoryValidator)
.SetValidator(mappedNetworkDriveValidator)
.SetValidator(startupFolderValidator)
- .SetValidator(pathExistsValidator);
+ .SetValidator(pathExistsValidator)
+ .SetValidator(folderWritableValidator);
}
private RootFolderResource GetRootFolder(int id)
diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj
index a5a945d9a..75fd71535 100644
--- a/src/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/src/NzbDrone.Core/NzbDrone.Core.csproj
@@ -1036,6 +1036,7 @@
+
diff --git a/src/NzbDrone.Core/Validation/Paths/FolderWritableValidator.cs b/src/NzbDrone.Core/Validation/Paths/FolderWritableValidator.cs
new file mode 100644
index 000000000..bf88cf3be
--- /dev/null
+++ b/src/NzbDrone.Core/Validation/Paths/FolderWritableValidator.cs
@@ -0,0 +1,24 @@
+using System;
+using FluentValidation.Validators;
+using NzbDrone.Common.Disk;
+
+namespace NzbDrone.Core.Validation.Paths
+{
+ public class FolderWritableValidator : PropertyValidator
+ {
+ private readonly IDiskProvider _diskProvider;
+
+ public FolderWritableValidator(IDiskProvider diskProvider)
+ : base($"Folder is not writable by user {Environment.UserName}")
+ {
+ _diskProvider = diskProvider;
+ }
+
+ protected override bool IsValid(PropertyValidatorContext context)
+ {
+ if (context.PropertyValue == null) return false;
+
+ return (_diskProvider.FolderWritable(context.PropertyValue.ToString()));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/UI/.idea/inspectionProfiles/Project_Default.xml b/src/UI/.idea/inspectionProfiles/Project_Default.xml
index 7f20f79f3..7aba4e3c2 100644
--- a/src/UI/.idea/inspectionProfiles/Project_Default.xml
+++ b/src/UI/.idea/inspectionProfiles/Project_Default.xml
@@ -85,7 +85,6 @@
-
diff --git a/src/UI/.idea/modules.xml b/src/UI/.idea/modules.xml
index b290b0a91..ab774833e 100644
--- a/src/UI/.idea/modules.xml
+++ b/src/UI/.idea/modules.xml
@@ -5,5 +5,4 @@
-
-
+
\ No newline at end of file