Changeset 1407


Ignore:
Timestamp:
06/05/19 14:34:23 (5 years ago)
Author:
bln4
Message:

Group level permission is now completely a thing. If a frame has a Group property specified, then the value of that property will be used to look up a group frame in FrameIO.GROUP_PATH. It will then look on that frame for a list of members to the group. When doing permission checks, that list is passed in order to decide if the current user is a part of that group.

Location:
trunk/src/org/expeditee
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/gui/Frame.java

    r1406 r1407  
    3131import java.util.Map;
    3232import java.util.Stack;
     33import java.util.stream.Collectors;
     34import java.util.stream.Stream;
    3335
    3436import org.expeditee.actions.Simple;
     
    751753         */
    752754        public void setPermission(PermissionTriple permission) {
    753                 List<String> groupMembers = new ArrayList<String>();
     755                List<String> groupMembers = getGroupMembers();
    754756               
    755757                if (_permissionTriple != null && !_permissionTriple.getPermission(this._owner, groupMembers).equals(permission.getPermission(this._owner, groupMembers))) {
     
    11961198        }
    11971199
    1198         public PermissionTriple getPermission()
    1199         {
     1200        public PermissionTriple getPermission() {
    12001201                return _permissionTriple;
    12011202        }
    12021203       
    1203         public UserAppliedPermission getUserAppliedPermission()
    1204         {
     1204        public UserAppliedPermission getUserAppliedPermission() {
    12051205                return getUserAppliedPermission(UserAppliedPermission.full);
    12061206        }
    12071207
    1208         public UserAppliedPermission getUserAppliedPermission(UserAppliedPermission defaultPermission)
    1209         {
     1208        public UserAppliedPermission getUserAppliedPermission(UserAppliedPermission defaultPermission) {
    12101209                if (_permissionTriple == null) {
    12111210                        return defaultPermission;
    12121211                }
    12131212
    1214                 return _permissionTriple.getPermission(_owner, new ArrayList<String>());
     1213                return _permissionTriple.getPermission(_owner, getGroupMembers());
    12151214        }
    12161215
     
    28082807                this._groupFrame = frame;
    28092808        }
     2809       
     2810        public List<String> getGroupMembers() {
     2811                List<String> members = new ArrayList<String>();
     2812                if (getGroupFrame() != null) {
     2813                        Collection<Text> textItems = getGroupFrame().getTextItems();
     2814                        Stream<Text> memberLists = textItems.stream().filter(t ->
     2815                                t.getText().toLowerCase().startsWith("@owner: ") ||
     2816                                t.getText().toLowerCase().startsWith("@members: "));
     2817                        for(Text t: memberLists.collect(Collectors.toList())) {
     2818                                if (t.getText().toLowerCase().startsWith("@owner: ")) {
     2819                                        members.add(t.getText().substring(8));
     2820                                } else if (t.getText().toLowerCase().startsWith("@members: ")) {
     2821                                        //10
     2822                                        String[] split = t.getText().substring(10).split(",");
     2823                                        for (String m: split) {
     2824                                                members.add(m.trim());
     2825                                        }
     2826                                }
     2827                        }
     2828                }
     2829                return members;
     2830        }
    28102831
    28112832        private static final class History {
  • trunk/src/org/expeditee/gui/FrameUtils.java

    r1406 r1407  
    503503                final PermissionTriple framePermissions = toDisplay.getPermission();
    504504                if (framePermissions != null
    505                                 && framePermissions.getPermission(toDisplay.getOwner(), new ArrayList<String>()) == UserAppliedPermission.denied) {
     505                                && framePermissions.getPermission(toDisplay.getOwner(), toDisplay.getGroupMembers()) == UserAppliedPermission.denied) {
    506506                        MessageBay.errorMessage("Insufficient permissions to navigate to frame: " + toDisplay.getName());
    507507                        return;
     
    10391039                                                                if (existingOverlay == null) {
    10401040                                                                        Overlay newOverlay = new Overlay(overlayFrame,
    1041                                                                                         permissionLevel.getPermission(overlayFrame.getOwner(), new ArrayList<String>()));
     1041                                                                                        permissionLevel.getPermission(overlayFrame.getOwner(), overlayFrame.getGroupMembers()));
    10421042                                                                        i.setOverlay(newOverlay);
    10431043                                                                        overlays.add(newOverlay);
  • trunk/src/org/expeditee/items/Item.java

    r1402 r1407  
    494494        }
    495495
    496         public void setPermission(PermissionTriple permissionPair)
    497         {
     496        public void setPermission(PermissionTriple permissionPair) {
     497                List<String> groupMembers = getParent() != null ? getParent().getGroupMembers() : new ArrayList<String>();
    498498                _permissionTriple = permissionPair;
    499                 if (_permissionTriple.getPermission(_owner, new ArrayList<String>()) == UserAppliedPermission.denied) {
     499                if (_permissionTriple.getPermission(_owner, groupMembers) == UserAppliedPermission.denied) {
    500500                        this.getParent().moveItemToBodyHiddenDueToPermission(this);
    501501                }
     
    507507
    508508        public UserAppliedPermission getUserAppliedPermission() {
     509                List<String> groupMembers = getParent() != null ? getParent().getGroupMembers() : new ArrayList<String>();
    509510                String owner = _owner != null ? _owner : _parent != null ? _parent.getOwner() : null;
    510                 if(_permissionTriple != null) return _permissionTriple.getPermission(owner, new ArrayList<String>());
     511                if(_permissionTriple != null) return _permissionTriple.getPermission(owner, groupMembers);
    511512                if(_overlayPermission != null) return _overlayPermission;
    512513                if(_parent != null) return _parent.getUserAppliedPermission();
Note: See TracChangeset for help on using the changeset viewer.