diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2016-11-19 10:23:24 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-19 10:23:24 +1300 |
commit | b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2 (patch) | |
tree | 3b8b691bb01298ba6207d18ce761bd9ee6537971 /src/org/traccar/database | |
parent | 3eca9acd6e6a160df8f7b86150429c3d7c09b0c3 (diff) | |
parent | e21cc32bb74d998246b52faaf49b6ea742e4d6e3 (diff) | |
download | trackermap-server-b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2.tar.gz trackermap-server-b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2.tar.bz2 trackermap-server-b0aa4698e95658f57ec2d3e0ed4f3fe0db8500a2.zip |
Merge pull request #2552 from Abyss777/token2
Implement users tokens
Diffstat (limited to 'src/org/traccar/database')
-rw-r--r-- | src/org/traccar/database/PermissionsManager.java | 20 |
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)); + } + } |