aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/database/PermissionsManager.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-11-19 10:23:24 +1300
committerGitHub <noreply@github.com>2016-11-19 10:23:24 +1300
commitb0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2 (patch)
tree3b8b691bb01298ba6207d18ce761bd9ee6537971 /src/org/traccar/database/PermissionsManager.java
parent3eca9acd6e6a160df8f7b86150429c3d7c09b0c3 (diff)
parente21cc32bb74d998246b52faaf49b6ea742e4d6e3 (diff)
downloadtraccar-server-b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2.tar.gz
traccar-server-b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2.tar.bz2
traccar-server-b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2.zip
Merge pull request #2552 from Abyss777/token2
Implement users tokens
Diffstat (limited to 'src/org/traccar/database/PermissionsManager.java')
-rw-r--r--src/org/traccar/database/PermissionsManager.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/org/traccar/database/PermissionsManager.java b/src/org/traccar/database/PermissionsManager.java
index 1c995a11d..71633f6ef 100644
--- a/src/org/traccar/database/PermissionsManager.java
+++ b/src/org/traccar/database/PermissionsManager.java
@@ -39,6 +39,7 @@ public class PermissionsManager {
private volatile Server server;
private final Map<Long, User> users = new ConcurrentHashMap<>();
+ private final Map<String, Long> usersTokens = new HashMap<>();
private final Map<Long, Set<Long>> groupPermissions = new HashMap<>();
private final Map<Long, Set<Long>> devicePermissions = new HashMap<>();
@@ -81,10 +82,14 @@ public class PermissionsManager {
public final void refreshUsers() {
users.clear();
+ usersTokens.clear();
try {
server = dataManager.getServer();
for (User user : dataManager.getUsers()) {
users.put(user.getId(), user);
+ if (user.getToken() != null) {
+ usersTokens.put(user.getToken(), user.getId());
+ }
}
} catch (SQLException error) {
Log.warning(error);
@@ -210,17 +215,28 @@ public class PermissionsManager {
public void addUser(User user) throws SQLException {
dataManager.addUser(user);
users.put(user.getId(), user);
+ if (user.getToken() != null) {
+ usersTokens.put(user.getToken(), user.getId());
+ }
refreshPermissions();
}
public void updateUser(User user) throws SQLException {
dataManager.updateUser(user);
+ User old = users.get(user.getId());
users.put(user.getId(), user);
+ if (user.getToken() != null) {
+ usersTokens.put(user.getToken(), user.getId());
+ }
+ if (old.getToken() != null && !old.getToken().equals(user.getToken())) {
+ usersTokens.remove(old.getToken());
+ }
refreshPermissions();
}
public void removeUser(long userId) throws SQLException {
dataManager.removeUser(userId);
+ usersTokens.remove(users.get(userId).getToken());
users.remove(userId);
refreshPermissions();
}
@@ -234,4 +250,8 @@ public class PermissionsManager {
return null;
}
+ public User getUserByToken(String token) {
+ return users.get(usersTokens.get(token));
+ }
+
}