Ticket #2421: webPermissions.patch
File webPermissions.patch, 10.3 KB (added by mira, 15 years ago) |
---|
-
modules/org.sophie2.server.webui/src/main/resources/org/sophie2/server/webui/content/main.css
### Eclipse Workspace Patch 1.0 #P sophie
101 101 border: 1px outset #CCCCCC; 102 102 color: #222222; 103 103 padding: 0.1em 0.5em; 104 clear:left;105 104 float:left; 106 105 } 107 106 -
modules/org.sophie2.s2s/src/main/java/org/sophie2/s2s/ServerModule.java
44 44 ServerResourceHelper helper = ServerCoreModule.get().getResourceHelperExtension( 45 45 ).getObject(); 46 46 helper.initialize(); 47 WebAppModule.get().startServer( 8888);47 WebAppModule.get().startServer(9016); 48 48 } 49 49 }); 50 50 -
modules/org.sophie2.main.func.servers/src/main/java/org/sophie2/main/func/servers/logic/ServersTabLogic.java
14 14 import org.sophie2.base.connectivity.TransferManager; 15 15 import org.sophie2.base.connectivity.TransferManager.TransferManagerCache; 16 16 import org.sophie2.base.connectivity.resources.ResourceDirectoryH; 17 import org.sophie2.base.connectivity.resources.ResourceDirectoryR4;18 17 import org.sophie2.base.connectivity.resources.ServerAccessOptions; 19 18 import org.sophie2.base.connectivity.resources.binary.FacadeBinData; 20 19 import org.sophie2.base.connectivity.resources.binary.FacadeBinDataUtil; … … 444 443 final ResourceRefR4 resourceRef = 445 444 ResourceRefR4.makeChild(output.getResourcePath()); 446 445 447 StoredResourceAccess directoryAccess = (StoredResourceAccess) serverResourcesDirectory.getAccess(); 448 if (ResourceDirectoryR4.KEY_RESOURCES.get(directoryAccess).contains(resourceRef)) { 446 if (serverResourcesDirectory.getResources().contains(resourceRef)) { 449 447 DialogUtils.showErrorDialog(bookDocView.swingComponent().get(), 450 448 "There is already a resource at "+ resourceRef, "Could not upload resource"); 451 449 return false; … … 455 453 AccountH account = output.getAccount(); 456 454 ServerConnection connection = accountsConnections.get(account); 457 455 456 StoredResourceAccess directoryAccess = (StoredResourceAccess) serverResourcesDirectory.getAccess(); 458 457 ResourceRefR4 absUserRef = directoryAccess.getAccessOptions().getUser(); 459 final ResourceRefR4 userRef = UserH.getRelRefFromUsers(absUserRef); 460 final SecurityPermission othersPermissions = output.getPermissionLevel(); 461 final ResourceRefR4 defGroupRef = UserGroupR4.DEF_GROUP_REF; 462 463 new AutoAction(Message.create("Setting up the access permissions"), true) { 464 465 @Override 466 public void performAuto() { 467 //Start at empty map every time you upload a book 468 ImmMap<ResourceRefR4, SecurityPermission> permissions = 469 ImmTreeMap.<ResourceRefR4, SecurityPermission>empty() 470 .put(userRef, SecurityPermission.WRITE); 471 if (SecurityPermission.NONE != othersPermissions) { 472 permissions = permissions.put(defGroupRef, othersPermissions); 473 } 474 getChanger().setRaw(ResourceR4.KEY_SECURITY, permissions); 475 } 476 477 }.register(bookAccess); 478 479 ResourceModel bookModel = bookAccess.getHead().getModel(); 480 ResourceRefR4 absoluteRef = serverResourcesDirectory.getRef().sub(resourceRef); 481 String sessionId = connection.sessionId().get(); 482 final ResourceModel serverBookModel = FacadeBinDataUtil.convertBinDatasToFacade( 483 connection.getFacade(), absoluteRef, sessionId, bookModel, true); 484 serverBookModel.debugPrint(); 485 486 final ResourceRefList curResources = 487 serverResourcesDirectory.getResources(); 488 489 new AutoAction(Message.create(UPLOAD_RES_TO_SERVER, resourceRef, 490 serverResourcesDirectory.getRef()), true) { 491 @Override 492 public void performAuto() { 493 ResourceChanger dirChanger = getChanger(); 494 ResourceDirectoryH.addResource(dirChanger, resourceRef, 495 serverBookModel, curResources); 496 } 458 ResourceRefR4 userRef = UserH.getRelRefFromUsers(absUserRef); 459 SecurityPermission othersPermissions = output.getPermissionLevel(); 497 460 498 }.register(directoryAccess); 461 ResourceRefR4 absoluteRef = uploadToDirectory(serverResourcesDirectory, resourceRef, bookAccess, 462 connection, userRef, othersPermissions); 499 463 500 RevisionId lastRevId = directoryAccess.getHead().getId();501 464 // XXX: may be sync must be in open of server locator. 465 RevisionId lastRevId = directoryAccess.getHead().getId(); 502 466 directoryAccess.syncToRemoteMaster(); 503 467 RevisionId curRevId = directoryAccess.getHead().getId(); 504 468 if (lastRevId != curRevId) { … … 506 470 manager.startUpload(absoluteRef); 507 471 } 508 472 509 AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView);510 473 //Close current doc view and if needed open from server. 474 AppMainWindow mainWindow = AppViewUtil.findMainWindow(bookDocView); 511 475 if (output.isStartEditingOnServer()) { 512 476 ResourceLocator locator = mainWindow.locator().get(); 513 477 AccessOptions options = bookAccess.getAccessOptions().modifyUser(userRef); 514 AccessOptions serverOptions = new ServerAccessOptions(options, sessionId);478 AccessOptions serverOptions = new ServerAccessOptions(options, connection.sessionId().get()); 515 479 StoredResourceAccess serverAccess = 516 480 (StoredResourceAccess) locator.open(absoluteRef, serverOptions); 517 481 … … 520 484 mainWindow.documents().get().remove(bookDocView); 521 485 mainWindow.currentDocument().set(null); 522 486 } 487 488 //close the old access 523 489 bookAccess.close(); 524 490 491 //update resources palette (to add the new resource) 525 492 ServerResourcesPalette resourcesPalette = 526 493 connectionsPalette.findNearestElement(null, ServerResourcesPalette.class); 527 528 updateResources(resourcesPalette, connectionsPalette, connection.account().get()); 494 updateResources(resourcesPalette, connectionsPalette, account); 529 495 530 496 return true; 531 497 } 532 533 498 }; 534 499 535 500 /** … … 588 553 589 554 assert mainWindow != null : "There is no main window??"; 590 555 ServerAccessOptions options = new ServerAccessOptions( 591 AccessOptions.DEFAULT_ACCESS_OPTIONS , cacheKey.getSessionId());556 AccessOptions.DEFAULT_ACCESS_OPTIONS.modifyViewId(), cacheKey.getSessionId()); 592 557 ResourceRefR4 bookref = cacheKey.getRef(); 593 558 ResourceAccess bookAccess = mainWindow.locator().get().open(bookref, options); 594 559 … … 695 660 return null; 696 661 } 697 662 663 /** 664 * Helper method that adds changes security properties of a book and adds it 665 * to a given server directory. 666 * 667 * @param serverResourcesDirectory 668 * The main server directory for resources. 669 * @param resourceRef 670 * The ref of the new resource in the directory. 671 * @param bookAccess 672 * The access of the book to upload. 673 * @param connection 674 * The connection to the server to upload by. 675 * @param userRef 676 * The user that uploads the book. 677 * @param othersPermission 678 * The permission level of the default group of users. 679 * @return 680 * Absolute {@link ResourceRefR4} 681 */ 682 public static ResourceRefR4 uploadToDirectory( 683 ResourceDirectoryH serverResourcesDirectory, final ResourceRefR4 resourceRef, 684 ResourceAccess bookAccess, ServerConnection connection, 685 final ResourceRefR4 userRef, final SecurityPermission othersPermission) { 686 ResourceAccess directoryAccess = serverResourcesDirectory.getAccess(); 687 688 new AutoAction(Message.create("Setting up the access permissions"), true) { 689 690 @Override 691 public void performAuto() { 692 //Start at empty map every time you upload a book 693 ImmMap<ResourceRefR4, SecurityPermission> permissions = 694 ImmTreeMap.<ResourceRefR4, SecurityPermission>empty() 695 .put(userRef, SecurityPermission.WRITE); 696 if (SecurityPermission.NONE != othersPermission) { 697 permissions = permissions.put(UserGroupR4.DEF_GROUP_REF, othersPermission); 698 } 699 getChanger().setRaw(ResourceR4.KEY_SECURITY, permissions); 700 } 701 702 }.register(bookAccess); 703 704 ResourceModel bookModel = bookAccess.getHead().getModel(); 705 ResourceRefR4 absoluteRef = serverResourcesDirectory.getRef().sub(resourceRef); 706 String sessionId = connection.sessionId().get(); 707 final ResourceModel serverBookModel = FacadeBinDataUtil.convertBinDatasToFacade( 708 connection.getFacade(), absoluteRef, sessionId, bookModel, true); 709 serverBookModel.debugPrint(); 710 711 final ResourceRefList curResources = serverResourcesDirectory.getResources(); 712 713 new AutoAction(Message.create(UPLOAD_RES_TO_SERVER, resourceRef, 714 serverResourcesDirectory.getRef()), true) { 715 @Override 716 public void performAuto() { 717 ResourceChanger dirChanger = getChanger(); 718 ResourceDirectoryH.addResource(dirChanger, resourceRef, 719 serverBookModel, curResources); 720 } 721 722 }.register(directoryAccess); 723 724 return absoluteRef; 725 } 698 726 } 699 727 -
modules/org.sophie2.server.webui/src/main/resources/jsps/resource_directory.jspx
25 25 <form id="upload" action="${request.contextPath}/upload_resource" 26 26 enctype="multipart/form-data" 27 27 method="post"> 28 <input type="file" name="resourceFile"/> 29 <input type="submit" value="Upload" /> 28 <div class="formContainer"> 29 <input type="file" name="resourceFile"/> 30 <input type="submit" value="Upload" /> 31 <input type="radio" name="permission" value="noRights" checked="checked">No rights</input> 32 <input type="radio" name="permission" value="readRights">Read rights</input> 33 <input type="radio" name="permission" value="writeRights">Read and Write rights</input> 34 </div> 30 35 </form> 31 36 </s2w:template> 32 37 </jsp:root> 38 No newline at end of file