Changeset 2802
- Timestamp:
- Oct 25, 2006, 11:18:11 AM (17 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/core/net/sf/basedb/core/Permission.java
r2722 r2802 154 154 155 155 /** 156 Expand the given set of permissions to make sure it includes 157 all implicitely granted permissions. For example if the set contains 158 WRITE it is exapnded to READ, USE, RESTRICTED_WRITE and WRITE. 159 160 @param permissions The permissions to expand 161 @return A new set containing the expanded permissions or null 162 if the parameter is null 163 */ 164 public static Set<Permission> expand(Set<Permission> permissions) 165 { 166 if (permissions == null) return null; 167 return fromInt(grant(permissions)); 168 } 169 170 /** 156 171 Checks if the given <code>Permission</code> is granted by the 157 172 <code>permissions</code> code. -
trunk/src/core/net/sf/basedb/core/plugin/Permissions.java
r2722 r2802 82 82 } 83 83 84 85 public String toString() 86 { 87 return itemType + "; granted=" + alwaysGranted + "; maybe=" + maybeGranted; 88 } 89 84 90 } -
trunk/www/admin/plugindefinitions/edit_plugin.jsp
r2753 r2802 42 42 import="net.sf.basedb.core.RoleKey" 43 43 import="net.sf.basedb.core.SystemItems" 44 import="net.sf.basedb.core.plugin.Plugin" 45 import="net.sf.basedb.core.plugin.Permissions" 44 46 import="net.sf.basedb.core.query.Restrictions" 45 47 import="net.sf.basedb.core.query.Orders" … … 53 55 import="java.util.Map" 54 56 import="java.util.List" 57 import="java.util.Collection" 55 58 %> 56 59 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %> … … 78 81 sb.append(" []"); 79 82 return sb.toString(); 83 } 84 private void appendPermissionLetter(StringBuilder sb, Permission p, String letter, 85 Set<Permission> defined, Set<Permission> always, Set<Permission> maybe) 86 { 87 if (defined.contains(p)) 88 { 89 if (always != null && always.contains(p)) 90 { 91 sb.append(letter.toUpperCase()); 92 } 93 else if (maybe != null && maybe.contains(p)) 94 { 95 sb.append(letter.toLowerCase()); 96 } 97 else 98 { 99 sb.append("-"); 100 } 101 } 80 102 } 81 103 %> … … 94 116 boolean isTrusted = true; 95 117 boolean usePermissions = false; 118 Collection<Permissions> requestedPermissions = null; 96 119 97 120 final int selectedAgentId = Values.getInt(request.getParameter("jobagent_id"), -1); … … 127 150 agentQuery.join(Hql.innerJoin("plugins", "p")); 128 151 agentQuery.restrict(Restrictions.eq(Hql.property("p", "pluginDefinition"), Hql.entity(plugin))); 152 153 Plugin thePlugin = plugin.newInstance(Plugin.class, null, sc, null, null); 154 requestedPermissions = thePlugin.getPermissions(); 129 155 } 130 156 … … 490 516 if ((defined & permission) > 0) 491 517 { 492 p = (granted & permission) > 0 ? cc : ((denied & permission) > 0 ? '-' : '?');518 p = (granted & permission) > 0 ? cc.toUpperCase() : ((denied & permission) > 0 ? '-' : cc.toLowerCase()); 493 519 } 494 520 return p; … … 628 654 } 629 655 } 656 <% 657 if (requestedPermissions != null && requestedPermissions.size() > 0) 658 { 659 %> 660 function setRequestedPermissions() 661 { 662 var frm = document.forms['plugin']; 663 // Reset all existing permissions 664 for (var i = 0; i < frm.items.length; i++) 665 { 666 var itemType = frm.items[i].value; 667 if (itemType) 668 { 669 frm[itemType+'_granted'].value = 0; 670 frm[itemType+'_denied'].value = 255; 671 } 672 } 673 // Set requested permissions 674 <% 675 for (Permissions pp : requestedPermissions) 676 { 677 Item ppType = pp.getItemType(); 678 Set<Permission> always = Permission.expand(pp.getAlwaysGranted()); 679 Set<Permission> maybe = Permission.expand(pp.getMaybeGranted()); 680 %> 681 frm['<%=ppType.name()%>_granted'].value = <%=always == null ? 0 : PermissionUtil.getPermissionCode(always)%>; 682 frm['<%=ppType.name()%>_denied'].value = <%=maybe == null ? 255 : 255 & ~PermissionUtil.getPermissionCode(maybe)%>; 683 <% 684 } 685 %> 686 // Update the list 687 initPermissions(); 688 } 689 <% 690 } 691 %> 630 692 </script> 631 693 </base:head> … … 686 748 <input type="radio" name="use_permissions" value="0" 687 749 <%=!usePermissions ? "checked" : ""%> onclick="usePermissionsOnClick()">no 750 <% 751 if (plugin == null) 752 { 753 %> 754 <input type="radio" name="use_permissions" value="2" 755 onclick="usePermissionsOnClick()">if requested by plugin 756 <% 757 } 758 %> 688 759 </td> 689 760 </tr> 690 761 </table> 691 762 692 <table 763 <table> 693 764 <tr valign="top"> 694 765 <td> … … 715 786 </td> 716 787 <td> 717 <b>Always grant</b><br> 718 <input type="checkbox" name="grant_create" onClick="permissionOnClick(this)">Create<br> 719 <input type="checkbox" name="grant_read" onClick="permissionOnClick(this)">Read<br> 720 <input type="checkbox" name="grant_use" onClick="permissionOnClick(this)">Use<br> 721 <input type="checkbox" name="grant_write" onClick="permissionOnClick(this)">Write<br> 722 <input type="checkbox" name="grant_delete" onClick="permissionOnClick(this)">Delete<br> 723 <input type="checkbox" name="grant_set_owner" onClick="permissionOnClick(this)">Set owner<br> 724 <input type="checkbox" name="grant_set_permission" onClick="permissionOnClick(this)">Set permission<br> 725 </td> 726 <td> 727 <b>Always deny</b><br> 728 <input type="checkbox" name="deny_create" onClick="permissionOnClick(this)">Create<br> 729 <input type="checkbox" name="deny_read" onClick="permissionOnClick(this)">Read<br> 730 <input type="checkbox" name="deny_use" onClick="permissionOnClick(this)">Use<br> 731 <input type="checkbox" name="deny_write" onClick="permissionOnClick(this)">Write<br> 732 <input type="checkbox" name="deny_delete" onClick="permissionOnClick(this)">Delete<br> 733 <input type="checkbox" name="deny_set_owner" onClick="permissionOnClick(this)">Set owner<br> 734 <input type="checkbox" name="deny_set_permission" onClick="permissionOnClick(this)">Set permission<br> 788 <table> 789 <tr><td> 790 <b>Always grant</b><br> 791 <input type="checkbox" name="grant_create" onClick="permissionOnClick(this)">Create<br> 792 <input type="checkbox" name="grant_read" onClick="permissionOnClick(this)">Read<br> 793 <input type="checkbox" name="grant_use" onClick="permissionOnClick(this)">Use<br> 794 <input type="checkbox" name="grant_write" onClick="permissionOnClick(this)">Write<br> 795 <input type="checkbox" name="grant_delete" onClick="permissionOnClick(this)">Delete<br> 796 <input type="checkbox" name="grant_set_owner" onClick="permissionOnClick(this)">Set owner<br> 797 <input type="checkbox" name="grant_set_permission" onClick="permissionOnClick(this)">Set permission 798 </td> 799 <td> 800 <b>Always deny</b><br> 801 <input type="checkbox" name="deny_create" onClick="permissionOnClick(this)">Create<br> 802 <input type="checkbox" name="deny_read" onClick="permissionOnClick(this)">Read<br> 803 <input type="checkbox" name="deny_use" onClick="permissionOnClick(this)">Use<br> 804 <input type="checkbox" name="deny_write" onClick="permissionOnClick(this)">Write<br> 805 <input type="checkbox" name="deny_delete" onClick="permissionOnClick(this)">Delete<br> 806 <input type="checkbox" name="deny_set_owner" onClick="permissionOnClick(this)">Set owner<br> 807 <input type="checkbox" name="deny_set_permission" onClick="permissionOnClick(this)">Set permission 808 </td> 809 <% 810 if (requestedPermissions != null && requestedPermissions.size() > 0) 811 { 812 %> 813 <td> 814 <b>Requested by plugin</b><br> 815 <table> 816 <% 817 for (Permissions pp : requestedPermissions) 818 { 819 Item ppType = pp.getItemType(); 820 Set<Permission> always = Permission.expand(pp.getAlwaysGranted()); 821 Set<Permission> maybe = Permission.expand(pp.getMaybeGranted()); 822 Set<Permission> defined = ppType.getDefinedPermissions(); 823 StringBuilder sb = new StringBuilder(); 824 sb.append("["); 825 appendPermissionLetter(sb, Permission.CREATE, "C", defined, always, maybe); 826 appendPermissionLetter(sb, Permission.READ, "R", defined, always, maybe); 827 appendPermissionLetter(sb, Permission.USE, "U", defined, always, maybe); 828 appendPermissionLetter(sb, Permission.WRITE, "W", defined, always, maybe); 829 appendPermissionLetter(sb, Permission.DELETE, "D", defined, always, maybe); 830 appendPermissionLetter(sb, Permission.SET_OWNER, "O", defined, always, maybe); 831 appendPermissionLetter(sb, Permission.SET_PERMISSION, "P", defined, always, maybe); 832 sb.append("]"); 833 %> 834 <tr> 835 <td><%=ppType%></td> 836 <td><%=sb.toString()%></td> 837 </tr> 838 <% 839 } 840 %> 841 </table> 842 <table><tr><td> 843 <base:button title="Use requested permissions" onclick="setRequestedPermissions()" 844 tooltip="Use the permissions requested by the plugin." /> 845 </td></tr></table> 846 </td> 847 <% 848 } 849 %> 850 </tr> 851 </table> 852 <b>Capital letters</b> = Permission is always granted<br> 853 <b>Small letters</b> = Permission is only granted if logged in user 854 has that permission 855 735 856 </td> 736 857 </tr> 737 858 </table> 859 860 738 861 </t:tab> 739 862 -
trunk/www/admin/plugindefinitions/index.jsp
r2753 r2802 134 134 String className = Values.getStringOrNull(request.getParameter("className")); 135 135 String jarPath = Values.getStringOrNull(request.getParameter("jarPath")); 136 int usePermissions = Values.getInt(request.getParameter("use_permissions")); 136 137 if (plugin == null) 137 138 { 138 plugin = PluginDefinition.getNew(dc, className, jarPath, false);139 plugin = PluginDefinition.getNew(dc, className, jarPath, usePermissions == 2); 139 140 message = "Plugin created"; 140 141 dc.saveItem(plugin); … … 143 144 { 144 145 dc.reattachItem(plugin); 145 plugin.loadPluginInformation(jarPath, className, false);146 plugin.loadPluginInformation(jarPath, className, usePermissions == 2); 146 147 message = "Plugin updated"; 147 148 } … … 160 161 plugin.setPermissions(key, PermissionUtil.getPermissions(granted), PermissionUtil.getPermissions(denied)); 161 162 } 162 plugin.setUsePermissions( Values.getBoolean(request.getParameter("use_permissions")));163 plugin.setUsePermissions(usePermissions != 0); 163 164 164 165 // Installed on job agents -
trunk/www/admin/plugindefinitions/view_plugin.jsp
r2753 r2802 70 70 Set<Permission> defined = itemType.getDefinedPermissions(); 71 71 StringBuilder sb = new StringBuilder(); 72 if (defined.contains(Permission.CREATE)) sb.append(granted.contains(Permission.CREATE) ? "C" : denied.contains(Permission.CREATE) ? "-" : " ?");73 if (defined.contains(Permission.READ)) sb.append(granted.contains(Permission.READ) ? "R" : denied.contains(Permission.READ) ? "-" : " ?");74 if (defined.contains(Permission.USE)) sb.append(granted.contains(Permission.USE) ? "U" : denied.contains(Permission.USE) ? "-" : " ?");75 if (defined.contains(Permission.WRITE)) sb.append(granted.contains(Permission.WRITE) ? "W" : denied.contains(Permission.WRITE) ? "-" : " ?");76 if (defined.contains(Permission.DELETE)) sb.append(granted.contains(Permission.DELETE) ? "D" : denied.contains(Permission.DELETE) ? "-" : " ?");77 if (defined.contains(Permission.SET_OWNER)) sb.append(granted.contains(Permission.SET_OWNER) ? "O" : denied.contains(Permission.SET_OWNER) ? "-" : " ?");78 if (defined.contains(Permission.SET_PERMISSION)) sb.append(granted.contains(Permission.SET_PERMISSION) ? "P" : denied.contains(Permission.SET_PERMISSION) ? "-" : " ?");72 if (defined.contains(Permission.CREATE)) sb.append(granted.contains(Permission.CREATE) ? "C" : denied.contains(Permission.CREATE) ? "-" : "c"); 73 if (defined.contains(Permission.READ)) sb.append(granted.contains(Permission.READ) ? "R" : denied.contains(Permission.READ) ? "-" : "r"); 74 if (defined.contains(Permission.USE)) sb.append(granted.contains(Permission.USE) ? "U" : denied.contains(Permission.USE) ? "-" : "u"); 75 if (defined.contains(Permission.WRITE)) sb.append(granted.contains(Permission.WRITE) ? "W" : denied.contains(Permission.WRITE) ? "-" : "w"); 76 if (defined.contains(Permission.DELETE)) sb.append(granted.contains(Permission.DELETE) ? "D" : denied.contains(Permission.DELETE) ? "-" : "d"); 77 if (defined.contains(Permission.SET_OWNER)) sb.append(granted.contains(Permission.SET_OWNER) ? "O" : denied.contains(Permission.SET_OWNER) ? "-" : "o"); 78 if (defined.contains(Permission.SET_PERMISSION)) sb.append(granted.contains(Permission.SET_PERMISSION) ? "P" : denied.contains(Permission.SET_PERMISSION) ? "-" : "p"); 79 79 return sb.toString(); 80 80 } … … 554 554 <tr class="panel"> 555 555 <td colspan="99" class="panel"> 556 <b>C</b> = Create, <b>R</b> = Read, <b>U</b> = Use, 557 <b>W</b> = Write, <b>D</b> = Delete, <b>O</b> = Change owner, <b>P</b> = Change permissions, 558 <b>?</b> = Logged in user's permission, <b>-</b> = Denied 556 Capital letters = Permission is always granted, Small letters = Permission is only granted if logged in user 557 has that permission<br> 558 <b>C/c</b> = Create, <b>R/r</b> = Read, <b>U/u</b> = Use, 559 <b>W/w</b> = Write, <b>D/d</b> = Delete, <b>O/o</b> = Change owner, 560 <b>P/p</b> = Change permissions 559 561 </td> 560 562 </tr>
Note: See TracChangeset
for help on using the changeset viewer.