diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2014-03-26 21:18:54 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2014-03-26 21:18:54 +1300 |
commit | f97b868dc1bbf9698d05a9473da6ddd0c01640e8 (patch) | |
tree | 429293f0a21238602b76ceb58644bda80e872680 | |
parent | 33dbcf4d450e190228a3a0dffd611f142215380b (diff) | |
parent | 7b4306677f47e6e1c12bf3311d6b3394b2b9ff11 (diff) | |
download | trackermap-web-f97b868dc1bbf9698d05a9473da6ddd0c01640e8.tar.gz trackermap-web-f97b868dc1bbf9698d05a9473da6ddd0c01640e8.tar.bz2 trackermap-web-f97b868dc1bbf9698d05a9473da6ddd0c01640e8.zip |
Merge pull request #147 from khfayzullaev/master
Admin should not add an existing username
-rw-r--r-- | src/org/traccar/web/client/controller/SettingsController.java | 5 | ||||
-rw-r--r-- | src/org/traccar/web/server/model/DataServiceImpl.java | 18 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/org/traccar/web/client/controller/SettingsController.java b/src/org/traccar/web/client/controller/SettingsController.java index f8fcc72d..44d48f3d 100644 --- a/src/org/traccar/web/client/controller/SettingsController.java +++ b/src/org/traccar/web/client/controller/SettingsController.java @@ -33,6 +33,7 @@ import org.traccar.web.shared.model.UserSettings; import com.google.gwt.core.client.GWT; import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; +import com.sencha.gxt.widget.core.client.box.AlertMessageBox; import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox; import com.sencha.gxt.widget.core.client.event.HideEvent; @@ -97,6 +98,10 @@ public class SettingsController implements DeviceView.SettingsHandler { public void onSuccess(User result) { userStore.add(result); } + @Override + public void onFailure(Throwable caught) { + new AlertMessageBox("Error", "Username is already taken").show(); + } }); } }).show(); diff --git a/src/org/traccar/web/server/model/DataServiceImpl.java b/src/org/traccar/web/server/model/DataServiceImpl.java index 3ae4d21d..509bca4a 100644 --- a/src/org/traccar/web/server/model/DataServiceImpl.java +++ b/src/org/traccar/web/server/model/DataServiceImpl.java @@ -193,9 +193,21 @@ public class DataServiceImpl extends RemoteServiceServlet implements DataService synchronized (entityManager) { entityManager.getTransaction().begin(); try { - entityManager.persist(user); - entityManager.getTransaction().commit(); - return user; + String login = user.getLogin(); + TypedQuery<User> query = entityManager.createQuery( + "SELECT x FROM User x WHERE x.login = :login", User.class); + query.setParameter("login", login); + List<User> results = query.getResultList(); + + if (results.isEmpty()) { + entityManager.persist(user); + entityManager.getTransaction().commit(); + return user; + } + else + { + throw new IllegalStateException(); + } } catch (RuntimeException e) { entityManager.getTransaction().rollback(); throw e; |