Get Permissions edit working - Remove hangs

This commit is contained in:
Brian Read 2025-05-23 13:06:39 +01:00
parent 7d7cdf0aed
commit 14eb73098e
5 changed files with 39 additions and 109 deletions

View File

@ -251,7 +251,6 @@ sub actual_Table1 {
foreach my $share (@shares) {
my $sharename = $share->key();
my $sharedesc = $share->prop('Name');
$c->app->log->info("$sharename : $sharedesc");
next if (($share->prop('Hide') || 'no') eq 'yes');
my $removable = $share->prop('Removable') || 'yes';
my $actionModify = '<a href="sharesd?trt=MODIFY&Selected='.$sharename.'">'.$c->l('sf_Modify').'</a>';
@ -459,88 +458,13 @@ sub get_Table3 {
sub perform_PERMISSIONS {
my $c = shift;
my $sf_data = shift; #Data hash as parameter
my $ret = "";
my $db = $cdb; #maybe one of the others
my $dbkey = 'ChangeThis';
# To make it write to DB as comment, delete this (regex) string in each if statement "TRUE\) \#copy or perform with value: .* e.g."
$ret = $c->modify_perm();
if (! TRUE) #copy or perform with value: writegroup e.g. $db->set_prop($dbkey,'writegroup',$c->param('writegroup'),type=>'service'))
{$ret .= 'Perform/save failed for writegroup';}
if (! TRUE) #copy or perform with value: readgroup e.g. $db->set_prop($dbkey,'readgroup',$c->param('readgroup'),type=>'service'))
{$ret .= 'Perform/save failed for readgroup';}
if (! TRUE) #copy or perform with value: writegroup e.g. $db->set_prop($dbkey,'writegroup',$c->param('writegroup'),type=>'service'))
{$ret .= 'Perform/save failed for writegroup';}
if (! TRUE) #copy or perform with value: readgroup e.g. $db->set_prop($dbkey,'readgroup',$c->param('readgroup'),type=>'service'))
{$ret .= 'Perform/save failed for readgroup';}
if (! TRUE) #copy or perform with value: writegroup e.g. $db->set_prop($dbkey,'writegroup',$c->param('writegroup'),type=>'service'))
{$ret .= 'Perform/save failed for writegroup';}
if (! TRUE) #copy or perform with value: readgroup e.g. $db->set_prop($dbkey,'readgroup',$c->param('readgroup'),type=>'service'))
{$ret .= 'Perform/save failed for readgroup';}
if (! TRUE) #copy or perform with value: writegroup e.g. $db->set_prop($dbkey,'writegroup',$c->param('writegroup'),type=>'service'))
{$ret .= 'Perform/save failed for writegroup';}
if (! TRUE) #copy or perform with value: readgroup e.g. $db->set_prop($dbkey,'readgroup',$c->param('readgroup'),type=>'service'))
{$ret .= 'Perform/save failed for readgroup';}
if (! TRUE) #copy or perform with value: writegroup e.g. $db->set_prop($dbkey,'writegroup',$c->param('writegroup'),type=>'service'))
{$ret .= 'Perform/save failed for writegroup';}
if (! TRUE) #copy or perform with value: readgroup e.g. $db->set_prop($dbkey,'readgroup',$c->param('readgroup'),type=>'service'))
{$ret .= 'Perform/save failed for readgroup';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
if (! TRUE) #copy or perform with value: writeuser e.g. $db->set_prop($dbkey,'writeuser',$c->param('writeuser'),type=>'service'))
{$ret .= 'Perform/save failed for writeuser';}
if (! TRUE) #copy or perform with value: readuser e.g. $db->set_prop($dbkey,'readuser',$c->param('readuser'),type=>'service'))
{$ret .= 'Perform/save failed for readuser';}
#my $sf_data = shift; #Data hash as parameter
#my $ret = "";
#my $db = $cdb; #maybe one of the others
#my $dbkey = 'ChangeThis';
if ($ret eq "") {$ret = 'ok';}
return $ret;
}
@ -549,9 +473,6 @@ sub get_Table3 {
my $c = shift;
my $sf_data = shift; #Data hash as parameter
my $ret = "";
my $db = $cdb; #maybe one of the others
my $dbkey = 'ChangeThis';
# To make it write to DB as comment, delete this (regex) string in each if statement "TRUE\) \#copy or perform with value: .* e.g."
$ret = $c->remove_share();
if ($ret eq "") {$ret = 'ok';}
return $ret;
@ -680,22 +601,31 @@ sub modify_perm {
my $encryption = $acct->prop('Encryption') || 'disabled';
my $WriteGroups = join(",", $c->param('writegroup'));
my $WriteUsers = join(",", $c->param('writeuser'));
my @selected = @{$c->every_param('panelAccess')};
my $AdminPanels = join(',', @selected);
my @selectedwritegroups = @{$c->every_param('writegroup')};
my $WriteGroups = join(",", @selectedwritegroups);
my @selectedwriteusers = @{$c->every_param('writeuser')};
my $WriteUsers = join(",", @selectedwriteusers);
my @CleanReadGroups = ();
my @CleanReadUsers = ();
# EncFS doesn't expose underlying ACLs
# So, just remove any read only groups
# Read Only is not supported with encryption
my @selectedreadgroups = @{$c->every_param('readgroup')};
my @selectedreadusers = @{$c->every_param('readuser')};
if ($encryption ne 'enabled'){
# No need to have read access if write is already granted
foreach my $group ($c->param('readgroup')){
push (@CleanReadGroups, $group) unless (grep { $_ eq $group } $c->param('writegroup'));
foreach my $group (@selectedreadgroups){
push (@CleanReadGroups, $group) unless (grep { $_ eq $group } @selectedwritegroups);
}
foreach my $user ($c->param('readuser')){
push (@CleanReadUsers, $user) unless (grep { $_ eq $user } $c->param('writeuser'));
foreach my $user (@selectedreadusers){
push (@CleanReadUsers, $user) unless (grep { $_ eq $user } @selectedwriteusers);
}
}
my $ReadGroups = join(",",@CleanReadGroups);
@ -716,7 +646,7 @@ sub modify_perm {
else {
return $c->l("sf_ERROR_WHILE_MODIFYING_SHARE");
}
return undef;
return "";
}
# Remove a share

View File

@ -9,14 +9,14 @@
'sf_Modify' => 'Modify',
'sf_dynamic' => 'Dynamic',
'sf_description' => 'Description',
'sf_The_following_settings_control_the' => 'The following settings control the access of this shared folder using the HTTP/HTTPS protocol',
'sf_Create,_modify,_or_remove_shared' => 'create modify Or remove shared folders',
'sf_The_following_settings_control_the_HTTP' => 'The following settings control the access of this shared folder using the HTTP/HTTPS protocol',
'sf_Create,_modify,_or_remove_shared' => 'Create Modify or Remove shared folders',
'sf_Remove' => 'Remove',
'sf_httpaccess' => 'Httpaccess',
'sf_httpaccess' => 'HTTP access',
'sf_readuser' => 'reader',
'sf_Cancel' => 'Cancel',
'sf_All_files_belonging_to_this' => 'All files belonging to this shared folder will be deleted',
'sf_smbaccess' => 'Smbaccess',
'sf_smbaccess' => 'SMB access',
'sf_You_can_use_this_matrix' => 'You can use this matrix to define groups and users access permissions',
'sf_webdav' => 'Webdav',
'sf_Create_a_new_shared_folder' => 'Create a new shared folder',
@ -26,16 +26,16 @@
'sf_Shared_Folders' => 'Shared Folders',
'sf_MODIFY_panel_action_was_successful' => 'MODIFY panel action was successful',
'sf_indexes' => 'Indexes',
'sf_Are_you_sure_you_wish' => 'Are you sure you wish to remove it ?',
'sf_Are_you_sure_you_wish' => 'Are you sure you wish to remove it ? Use BACK in your browser if you wish to retain the share.',
'sf_Actionm' => 'action',
'sf_writeuser' => 'Writeuser',
'sf_LIST_panel_action_was_successful' => 'LIST panel action was successful',
'sf_Remove_shared_folder' => 'Remove shared folder',
'sf_PERMISSIONS_panel_action_was_successful' => 'PERMISSIONS panel action was successful',
'sf_Manage_shared-folders_settings:' => 'Manage shared-folders settings',
'sf_You_can_remove_any_shared' => 'You can remove any shared folder by clicking on the corresponding command next to the shared folder',
'sf_Manage_shared-folders_settings:' => 'Manage Shared Folder settings',
'sf_You_can_remove_any_shared' => 'You can remove or edit any shared folder by clicking on the corresponding action',
'sf_APPLY' => 'Apply',
'sf_requireSSL' => 'requires',
'sf_requireSSL' => 'Require SSL',
'sf_Groups' => 'Groups',
'sf_Save' => 'Save',
'sf_Actionp' => 'action',
@ -43,8 +43,8 @@
'sf_Name' => 'Name',
'sf_Read_Only' => 'Read Only',
'sf_retention' => 'Retention',
'sf_Access_right_management' => 'Access right management',
'sf_Access_right_management' => 'Access rights management',
'sf_Read_/_Write' => 'Read / Write',
'sf_Create_or_modify_a_shared' => 'Create or modify a shared folder',
'sf_The_following_settings_control_the' => 'The following settings control the access of this shared folder from the local network Using the SMB/CIFS protocol',
'sf_The_following_settings_control_the_SMB' => 'The following settings control access to this shared folder from the local network Using the SMB/CIFS protocol',
'sf_recyclebin' => 'Recyclebin',

View File

@ -50,7 +50,7 @@
<br></span></p>
<p class='paragraph para14'>
%=l('sf_The_following_settings_control_the')
%=l('sf_The_following_settings_control_the_SMB')
</p>
<p><span class=label>
@ -78,7 +78,7 @@
<br></span> </p>
<p class='paragraph para2'>
%=l('sf_The_following_settings_control_the')
%=l('sf_The_following_settings_control_the_HTTP')
</p>
<p><span class=label>

View File

@ -59,8 +59,8 @@
<tr class='table-row'>
<td class='sme-border table-col table-col-Table2_Groups'><%=$c->render_to_string(inline=>$row->{'Table2_Groups'})%></td>
<td class='sme-border table-col table-col-Table2_Description'><%=$c->render_to_string(inline=>$row->{'Table2_Description'})%></td>
<td class='sme-border table-col table-col-Table3_Read / Write'><%=check_box 'writegroup',($row->{'Table2_Read / Write'} ? ('checked' => 1) : ())%></td>
<td class='sme-border table-col table-col-Table3_Read Only'><%=check_box 'readgroup',($row->{'Table2_Read Only'} ? ('checked' => 1) : ())%></td>
<td class='sme-border table-col table-col-Table2_Read / Write'><%= check_box 'writegroup', value => $row->{'Table2_Groups'}, ($row->{'Table2_Read / Write'} ? (checked => 'checked') : ()) %></td>
<td class='sme-border table-col table-col-Table2_Read Only'><%= check_box 'readgroup', value => $row->{'Table2_Groups'}, ($row->{'Table2_Read Only'} ? (checked => 'checked') : ()) %></td>
</tr>
%}
</tbody>
@ -81,8 +81,8 @@
<tr class='table-row'>
<td class='sme-border table-col table-col-Table3_Groups'><%=$c->render_to_string(inline=>$row->{'Table3_Users'})%></td>
<td class='sme-border table-col table-col-Table3_Description'><%=$c->render_to_string(inline=>$row->{'Table3_Description'})%></td>
<td class='sme-border table-col table-col-Table3_Read / Write'><%=check_box 'writeuser',($row->{'Table3_Read / Write'} ? ('checked' => 1) : ())%></td>
<td class='sme-border table-col table-col-Table3_Read Only'><%=check_box 'readuser',($row->{'Table3_Read Only'} ? ('checked' => 1) : ())%></td>
<td class='sme-border table-col table-col-Table3_Read / Write'><%= check_box 'writeuser', value => $row->{'Table3_Users'}, ($row->{'Table3_Read / Write'} ? (checked => 'checked') : ()) %></td>
<td class='sme-border table-col table-col-Table3_Read Only'><%= check_box 'readuser', value => $row->{'Table3_Users'}, ($row->{'Table3_Read Only'} ? (checked => 'checked') : ()) %></td>
</tr>
%}
</tbody>

View File

@ -52,7 +52,7 @@
</p>
<span class='data'>
%= submit_button l('sf_Cancel'), class => 'action subm149'
%#= submit_button l('sf_Cancel'), class => 'action subm149'
</span>
<span class='data'>