Revision: 3480
Author: ferguson.sebastian
Date: Thu Apr 29 10:25:04 2010
Log: Added security on the domains and types objects
http://code.google.com/p/power-architect/source/detail?r=3480

Modified:
/trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ProjectSecurityPanel.java /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/SecurityPanel.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Wed Apr 21 09:00:48 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Thu Apr 29 10:25:04 2010
@@ -62,6 +62,7 @@
 import ca.sqlpower.enterprise.TransactionInformation;
 import ca.sqlpower.enterprise.client.RevisionController;
 import ca.sqlpower.enterprise.client.SPServerInfo;
+import ca.sqlpower.enterprise.client.User;
 import ca.sqlpower.sql.DataSourceCollection;
 import ca.sqlpower.sql.DatabaseListChangeEvent;
 import ca.sqlpower.sql.DatabaseListChangeListener;
@@ -284,6 +285,17 @@
             }
                });
        }
+
+       public User getUser() {
+           String username = 
getProjectLocation().getServiceInfo().getUsername();
+           User currentUser = null;
+        for (User user : getSystemWorkspace().getChildren(User.class)) {
+            if (user.getUsername().equals(username)) {
+                currentUser = user;
+            }
+        }
+           return currentUser;
+       }

        public void persistProjectToServer() throws SPPersistenceException {
final SPPersisterListener tempListener = new SPPersisterListener(jsonPersister,
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ProjectSecurityPanel.java Wed Apr 7 15:22:07 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ProjectSecurityPanel.java Thu Apr 29 10:25:04 2010
@@ -39,6 +39,7 @@
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JComponent;
+import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JList;
 import javax.swing.JOptionPane;
@@ -60,6 +61,7 @@
 import ca.sqlpower.enterprise.client.User;
 import ca.sqlpower.object.SPObject;
 import ca.sqlpower.swingui.DataEntryPanel;
+import ca.sqlpower.swingui.SPSUtils;

 import com.jgoodies.forms.builder.ButtonBarBuilder;
 import com.jgoodies.forms.builder.DefaultFormBuilder;
@@ -570,4 +572,29 @@
             return false;
         }
     }
-}
+
+ public static Action createShowAction(final ArchitectProject securityWorkspace, final SPObject subject, final Class type,
+            final String username, final JPanel panel) {
+       return new AbstractAction("Manage Security Settings...") {
+                public void actionPerformed(ActionEvent e) {
+ final JDialog d = SPSUtils.makeOwnedDialog(panel, "Security Manager");
+
+                    Action closeAction = new AbstractAction("Close") {
+                        public void actionPerformed(ActionEvent e) {
+                            d.dispose();
+                        }
+                    };
+
+                    ProjectSecurityPanel spm = new ProjectSecurityPanel(
+ securityWorkspace, subject, type, username, d, closeAction);
+                    d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+                    d.setContentPane(spm.getPanel());
+
+                    SPSUtils.makeJDialogCancellable(d, null);
+                    d.pack();
+                    d.setLocationRelativeTo(panel);
+                    d.setVisible(true);
+                }
+            };
+    }
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/SecurityPanel.java Wed Apr 7 14:53:55 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/SecurityPanel.java Thu Apr 29 10:25:04 2010
@@ -54,6 +54,8 @@
 import ca.sqlpower.architect.ArchitectProject;
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.enterprise.ArchitectClientSideSession;
+import ca.sqlpower.architect.enterprise.DomainCategory;
+import ca.sqlpower.enterprise.client.Grant;
 import ca.sqlpower.enterprise.client.Group;
 import ca.sqlpower.enterprise.client.SPServerInfo;
 import ca.sqlpower.enterprise.client.User;
@@ -148,14 +150,24 @@
             if (promptForUnsavedChanges()) {
                 User user = createUserFromPrompter();
                 if (user != null) {
- securityWorkspace.addChild(user, securityWorkspace.getChildren(User.class).size());
-                    refreshTree();
- Enumeration<DefaultMutableTreeNode> userNodes = usersNode.children();
-                    while (userNodes.hasMoreElements()) {
- DefaultMutableTreeNode dmtn = userNodes.nextElement(); - if (((User) dmtn.getUserObject()).getUUID().equals(user.getUUID())) { - tree.setSelectionPath(new TreePath(dmtn.getPath()));
-                        }
+                    try {
+                        securityWorkspace.begin("");
+ securityWorkspace.addChild(user, securityWorkspace.getChildren(User.class).size()); + DomainCategory category = new DomainCategory(user.getName() + "'s Domains"); + user.addGrant(new Grant(category.getUUID(), null, true, true, true, true, true)); + securityWorkspace.addChild(category, securityWorkspace.getChildren(DomainCategory.class).size());
+                        securityWorkspace.commit();
+
+                        refreshTree();
+ Enumeration<DefaultMutableTreeNode> userNodes = usersNode.children();
+                        while (userNodes.hasMoreElements()) {
+ DefaultMutableTreeNode dmtn = userNodes.nextElement(); + if (((User) dmtn.getUserObject()).getUUID().equals(user.getUUID())) { + tree.setSelectionPath(new TreePath(dmtn.getPath()));
+                            }
+                        }
+                    } catch (Exception ex) {
+                        throw new RuntimeException(ex);
                     }
                 }
             }

Reply via email to