diff --git a/application/build.gradle b/application/build.gradle
index 8074ea1d81..ce8b10f994 100644
--- a/application/build.gradle
+++ b/application/build.gradle
@@ -49,7 +49,7 @@ ospackage {
from(mainJar) {
// Strip the version from the jar filename
rename { String fileName ->
- fileName.replace("-${project.version}", "")
+ "${pkgName}.jar"
}
fileMode 0500
into "bin"
diff --git a/application/pom.xml b/application/pom.xml
index 268f6993d7..0c531216fb 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -379,6 +379,7 @@
org.springframework.boot
spring-boot-maven-plugin
+ boot
ZIP
true
true
@@ -408,7 +409,7 @@
-PprojectBuildDir=${project.build.directory}
-PprojectVersion=${project.version}
- -PmainJar=${project.build.directory}/${project.build.finalName}.${project.packaging}
+ -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
-PpkgName=${pkg.name}
-PpkgInstallFolder=${pkg.installFolder}
-PpkgLogFolder=${pkg.logFolder}
diff --git a/application/src/main/java/org/thingsboard/server/config/ThingsboardMessageConfiguration.java b/application/src/main/java/org/thingsboard/server/config/ThingsboardMessageConfiguration.java
index 99bec5b946..f1ef6e1227 100644
--- a/application/src/main/java/org/thingsboard/server/config/ThingsboardMessageConfiguration.java
+++ b/application/src/main/java/org/thingsboard/server/config/ThingsboardMessageConfiguration.java
@@ -18,12 +18,14 @@ package org.thingsboard.server.config;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
import org.springframework.context.support.ResourceBundleMessageSource;
@Configuration
public class ThingsboardMessageConfiguration {
@Bean
+ @Primary
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
diff --git a/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java b/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java
index e06962b43f..6d0f1102b8 100644
--- a/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/WidgetsBundleController.java
@@ -33,7 +33,7 @@ import java.util.List;
@RequestMapping("/api")
public class WidgetsBundleController extends BaseController {
- @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
+ @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
@RequestMapping(value = "/widgetsBundle/{widgetsBundleId}", method = RequestMethod.GET)
@ResponseBody
public WidgetsBundle getWidgetsBundleById(@PathVariable("widgetsBundleId") String strWidgetsBundleId) throws ThingsboardException {
@@ -76,7 +76,7 @@ public class WidgetsBundleController extends BaseController {
}
}
- @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
+ @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
@RequestMapping(value = "/widgetsBundles", params = { "limit" }, method = RequestMethod.GET)
@ResponseBody
public TextPageData getWidgetsBundles(
@@ -97,7 +97,7 @@ public class WidgetsBundleController extends BaseController {
}
}
- @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
+ @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
@RequestMapping(value = "/widgetsBundles", method = RequestMethod.GET)
@ResponseBody
public List getWidgetsBundles() throws ThingsboardException {
diff --git a/application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java b/application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java
index b11517cc6b..70949d2757 100644
--- a/application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java
+++ b/application/src/main/java/org/thingsboard/server/service/mail/DefaultMailService.java
@@ -26,6 +26,7 @@ import javax.mail.internet.MimeMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.velocity.app.VelocityEngine;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.thingsboard.server.exception.ThingsboardErrorCode;
import org.thingsboard.server.exception.ThingsboardException;
import org.thingsboard.server.common.data.AdminSettings;
@@ -50,6 +51,7 @@ public class DefaultMailService implements MailService {
private MessageSource messages;
@Autowired
+ @Qualifier("velocityEngine")
private VelocityEngine engine;
private JavaMailSenderImpl mailSender;
@@ -101,6 +103,11 @@ public class DefaultMailService implements MailService {
throw new IncorrectParameterException(String.format("Invalid smtp port value: %s", strPort));
}
}
+
+ @Override
+ public void sendEmail(String email, String subject, String message) throws ThingsboardException {
+ sendMail(mailSender, mailFrom, email, subject, message);
+ }
@Override
public void sendTestMail(JsonNode jsonConfig, String email) throws ThingsboardException {
diff --git a/application/src/main/java/org/thingsboard/server/service/mail/MailService.java b/application/src/main/java/org/thingsboard/server/service/mail/MailService.java
index e1352533d4..9e440589c7 100644
--- a/application/src/main/java/org/thingsboard/server/service/mail/MailService.java
+++ b/application/src/main/java/org/thingsboard/server/service/mail/MailService.java
@@ -22,6 +22,8 @@ import com.fasterxml.jackson.databind.JsonNode;
public interface MailService {
void updateMailConfiguration();
+
+ void sendEmail(String email, String subject, String message) throws ThingsboardException;
void sendTestMail(JsonNode config, String email) throws ThingsboardException;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
index 17784d188b..a3ab6bd09a 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java
@@ -156,7 +156,7 @@ public class UserServiceImpl implements UserService {
UserCredentialsEntity userCredentialsEntity = userCredentialsDao.findByUserId(userEntity.getId());
UserCredentials userCredentials = getData(userCredentialsEntity);
if (!userCredentials.isEnabled()) {
- throw new IncorrectParameterException("Unable to reset password for unactive user");
+ throw new IncorrectParameterException("Unable to reset password for inactive user");
}
userCredentials.setResetToken(RandomStringUtils.randomAlphanumeric(30));
return saveUserCredentials(userCredentials);