Check directory permissions for adding new files.

This commit is contained in:
Sam Greytalon 2023-11-16 10:16:03 -08:00
parent 029a5c07e1
commit 251c7640a3
1 changed files with 13 additions and 3 deletions

View File

@ -339,7 +339,7 @@ sub make_size_human_readable ($size) {
sub user_save_file_to_path ($user, $file, $path) {
my ( $code, $message ) = check_user_can_create_file($user, $path);
( $code, $message ) = check_dexter_can_edit_file($path);
( $code, $message ) = check_dexter_can_create_file($path);
return $code, $message if $code != 200;
my $path_string = $ROOT_DIRECTORY . $path->to_route;
@ -351,7 +351,7 @@ sub user_save_file_to_path ($user, $file, $path) {
sub user_mkdir_at_path ($user, $path) {
my ( $code, $message ) = check_user_can_create_file($user, $path);
( $code, $message ) = check_dexter_can_edit_file($path);
( $code, $message ) = check_dexter_can_create_file($path);
return $code, $message if $code != 200;
my $path_string = $ROOT_DIRECTORY . $path->to_route;
@ -388,7 +388,7 @@ sub user_move_path_to_path ($user, $path, $new_path) {
return $code, $message if $code != 200;
( $code, $message ) = check_user_can_create_file($user, $new_path);
( $code, $message ) = check_dexter_can_edit_file($new_path);
( $code, $message ) = check_dexter_can_create_file($new_path);
return $code, $message if $code != 200;
my $path_string = $ROOT_DIRECTORY . $path->to_route;
@ -620,6 +620,16 @@ sub check_dexter_can_edit_file ($path) {
return 200, '';
}
sub check_dexter_can_create_file ($path) {
my $path_string = $path->clone->trailing_slash(0)->to_dir->to_route;
if ( not -w $ROOT_DIRECTORY . $path_string ) {
return 500, "Dexter cannot create the file at '$path_string'!";
}
return 200, '';
}
if ( module_installed('OpenBSD::Unveil') ) {