aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/web/client/controller/LoginController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/web/client/controller/LoginController.java')
-rw-r--r--src/org/traccar/web/client/controller/LoginController.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/org/traccar/web/client/controller/LoginController.java b/src/org/traccar/web/client/controller/LoginController.java
new file mode 100644
index 00000000..ceda85cf
--- /dev/null
+++ b/src/org/traccar/web/client/controller/LoginController.java
@@ -0,0 +1,81 @@
+package org.traccar.web.client.controller;
+
+import org.traccar.web.client.Application;
+import org.traccar.web.client.model.BaseAsyncCallback;
+import org.traccar.web.client.view.LoginDialog;
+
+import com.sencha.gxt.widget.core.client.box.AlertMessageBox;
+
+public class LoginController implements LoginDialog.LoginHandler {
+
+ private LoginDialog dialog;
+
+ public interface LoginHandler {
+ public void onLogin();
+ }
+
+ private LoginHandler loginHandler;
+
+ public void login(final LoginHandler loginHandler) {
+ this.loginHandler = loginHandler;
+
+ Application.getDataService().authenticated(new BaseAsyncCallback<Boolean>() {
+ @Override
+ public void onSuccess(Boolean result) {
+ if (result) {
+ loginHandler.onLogin();
+ } else {
+ dialog = new LoginDialog(LoginController.this);
+ dialog.show();
+ }
+ }
+ });
+ }
+
+ private boolean validate(String login, String password) {
+ if (login == null || login.isEmpty() || password == null || password.isEmpty()) {
+ new AlertMessageBox("Error", "User name and password must not be empty").show();
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void onLogin(String login, String password) {
+ if (validate(login, password)) {
+ Application.getDataService().authenticate(login, password, new BaseAsyncCallback<Boolean>() {
+ @Override
+ public void onSuccess(Boolean result) {
+ if (result) {
+ if (loginHandler != null) {
+ dialog.hide();
+ loginHandler.onLogin();
+ }
+ } else {
+ new AlertMessageBox("Error", "User name or password is invalid").show();
+ }
+ }
+ });
+ }
+ }
+
+ @Override
+ public void onRegister(String login, String password) {
+ if (validate(login, password)) {
+ Application.getDataService().register(login, password, new BaseAsyncCallback<Boolean>() {
+ @Override
+ public void onSuccess(Boolean result) {
+ if (result) {
+ if (loginHandler != null) {
+ dialog.hide();
+ loginHandler.onLogin();
+ }
+ } else {
+ new AlertMessageBox("Error", "Registration error").show();
+ }
+ }
+ });
+ }
+ }
+
+}