aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-06-07 06:48:53 -0700
committerAnton Tananaev <anton@traccar.org>2022-06-07 06:48:53 -0700
commit8eecfdcf5c59f92158a6c339d1622e0e9d67968c (patch)
treef0bd5c9d391549ab7b98f87a86938a1341802a23
parent669bdccecff50eaca46c815598df092ad0fe143d (diff)
downloadtrackermap-server-8eecfdcf5c59f92158a6c339d1622e0e9d67968c.tar.gz
trackermap-server-8eecfdcf5c59f92158a6c339d1622e0e9d67968c.tar.bz2
trackermap-server-8eecfdcf5c59f92158a6c339d1622e0e9d67968c.zip
Pass user to notificators
-rw-r--r--src/main/java/org/traccar/api/resource/NotificationResource.java12
-rw-r--r--src/main/java/org/traccar/api/resource/PasswordResource.java2
-rw-r--r--src/main/java/org/traccar/api/resource/ReportResource.java4
-rw-r--r--src/main/java/org/traccar/api/security/PermissionsService.java4
-rw-r--r--src/main/java/org/traccar/database/MailManager.java10
-rw-r--r--src/main/java/org/traccar/database/NotificationManager.java4
-rw-r--r--src/main/java/org/traccar/notification/NotificationFormatter.java9
-rw-r--r--src/main/java/org/traccar/notificators/Notificator.java9
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorFirebase.java11
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorMail.java9
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorNull.java7
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorPushover.java12
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorSms.java12
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorTelegram.java11
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorWeb.java7
15 files changed, 63 insertions, 60 deletions
diff --git a/src/main/java/org/traccar/api/resource/NotificationResource.java b/src/main/java/org/traccar/api/resource/NotificationResource.java
index cf4b66fa1..2fc103e20 100644
--- a/src/main/java/org/traccar/api/resource/NotificationResource.java
+++ b/src/main/java/org/traccar/api/resource/NotificationResource.java
@@ -31,7 +31,9 @@ import org.traccar.api.ExtendedObjectResource;
import org.traccar.model.Event;
import org.traccar.model.Notification;
import org.traccar.model.Typed;
+import org.traccar.model.User;
import org.traccar.notification.MessageException;
+import org.traccar.storage.StorageException;
@Path("notifications")
@Produces(MediaType.APPLICATION_JSON)
@@ -56,10 +58,11 @@ public class NotificationResource extends ExtendedObjectResource<Notification> {
@POST
@Path("test")
- public Response testMessage() throws MessageException, InterruptedException {
+ public Response testMessage() throws MessageException, InterruptedException, StorageException {
+ User user = permissionsService.getUser(getUserId());
for (Typed method : Context.getNotificatorManager().getAllNotificatorTypes()) {
Context.getNotificatorManager()
- .getNotificator(method.getType()).sendSync(getUserId(), new Event("test", 0), null);
+ .getNotificator(method.getType()).sendSync(user, new Event("test", 0), null);
}
return Response.noContent().build();
}
@@ -67,8 +70,9 @@ public class NotificationResource extends ExtendedObjectResource<Notification> {
@POST
@Path("test/{notificator}")
public Response testMessage(@PathParam("notificator") String notificator)
- throws MessageException, InterruptedException {
- Context.getNotificatorManager().getNotificator(notificator).sendSync(getUserId(), new Event("test", 0), null);
+ throws MessageException, InterruptedException, StorageException {
+ User user = permissionsService.getUser(getUserId());
+ Context.getNotificatorManager().getNotificator(notificator).sendSync(user, new Event("test", 0), null);
return Response.noContent().build();
}
diff --git a/src/main/java/org/traccar/api/resource/PasswordResource.java b/src/main/java/org/traccar/api/resource/PasswordResource.java
index 0642ff3cc..ed7131718 100644
--- a/src/main/java/org/traccar/api/resource/PasswordResource.java
+++ b/src/main/java/org/traccar/api/resource/PasswordResource.java
@@ -55,7 +55,7 @@ public class PasswordResource extends BaseResource {
velocityContext.put("token", token);
NotificationMessage fullMessage =
TextTemplateFormatter.formatMessage(velocityContext, "passwordReset", "full");
- Context.getMailManager().sendMessage(userId, fullMessage.getSubject(), fullMessage.getBody());
+ Context.getMailManager().sendMessage(user, fullMessage.getSubject(), fullMessage.getBody());
break;
}
}
diff --git a/src/main/java/org/traccar/api/resource/ReportResource.java b/src/main/java/org/traccar/api/resource/ReportResource.java
index 96b32a4f0..3c1b8f715 100644
--- a/src/main/java/org/traccar/api/resource/ReportResource.java
+++ b/src/main/java/org/traccar/api/resource/ReportResource.java
@@ -43,6 +43,7 @@ import org.traccar.api.BaseResource;
import org.traccar.helper.LogAction;
import org.traccar.model.Event;
import org.traccar.model.Position;
+import org.traccar.model.User;
import org.traccar.model.UserRestrictions;
import org.traccar.reports.EventsReportProvider;
import org.traccar.reports.SummaryReportProvider;
@@ -97,8 +98,9 @@ public class ReportResource extends BaseResource {
attachment.setDataHandler(new DataHandler(new ByteArrayDataSource(
stream.toByteArray(), "application/octet-stream")));
+ User user = permissionsService.getUser(userId);
Context.getMailManager().sendMessage(
- userId, "Report", "The report is in the attachment.", attachment);
+ user, "Report", "The report is in the attachment.", attachment);
} catch (StorageException | IOException | MessagingException e) {
LOGGER.warn("Report failed", e);
}
diff --git a/src/main/java/org/traccar/api/security/PermissionsService.java b/src/main/java/org/traccar/api/security/PermissionsService.java
index 12a2189e9..9ec3b43c1 100644
--- a/src/main/java/org/traccar/api/security/PermissionsService.java
+++ b/src/main/java/org/traccar/api/security/PermissionsService.java
@@ -46,7 +46,7 @@ public class PermissionsService {
this.storage = storage;
}
- private Server getServer() throws StorageException {
+ public Server getServer() throws StorageException {
if (server == null) {
server = storage.getObject(
Server.class, new Request(new Columns.All()));
@@ -54,7 +54,7 @@ public class PermissionsService {
return server;
}
- private User getUser(long userId) throws StorageException {
+ public User getUser(long userId) throws StorageException {
if (user == null) {
user = storage.getObject(
User.class, new Request(new Columns.All(), new Condition.Equals("id", "id", userId)));
diff --git a/src/main/java/org/traccar/database/MailManager.java b/src/main/java/org/traccar/database/MailManager.java
index d94f55cda..21fee5ee7 100644
--- a/src/main/java/org/traccar/database/MailManager.java
+++ b/src/main/java/org/traccar/database/MailManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 - 2021 Anton Tananaev (anton@traccar.org)
+ * Copyright 2016 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2017 - 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -92,14 +92,12 @@ public final class MailManager {
}
public void sendMessage(
- long userId, String subject, String body) throws MessagingException {
- sendMessage(userId, subject, body, null);
+ User user, String subject, String body) throws MessagingException {
+ sendMessage(user, subject, body, null);
}
public void sendMessage(
- long userId, String subject, String body, MimeBodyPart attachment) throws MessagingException {
- User user = Context.getPermissionsManager().getUser(userId);
-
+ User user, String subject, String body, MimeBodyPart attachment) throws MessagingException {
Properties properties = null;
if (!Context.getConfig().getBoolean("mail.smtp.ignoreUserConfig")) {
properties = getProperties(new PropertiesProvider(user));
diff --git a/src/main/java/org/traccar/database/NotificationManager.java b/src/main/java/org/traccar/database/NotificationManager.java
index 64f3b6775..f88b3b18c 100644
--- a/src/main/java/org/traccar/database/NotificationManager.java
+++ b/src/main/java/org/traccar/database/NotificationManager.java
@@ -35,6 +35,7 @@ import org.traccar.model.Event;
import org.traccar.model.Notification;
import org.traccar.model.Position;
import org.traccar.model.Typed;
+import org.traccar.model.User;
import org.traccar.storage.StorageException;
public class NotificationManager extends ExtendedObjectManager<Notification> {
@@ -106,8 +107,9 @@ public class NotificationManager extends ExtendedObjectManager<Notification> {
.getAddress(position.getLatitude(), position.getLongitude(), null));
}
+ User user = Context.getUsersManager().getById(userId);
for (String notificator : notificators) {
- Context.getNotificatorManager().getNotificator(notificator).sendAsync(userId, event, position);
+ Context.getNotificatorManager().getNotificator(notificator).sendAsync(user, event, position);
}
}
if (Context.getEventForwarder() != null) {
diff --git a/src/main/java/org/traccar/notification/NotificationFormatter.java b/src/main/java/org/traccar/notification/NotificationFormatter.java
index 30a862372..c3e37c9e9 100644
--- a/src/main/java/org/traccar/notification/NotificationFormatter.java
+++ b/src/main/java/org/traccar/notification/NotificationFormatter.java
@@ -33,9 +33,8 @@ public final class NotificationFormatter {
}
public static NotificationMessage formatMessage(
- CacheManager cacheManager, long userId, Event event, Position position, String templatePath) {
+ CacheManager cacheManager, User user, Event event, Position position, String templatePath) {
- User user = cacheManager.getObject(User.class, userId);
Device device = cacheManager.getObject(Device.class, event.getDeviceId());
VelocityContext velocityContext = TextTemplateFormatter.prepareContext(user);
@@ -44,9 +43,9 @@ public final class NotificationFormatter {
velocityContext.put("event", event);
if (position != null) {
velocityContext.put("position", position);
- velocityContext.put("speedUnit", ReportUtils.getSpeedUnit(userId));
- velocityContext.put("distanceUnit", ReportUtils.getDistanceUnit(userId));
- velocityContext.put("volumeUnit", ReportUtils.getVolumeUnit(userId));
+ velocityContext.put("speedUnit", ReportUtils.getSpeedUnit(user.getId()));
+ velocityContext.put("distanceUnit", ReportUtils.getDistanceUnit(user.getId()));
+ velocityContext.put("volumeUnit", ReportUtils.getVolumeUnit(user.getId()));
}
if (event.getGeofenceId() != 0) {
velocityContext.put("geofence", cacheManager.getObject(Geofence.class, event.getGeofenceId()));
diff --git a/src/main/java/org/traccar/notificators/Notificator.java b/src/main/java/org/traccar/notificators/Notificator.java
index dd888bae9..3903f3008 100644
--- a/src/main/java/org/traccar/notificators/Notificator.java
+++ b/src/main/java/org/traccar/notificators/Notificator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 Anton Tananaev (anton@traccar.org)
+ * Copyright 2018 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,23 +20,24 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.traccar.model.Event;
import org.traccar.model.Position;
+import org.traccar.model.User;
import org.traccar.notification.MessageException;
public abstract class Notificator {
private static final Logger LOGGER = LoggerFactory.getLogger(Notificator.class);
- public void sendAsync(final long userId, final Event event, final Position position) {
+ public void sendAsync(User user, Event event, Position position) {
new Thread(() -> {
try {
- sendSync(userId, event, position);
+ sendSync(user, event, position);
} catch (MessageException | InterruptedException error) {
LOGGER.warn("Event send error", error);
}
}).start();
}
- public abstract void sendSync(long userId, Event event, Position position)
+ public abstract void sendSync(User user, Event event, Position position)
throws MessageException, InterruptedException;
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorFirebase.java b/src/main/java/org/traccar/notificators/NotificatorFirebase.java
index bcce9a4d8..ee22b3a22 100644
--- a/src/main/java/org/traccar/notificators/NotificatorFirebase.java
+++ b/src/main/java/org/traccar/notificators/NotificatorFirebase.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 - 2020 Anton Tananaev (anton@traccar.org)
+ * Copyright 2018 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -67,12 +67,11 @@ public class NotificatorFirebase extends Notificator {
}
@Override
- public void sendSync(long userId, Event event, Position position) {
- final User user = Context.getPermissionsManager().getUser(userId);
+ public void sendSync(User user, Event event, Position position) {
if (user.getAttributes().containsKey("notificationTokens")) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), userId, event, position, "short");
+ Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
Notification notification = new Notification();
notification.title = shortMessage.getSubject();
@@ -99,8 +98,8 @@ public class NotificatorFirebase extends Notificator {
}
@Override
- public void sendAsync(long userId, Event event, Position position) {
- sendSync(userId, event, position);
+ public void sendAsync(User user, Event event, Position position) {
+ sendSync(user, event, position);
}
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorMail.java b/src/main/java/org/traccar/notificators/NotificatorMail.java
index eb7f399eb..7b85254be 100644
--- a/src/main/java/org/traccar/notificators/NotificatorMail.java
+++ b/src/main/java/org/traccar/notificators/NotificatorMail.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 - 2018 Anton Tananaev (anton@traccar.org)
+ * Copyright 2016 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2017 - 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,6 +20,7 @@ import org.traccar.Context;
import org.traccar.Main;
import org.traccar.model.Event;
import org.traccar.model.Position;
+import org.traccar.model.User;
import org.traccar.notification.NotificationMessage;
import org.traccar.notification.MessageException;
import org.traccar.notification.NotificationFormatter;
@@ -30,11 +31,11 @@ import javax.mail.MessagingException;
public final class NotificatorMail extends Notificator {
@Override
- public void sendSync(long userId, Event event, Position position) throws MessageException {
+ public void sendSync(User user, Event event, Position position) throws MessageException {
try {
NotificationMessage fullMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), userId, event, position, "full");
- Context.getMailManager().sendMessage(userId, fullMessage.getSubject(), fullMessage.getBody());
+ Main.getInjector().getInstance(CacheManager.class), user, event, position, "full");
+ Context.getMailManager().sendMessage(user, fullMessage.getSubject(), fullMessage.getBody());
} catch (MessagingException e) {
throw new MessageException(e);
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorNull.java b/src/main/java/org/traccar/notificators/NotificatorNull.java
index 9364336be..a03a6e2c9 100644
--- a/src/main/java/org/traccar/notificators/NotificatorNull.java
+++ b/src/main/java/org/traccar/notificators/NotificatorNull.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 Anton Tananaev (anton@traccar.org)
+ * Copyright 2018 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,18 +20,19 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.traccar.model.Event;
import org.traccar.model.Position;
+import org.traccar.model.User;
public final class NotificatorNull extends Notificator {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificatorNull.class);
@Override
- public void sendAsync(long userId, Event event, Position position) {
+ public void sendAsync(User user, Event event, Position position) {
LOGGER.warn("You are using null notificatior, please check your configuration, notification not sent");
}
@Override
- public void sendSync(long userId, Event event, Position position) {
+ public void sendSync(User user, Event event, Position position) {
LOGGER.warn("You are using null notificatior, please check your configuration, notification not sent");
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorPushover.java b/src/main/java/org/traccar/notificators/NotificatorPushover.java
index 73fad9bd2..ffd9b426f 100644
--- a/src/main/java/org/traccar/notificators/NotificatorPushover.java
+++ b/src/main/java/org/traccar/notificators/NotificatorPushover.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Anton Tananaev (anton@traccar.org)
+ * Copyright 2020 - 2022 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,9 +59,7 @@ public class NotificatorPushover extends Notificator {
}
@Override
- public void sendSync(long userId, Event event, Position position) {
-
- final User user = Context.getPermissionsManager().getUser(userId);
+ public void sendSync(User user, Event event, Position position) {
String device = "";
@@ -80,7 +78,7 @@ public class NotificatorPushover extends Notificator {
}
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), userId, event, position, "short");
+ Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
Message message = new Message();
message.token = token;
@@ -103,8 +101,8 @@ public class NotificatorPushover extends Notificator {
}
@Override
- public void sendAsync(long userId, Event event, Position position) {
- sendSync(userId, event, position);
+ public void sendAsync(User user, Event event, Position position) {
+ sendSync(user, event, position);
}
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorSms.java b/src/main/java/org/traccar/notificators/NotificatorSms.java
index 09eb65b0c..ae409c558 100644
--- a/src/main/java/org/traccar/notificators/NotificatorSms.java
+++ b/src/main/java/org/traccar/notificators/NotificatorSms.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2017 - 2020 Anton Tananaev (anton@traccar.org)
+ * Copyright 2017 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2017 - 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -30,11 +30,10 @@ import org.traccar.session.cache.CacheManager;
public final class NotificatorSms extends Notificator {
@Override
- public void sendAsync(long userId, Event event, Position position) {
- final User user = Context.getPermissionsManager().getUser(userId);
+ public void sendAsync(User user, Event event, Position position) {
if (user.getPhone() != null) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), userId, event, position, "short");
+ Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
Main.getInjector().getInstance(StatisticsManager.class).registerSms();
Context.getSmsManager().sendMessageAsync(user.getPhone(),
shortMessage.getBody(), false);
@@ -42,11 +41,10 @@ public final class NotificatorSms extends Notificator {
}
@Override
- public void sendSync(long userId, Event event, Position position) throws MessageException, InterruptedException {
- final User user = Context.getPermissionsManager().getUser(userId);
+ public void sendSync(User user, Event event, Position position) throws MessageException, InterruptedException {
if (user.getPhone() != null) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), userId, event, position, "short");
+ Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
Main.getInjector().getInstance(StatisticsManager.class).registerSms();
Context.getSmsManager().sendMessageSync(user.getPhone(),
shortMessage.getBody(), false);
diff --git a/src/main/java/org/traccar/notificators/NotificatorTelegram.java b/src/main/java/org/traccar/notificators/NotificatorTelegram.java
index a8e69e77d..46e29559d 100644
--- a/src/main/java/org/traccar/notificators/NotificatorTelegram.java
+++ b/src/main/java/org/traccar/notificators/NotificatorTelegram.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 - 2021 Anton Tananaev (anton@traccar.org)
+ * Copyright 2019 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2021 Rafael Miquelino (rafaelmiquelino@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -99,10 +99,9 @@ public class NotificatorTelegram extends Notificator {
}
@Override
- public void sendSync(long userId, Event event, Position position) {
- User user = Context.getPermissionsManager().getUser(userId);
+ public void sendSync(User user, Event event, Position position) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), userId, event, position, "short");
+ Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
TextMessage message = new TextMessage();
message.chatId = user.getString("telegramChatId");
@@ -117,8 +116,8 @@ public class NotificatorTelegram extends Notificator {
}
@Override
- public void sendAsync(long userId, Event event, Position position) {
- sendSync(userId, event, position);
+ public void sendAsync(User user, Event event, Position position) {
+ sendSync(user, event, position);
}
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorWeb.java b/src/main/java/org/traccar/notificators/NotificatorWeb.java
index 1d11c0b46..c9ab93b6d 100644
--- a/src/main/java/org/traccar/notificators/NotificatorWeb.java
+++ b/src/main/java/org/traccar/notificators/NotificatorWeb.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 Anton Tananaev (anton@traccar.org)
+ * Copyright 2018 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,12 +19,13 @@ package org.traccar.notificators;
import org.traccar.Context;
import org.traccar.model.Event;
import org.traccar.model.Position;
+import org.traccar.model.User;
public final class NotificatorWeb extends Notificator {
@Override
- public void sendSync(long userId, Event event, Position position) {
- Context.getConnectionManager().updateEvent(userId, event);
+ public void sendSync(User user, Event event, Position position) {
+ Context.getConnectionManager().updateEvent(user.getId(), event);
}
}