> On Feb. 17, 2016, 4:25 p.m., Di Li wrote:
> > Hello Keta, 
> > 
> > Why did you remove code change introduced via AMBARI-14228? Have you tested 
> > if that'd introduce regression?
> > 
> > If you look at DownloadService.java, methods mapped to   @Path("/zip")
> > neither is setting allowed to true. as the "allowed" is only set when url 
> > is /browse, have you tried distinguishing when to and not to check the 
> > "data.allowed" at the front end?
> > 
> > Please also add Jaimin Jetly as a reviewer?
> 
> Keta Patel wrote:
>     Hello Di,
>     I have added Jaimin Jetly as per your suggestion.
>     
>     Regarding your question on when the front end distinguishes between 
> checking "data.allowed" in the response, I have understood the following from 
> the code:
>     1. For the API with @Path("/browse"), the following happens on the 
> server-side:
>        - To check if the user has permission to read the file, a file-open 
> operation is performed. If the user has required permission, then the 
> operation goes through successfully.
>          But if the user does not have the permission, then a 
> "ServiceFormattedException" error is thrown. This error is caught in the 
> front-end by the controller and an error message is displayed.
>        - If the user is able to open the file without throwing the error:
>          - then the next statement checks if "checkperm=true", and returns a 
> response with "allowed=true"
>          - else if "checkperm=false", the response returned only contains the 
> file to be downloaded.
>        
>     2. For teh API with @Path("/concat") and @Path("/zip"), the following 
> happens on server-side:
>        - "checkperm" is not used at all.
>        - The response contains only the data of the file(s) to be downloaded.
>        
>     3. Front-end controller:
>        - It always calls the function "downloadFile" for any download action 
> in the FILES view.
>        - This function always makes the server call with "checkperm=true" 
>        - It then checks if the response contained "allowed=true" to proceed 
> with the download.
>        - If the response doesn't contain "allowed=true", nothing is done.
>        - If the response contains "allowed=true", a 2nd server call is made 
> with "checkperm=false" which returns the response with the file(s) to be 
> downloaded.
>     
>     
>     The above code works fine for the API with @Path("/browse"), but fails to 
> download for the other 2 APIs.
>     The proposed FIX in the patch does the following for the above 3 points:
>     1. For the API with @Path("/browse"):
>        - In order to see if the user has permission for the file, if the file 
> open operation does not throw an error, we can conclude that the user has the 
> required permission.
>          We do not need to set "allowed=true" just to indicate that the user 
> has the permission. In the proposed fix, I have removed the clause checking 
> if "checkperm=true" 
>          and hence, response no longer contains "allowed=true"
>        - If the user is able to open the file without throwing the error:
>          - the response returned only contains the file to be downloaded.
>     
>     2. For teh API with @Path("/concat") and @Path("/zip"):
>        - No changes are made.
>        
>     3. Front-end controller:
>        - I have removed the check for "allowed=true" in the response.
>        - If an error was thrown, it gets caught in the failureCallback 
> function.
>        - Else, the file is downloaded.
>     
>     Thank you!

I see. Thanks for the explanation.


- Di


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43508/#review119469
-----------------------------------------------------------


On Feb. 17, 2016, 7:22 p.m., Keta Patel wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43508/
> -----------------------------------------------------------
> 
> (Updated Feb. 17, 2016, 7:22 p.m.)
> 
> 
> Review request for Ambari, Di Li, DIPAYAN BHOWMICK, Jaimin Jetly, Pallav 
> Kulshreshtha, and Srimanth Gunturi.
> 
> 
> Bugs: AMBARI-14932
>     https://issues.apache.org/jira/browse/AMBARI-14932
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> Steps to Reproduce:
> 1. go to "View" - "FILES" - " Create Instance"
> 2. go to hdfs file view
> 3. click "download zip" icon
> The click doesn't download any file. The REST call returns 200 OK status.
> 
> Detailed steps on configuring Views can be found in the link below:
> http://docs.hortonworks.com/HDPDocuments/Ambari-2.1.0.0/bk_ambari_views_guide/bk_ambari_views_guide-20150721.pdf
> 
> 
> Diffs
> -----
> 
>   
> contrib/views/files/src/main/java/org/apache/ambari/view/filebrowser/DownloadService.java
>  749174a 
>   contrib/views/files/src/main/resources/ui/app/controllers/file.js 88fa5fb 
> 
> Diff: https://reviews.apache.org/r/43508/diff/
> 
> 
> Testing
> -------
> 
> FIX:
> The check for "allowed" in the controller, from the response of 
> zipByRequestId() ("/zip" API call for downloading zip file) resulted in no 
> action after clicking the download zip button. This was because there was no 
> "allowed" paramter in the response of zip download. This "allowed" property 
> was added in the response of browse() ("/browse" API call for downloading 
> individual file) to check if the user had permissions for the file or not. 
> This was verified by opening the file. If that operation didn't throw an 
> error, then it would mean that the user had the required permissions to 
> download the individual file. But the fact that the point of execution 
> reaches past the statement of opening the file verifies that the user has the 
> permission. The check with "checkperm" and setting the response with 
> "allowed" attribute in the response is not necessary. 
> So, for the fix I simply removed the check for "allowed" from the controller 
> and also removed the check for "checkperm" which sets the "allowed" attribute 
> in the response.
> 
> TESTS:
> There are already exisitng tests for DownloadService, so I haven't added any 
> new ones.
> 
> 
> Thanks,
> 
> Keta Patel
> 
>

Reply via email to