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);
}
}
}