From e191104cd356faa2e261cc37585143878e23298d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 25 Apr 2012 19:58:46 -0400
Subject: [PATCH] Disable membership, display name, and email fields in Manager if unsupported by user service

---
 src/com/gitblit/client/JPalette.java       |   21 +++++++++++++++++----
 src/com/gitblit/models/ServerSettings.java |    8 ++++++++
 src/com/gitblit/client/EditTeamDialog.java |    3 ++-
 src/com/gitblit/client/EditUserDialog.java |   11 ++++++++++-
 4 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/src/com/gitblit/client/EditTeamDialog.java b/src/com/gitblit/client/EditTeamDialog.java
index 80e4160..2f9796c 100644
--- a/src/com/gitblit/client/EditTeamDialog.java
+++ b/src/com/gitblit/client/EditTeamDialog.java
@@ -125,7 +125,8 @@
 		final Insets _insets = new Insets(5, 5, 5, 5);
 		repositoryPalette = new JPalette<String>();
 		userPalette = new JPalette<String>();
-
+		userPalette.setEnabled(settings.supportsTeamMembershipChanges);
+		
 		JPanel fieldsPanelTop = new JPanel(new BorderLayout());
 		fieldsPanelTop.add(fieldsPanel, BorderLayout.NORTH);
 
diff --git a/src/com/gitblit/client/EditUserDialog.java b/src/com/gitblit/client/EditUserDialog.java
index d78924c..34ab4b5 100644
--- a/src/com/gitblit/client/EditUserDialog.java
+++ b/src/com/gitblit/client/EditUserDialog.java
@@ -129,6 +129,14 @@
 		notFederatedCheckbox = new JCheckBox(
 				Translation.get("gb.excludeFromFederationDescription"),
 				anUser.excludeFromFederation);
+		
+		// credentials are optionally controlled by 3rd-party authentication
+		usernameField.setEnabled(settings.supportsCredentialChanges);
+		passwordField.setEnabled(settings.supportsCredentialChanges);
+		confirmPasswordField.setEnabled(settings.supportsCredentialChanges);
+
+		displayNameField.setEnabled(settings.supportsDisplayNameChanges);
+		emailAddressField.setEnabled(settings.supportsEmailAddressChanges);
 
 		JPanel fieldsPanel = new JPanel(new GridLayout(0, 1));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.username"), usernameField));
@@ -143,6 +151,7 @@
 		final Insets _insets = new Insets(5, 5, 5, 5);
 		repositoryPalette = new JPalette<String>();
 		teamsPalette = new JPalette<TeamModel>();
+		teamsPalette.setEnabled(settings.supportsTeamMembershipChanges);
 
 		JPanel fieldsPanelTop = new JPanel(new BorderLayout());
 		fieldsPanelTop.add(fieldsPanel, BorderLayout.NORTH);
@@ -340,7 +349,7 @@
 		}
 		teamsPalette.setObjects(teams, selected);
 	}
-
+	
 	public UserModel getUser() {
 		if (canceled) {
 			return null;
diff --git a/src/com/gitblit/client/JPalette.java b/src/com/gitblit/client/JPalette.java
index 699b271..07900cb 100644
--- a/src/com/gitblit/client/JPalette.java
+++ b/src/com/gitblit/client/JPalette.java
@@ -38,6 +38,10 @@
 	private static final long serialVersionUID = 1L;
 	private PaletteModel<T> availableModel;
 	private PaletteModel<T> selectedModel;
+	private JButton add;
+	private JButton subtract;
+	private JButton up;
+	private JButton down;
 
 	public JPalette() {
 		this(false);
@@ -52,7 +56,7 @@
 		final JTable available = new JTable(availableModel);
 		final JTable selected = new JTable(selectedModel);
 
-		JButton add = new JButton("->");
+		add = new JButton("->");
 		add.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent event) {
 				List<T> move = new ArrayList<T>();
@@ -70,7 +74,7 @@
 				selectedModel.fireTableDataChanged();
 			}
 		});
-		JButton subtract = new JButton("<-");
+		subtract = new JButton("<-");
 		subtract.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent event) {
 				List<T> move = new ArrayList<T>();
@@ -90,7 +94,7 @@
 			}
 		});
 
-		JButton up = new JButton("\u2191");
+		up = new JButton("\u2191");
 		up.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent event) {
 				int row = selected.getSelectedRow();
@@ -102,7 +106,7 @@
 			}
 		});
 
-		JButton down = new JButton("\u2193");
+		down = new JButton("\u2193");
 		down.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent event) {
 				int row = selected.getSelectedRow();
@@ -149,6 +153,15 @@
 		panel.add(jsp, BorderLayout.CENTER);
 		return panel;
 	}
+	
+	@Override
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		add.setEnabled(enabled);
+		subtract.setEnabled(enabled);
+		up.setEnabled(enabled);
+		down.setEnabled(enabled);
+	}
 
 	public void setObjects(List<T> all, List<T> selected) {
 		List<T> available = new ArrayList<T>(all);
diff --git a/src/com/gitblit/models/ServerSettings.java b/src/com/gitblit/models/ServerSettings.java
index 72a7f00..3658096 100644
--- a/src/com/gitblit/models/ServerSettings.java
+++ b/src/com/gitblit/models/ServerSettings.java
@@ -36,6 +36,14 @@
 	private static final long serialVersionUID = 1L;
 
 	public List<String> pushScripts;
+	
+	public boolean supportsCredentialChanges;
+	
+	public boolean supportsDisplayNameChanges;
+	
+	public boolean supportsEmailAddressChanges;
+	
+	public boolean supportsTeamMembershipChanges;
 
 	public ServerSettings() {
 		settings = new TreeMap<String, SettingModel>();

--
Gitblit v1.9.1