<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/129983/">https://git.reviewboard.kde.org/r/129983/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On March 13th, 2017, 12:10 p.m. UTC, <b>Elvis Angelaccio</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I'm not sure if we should show the warning dialog at the kio_file level. This would result in a double dialog when deleting files with Shift+Del from file managers. What about making jobuidelegate.cpp smarter? It could show a more "scary" message if the file that's being deleted is write-protected.</p></pre>
 </blockquote>




 <p>On March 14th, 2017, 2:49 p.m. UTC, <b>Chinmoy Ranjan Pradhan</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">In my system when i use Shift+del there is no warning dialog (few months back dolphin used to show the dialog but strangly it doesn't shows now) so this case didn't occured to me. </p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">If I am not wrong jobuidelegate's warning is shown before the job executes and kauth's authentication dialog is shown only after job executes. But its just the opposite we want. So if there's a way for slave to notify the job of starting of a priviledged action then there should be no problem in making jobuidelegate smarter. 
(But the thing is at this very moment i can't think of or find any possible way)</p></pre>
 </blockquote>





 <p>On March 14th, 2017, 10:07 p.m. UTC, <b>Elvis Angelaccio</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">You probably checked the "don't show again" checkbox ;) The jobuidelegate's dialog is shown by default, so we must assume the user will see it => we need a way to prevent showing the dialog twice. You are right that jobuidelegate is run before kio_file is involved. I was thinking of checking the permissions from jobuidelegate: can you check if QFileInfo would do the trick? (e.g. QFileInfo::isWritable()?)</p></pre>
 </blockquote>





 <p>On March 15th, 2017, 2:46 p.m. UTC, <b>Chinmoy Ranjan Pradhan</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">You probably checked the "don't show again" checkbox ;)</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Completely forgot about that :P</p>
<blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">we need a way to prevent showing the dialog twice</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I hope you mean the warning dialog because if the user is not authorised then there will be two dialogs.</p>
<blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I was thinking of checking the permissions from jobuidelegate: can you check if QFileInfo would do the trick?</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Checking permissions beforehand and then showing the dangerous warning is definitely a good idea. Now QFileInfo::isWritable will work only when deleteJob is started inside a write-protected location. Suppose if its a regular folder inside some regular location but containing a write-protected subfolder then the check's result will be useless. 
One thing we can do is stat the contents and as soon we find a write-protected location we can abort the stat'ing and show our special warning.</p></pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Sounds good. Please make sure to include this point in your proposal ;)</p></pre>
<br />










<p>- Elvis</p>


<br />
<p>On March 14th, 2017, 2:48 p.m. UTC, Chinmoy Ranjan Pradhan wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Frameworks, David Faure and Elvis Angelaccio.</div>
<div>By Chinmoy Ranjan Pradhan.</div>


<p style="color: grey;"><i>Updated March 14, 2017, 2:48 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kio
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This is regarding the GSOC idea https://community.kde.org/GSoC/2017/Ideas#Project:_Polkit_support_in_KIO.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This patch intends to demonstrate one possible approach to provide polkit support in kio. Here its only for the delete operation. This is based on the patch in task https://phabricator.kde.org/T5070.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The approach is as follows;
1. Whenever file ioslave gets access denied error it calls the method <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">execWithRoot</em> with the action that requires priviledge, the path of items
   upon which action needs to be performed and a warning ID as arguments.
2. <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">execWithRoot</em> then executes the KAuth::Action <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">org.kde.kio.file.execute</em>. 
3. This Kauth::Action has its Persistence set too 'session'. This means that after authentication the restrictions are dropped for a while, for  <br style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;" />
   about 5 minutes. This is similar to the behaviour of sudo command.
4. During this time we can perform any action as a privileged user without any authentication. So to prevent any mishap i added a warning box which
   would popup before performing any action(only during this period).
5. After the said time interval the root privileges are droped and calling <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">execWithRoot</em> should show the usual authentication dialog.</p></pre>
  </td>
 </tr>
</table>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>src/ioslaves/file/CMakeLists.txt <span style="color: grey">(b9132ce)</span></li>

 <li>src/ioslaves/file/file.h <span style="color: grey">(109ea80)</span></li>

 <li>src/ioslaves/file/file.cpp <span style="color: grey">(eaf6c88)</span></li>

 <li>src/ioslaves/file/file_unix.cpp <span style="color: grey">(82eb11a)</span></li>

 <li>src/ioslaves/file/kauth/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/ioslaves/file/kauth/file.actions <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/ioslaves/file/kauth/helper.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/ioslaves/file/kauth/helper.cpp <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/129983/diff/" style="margin-left: 3em;">View Diff</a></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">File Attachments </h1>


 <li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2017/03/09/d42570e8-aedf-4c02-801e-362a68755c2c__polkit_integration.png">warning dialog</a></li>

</ul>




  </td>
 </tr>
</table>







  </div>
 </body>
</html>