diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java index e83ee99..8152b5b 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java @@ -168,6 +168,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt private boolean selectRootItem; private FileUploader fileUploader; + public static String myLogin; public AppControllerExplorer() { Registry.register(ConstantsExplorer.RPC_WORKSPACE_SERVICE, rpcWorkspaceService); @@ -2045,6 +2046,8 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt public ExplorerPanel getPanel(){ this.explorerPanel = new ExplorerPanel(true, true); + + loadMyLogin(); // PollingWorkspace.pollReceivedMessages(-1, 20000); //the parameter -1 force (first) synchronization with HL @@ -2066,15 +2069,33 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt this.selectRootItem=selectRootItem; + loadMyLogin(); // if(instancingMessages) // PollingWorkspace.pollReceivedMessages(-1, 20000); //the parameter -1 force (first) synchronization with HL - - // PollingWorkspace.pollBulkCreator(ConstantsExplorer.TIME_BULK_CREATOR_POLLING); return this.explorerPanel; } + + private void loadMyLogin(){ + + rpcWorkspaceService.getMyLogin(new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error on loading my login is empty"); + myLogin = ""; + + } + + @Override + public void onSuccess(String result) { + GWT.log("My login is: "+result); + myLogin = result; + } + }); + } private void loadItemFromWorkspace(final String itemIdentifier){ diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java index f1341f9..d2d796b 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java @@ -199,4 +199,6 @@ public interface GWTWorkspaceService extends RemoteService{ void setACLs(String folderId, List listLogins, String aclType) throws Exception; + String getMyLogin(); + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java index f251f2f..0ab0222 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java @@ -177,4 +177,6 @@ public interface GWTWorkspaceServiceAsync { void setACLs(String folderId, List listLogins, String aclType, AsyncCallback callback); + void getMyLogin(AsyncCallback callback); + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java index 3e069f7..83a79b7 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java @@ -22,6 +22,7 @@ import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.form.TextArea; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.layout.FormLayout; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.HandlerManager; @@ -171,8 +172,10 @@ public class DialogShareFolder extends Dialog { public void onSuccess(List result) { for (InfoContactModel infoContactModel : result) { - listAlreadyShared.add(infoContactModel); - suggestPanel.addRecipient(infoContactModel.getName(),false); + if(infoContactModel.getName()!=null){ + listAlreadyShared.add(infoContactModel); + suggestPanel.addRecipient(infoContactModel.getName(),false); + } } lc.unmask(); @@ -190,13 +193,13 @@ public class DialogShareFolder extends Dialog { @Override public void onFailure(Throwable caught) { - + txtOwner.setValue("Error on retrieving Owner"); } @Override public void onSuccess(InfoContactModel result) { txtOwner.setValue(result.getName()); - + permissionControl(result.getName(), true); } }); @@ -205,10 +208,34 @@ public class DialogShareFolder extends Dialog { add(txtOwner); add(lc); addListners(); + enableFormDialog(false); //FORM IS DISABLED BY DEFAULT this.show(); } + private void permissionControl(String owner, boolean showAlert){ + GWT.log("Permission control compare between owner: "+owner +" and my login: "+AppControllerExplorer.myLogin); + + if(AppControllerExplorer.myLogin.compareToIgnoreCase(owner)!=0){ + enableFormDialog(false); + if(showAlert) + new MessageBoxAlert("Permission denied", "You have no permissions to change sharing. You are not owner of \""+txtName.getValue()+"\"", null); + }else{ + enableFormDialog(true); + } + } + + private void enableFormDialog(boolean bool){ + getButtonById(Dialog.OK).setEnabled(bool); + buttonMultiDrag.setEnabled(bool); + textAreaDescription.setEnabled(bool); + if(permission!=null) + permission.setEnabled(bool); + +// setEnabled(bool); + + } + public FileModel getParentFolder() { return parentFolder; } diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java index b57196f..b695143 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java @@ -2534,4 +2534,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } + + @Override + public String getMyLogin(){ + ASLSession asl = WsUtil.getAslSession(this.getThreadLocalRequest().getSession()); + return asl.getUsername(); + } } diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java b/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java index 2633b93..bec085b 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java @@ -103,10 +103,12 @@ public class WsUtil { }else if(user.compareToIgnoreCase(TEST_USER)==0){ withoutPortal = true; + + //COMMENT THIS IN PRODUCTION ENVIROMENT // }else if(user.compareToIgnoreCase("francesco.mangiacrapa")==0){ // // withoutPortal = true; - +// //END UNCOMMENT }else{ withoutPortal = false;