aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/api/resource/SessionResource.java25
-rw-r--r--web/app/view/LoginController.js7
2 files changed, 25 insertions, 7 deletions
diff --git a/src/org/traccar/api/resource/SessionResource.java b/src/org/traccar/api/resource/SessionResource.java
index 745088a4d..5d41cdd71 100644
--- a/src/org/traccar/api/resource/SessionResource.java
+++ b/src/org/traccar/api/resource/SessionResource.java
@@ -20,6 +20,7 @@ import org.traccar.api.BaseResource;
import org.traccar.model.User;
import javax.annotation.security.PermitAll;
+import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -39,6 +40,8 @@ import java.sql.SQLException;
public class SessionResource extends BaseResource {
public static final String USER_ID_KEY = "userId";
+ public static final String USER_COOKIE_KEY = "user";
+ public static final String PASS_COOKIE_KEY = "pass";
@javax.ws.rs.core.Context
private HttpServletRequest request;
@@ -47,6 +50,28 @@ public class SessionResource extends BaseResource {
@GET
public User get() throws SQLException {
Long userId = (Long) request.getSession().getAttribute(USER_ID_KEY);
+ if (userId == null) {
+ Cookie[] cookies = request.getCookies();
+ String email = null, password = null;
+ if (cookies != null) {
+ for (int i = 0; i < cookies.length; i++) {
+ if (cookies[i].getName().equals(USER_COOKIE_KEY)) {
+ email = cookies[i].getValue();
+ }
+ if (cookies[i].getName().equals(PASS_COOKIE_KEY)) {
+ password = cookies[i].getValue();
+ }
+ }
+ }
+ if (email != null && password != null){
+ User user = Context.getDataManager().login(email, password);
+ if (user != null) {
+ userId = user.getId();
+ request.getSession().setAttribute(USER_ID_KEY, userId);
+ }
+ }
+ }
+
if (userId != null) {
return Context.getDataManager().getUser(userId);
} else {
diff --git a/web/app/view/LoginController.js b/web/app/view/LoginController.js
index f78b1e560..47fae59f9 100644
--- a/web/app/view/LoginController.js
+++ b/web/app/view/LoginController.js
@@ -26,13 +26,6 @@ Ext.define('Traccar.view.LoginController', {
this.lookupReference('registerButton').setDisabled(
!Traccar.app.getServer().get('registration'));
this.lookupReference('languageField').setValue(Locale.language);
- var user = Ext.util.Cookies.get('user');
- var pass = Ext.util.Cookies.get('pass');
- if (user && pass) {
- this.lookupReference('userField').setValue(user);
- this.lookupReference('passwordField').setValue(pass);
- this.login();
- }
},
login: function () {