From ddb69646a58d18d05e2d1c7ec3bb7b75addf23ed Mon Sep 17 00:00:00 2001 From: Chris Eykamp Date: Fri, 29 Sep 2017 19:47:18 -0700 Subject: [PATCH 1/8] Centralize logic for checking if user is public --- .../thingsboard/server/controller/CustomerController.java | 6 +----- .../auth/jwt/RefreshTokenAuthenticationProvider.java | 8 +++----- .../security/auth/rest/RestAuthenticationProvider.java | 6 +----- .../java/org/thingsboard/server/common/data/Customer.java | 8 ++++++++ 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java index 091eb0edce..ec1149656b 100644 --- a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java +++ b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java @@ -56,11 +56,7 @@ public class CustomerController extends BaseController { ObjectMapper objectMapper = new ObjectMapper(); ObjectNode infoObject = objectMapper.createObjectNode(); infoObject.put("title", customer.getTitle()); - boolean isPublic = false; - if (customer.getAdditionalInfo() != null && customer.getAdditionalInfo().has("isPublic")) { - isPublic = customer.getAdditionalInfo().get("isPublic").asBoolean(); - } - infoObject.put("isPublic", isPublic); + infoObject.put("isPublic", customer.isPublic()); return infoObject; } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java b/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java index 811f39f5d1..be5e546aaf 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java @@ -103,13 +103,11 @@ public class RefreshTokenAuthenticationProvider implements AuthenticationProvide if (publicCustomer == null) { throw new UsernameNotFoundException("Public entity not found by refresh token"); } - boolean isPublic = false; - if (publicCustomer.getAdditionalInfo() != null && publicCustomer.getAdditionalInfo().has("isPublic")) { - isPublic = publicCustomer.getAdditionalInfo().get("isPublic").asBoolean(); - } - if (!isPublic) { + + if (!publicCustomer.isPublic()) { throw new BadCredentialsException("Refresh token is not valid"); } + User user = new User(new UserId(UUIDBased.EMPTY)); user.setTenantId(publicCustomer.getTenantId()); user.setCustomerId(publicCustomer.getId()); diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java b/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java index af10674294..661502319b 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java @@ -108,11 +108,7 @@ public class RestAuthenticationProvider implements AuthenticationProvider { if (publicCustomer == null) { throw new UsernameNotFoundException("Public entity not found: " + publicId); } - boolean isPublic = false; - if (publicCustomer.getAdditionalInfo() != null && publicCustomer.getAdditionalInfo().has("isPublic")) { - isPublic = publicCustomer.getAdditionalInfo().get("isPublic").asBoolean(); - } - if (!isPublic) { + if (!publicCustomer.isPublic()) { throw new BadCredentialsException("Authentication Failed. Public Id is not valid."); } User user = new User(new UserId(UUIDBased.EMPTY)); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java index ec535bf44c..bdf38bd9dc 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java @@ -60,6 +60,14 @@ public class Customer extends ContactBased implements HasName { public void setTitle(String title) { this.title = title; } + + public boolean isPublic() { + if (getAdditionalInfo() != null && getAdditionalInfo().has("isPublic")) { + return getAdditionalInfo().get("isPublic").asBoolean(); + } + + return false; + } @Override @JsonProperty(access = Access.READ_ONLY) From 96c9dbd69888a7862a1ff938ae6ad897b88af9e8 Mon Sep 17 00:00:00 2001 From: Chris Eykamp Date: Mon, 2 Oct 2017 13:01:01 -0700 Subject: [PATCH 2/8] Fix indentation --- .../main/java/org/thingsboard/server/common/data/Customer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java index bdf38bd9dc..12ff629385 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java @@ -63,7 +63,7 @@ public class Customer extends ContactBased implements HasName { public boolean isPublic() { if (getAdditionalInfo() != null && getAdditionalInfo().has("isPublic")) { - return getAdditionalInfo().get("isPublic").asBoolean(); + return getAdditionalInfo().get("isPublic").asBoolean(); } return false; From f937e0bc9dbaa1770f278e3c4652bc32fdf121f9 Mon Sep 17 00:00:00 2001 From: eykamp Date: Mon, 2 Oct 2017 16:10:45 -0700 Subject: [PATCH 3/8] Update README.md Make badge refer to this project, not parent --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d96289fae1..477e12993a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ThingsBoard [![Join the chat at https://gitter.im/thingsboard/chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/thingsboard/chat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![Build Status](https://travis-ci.org/thingsboard/thingsboard.svg?branch=master)](https://travis-ci.org/thingsboard/thingsboard) +[![Build Status](https://travis-ci.org/eykamp/thingsboard.svg?branch=master)](https://travis-ci.org/thingsboard/thingsboard) ThingsBoard is an open-source IoT platform for data collection, processing, visualization, and device management. From 1bf04377561b74df5010813d921c461821bec3d1 Mon Sep 17 00:00:00 2001 From: Chris Eykamp Date: Tue, 3 Oct 2017 17:31:15 -0700 Subject: [PATCH 4/8] Rename function so tests pass --- .../org/thingsboard/server/controller/CustomerController.java | 2 +- .../security/auth/jwt/RefreshTokenAuthenticationProvider.java | 2 +- .../security/auth/rest/RestAuthenticationProvider.java | 2 +- .../java/org/thingsboard/server/common/data/Customer.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java index ec1149656b..8cfcc38254 100644 --- a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java +++ b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java @@ -56,7 +56,7 @@ public class CustomerController extends BaseController { ObjectMapper objectMapper = new ObjectMapper(); ObjectNode infoObject = objectMapper.createObjectNode(); infoObject.put("title", customer.getTitle()); - infoObject.put("isPublic", customer.isPublic()); + infoObject.put("isPublic", customer.publicCustomer()); return infoObject; } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java b/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java index be5e546aaf..ce1fd34cf3 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java @@ -104,7 +104,7 @@ public class RefreshTokenAuthenticationProvider implements AuthenticationProvide throw new UsernameNotFoundException("Public entity not found by refresh token"); } - if (!publicCustomer.isPublic()) { + if (!publicCustomer.publicCustomer()) { throw new BadCredentialsException("Refresh token is not valid"); } diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java b/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java index 661502319b..ddb2d61983 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java @@ -108,7 +108,7 @@ public class RestAuthenticationProvider implements AuthenticationProvider { if (publicCustomer == null) { throw new UsernameNotFoundException("Public entity not found: " + publicId); } - if (!publicCustomer.isPublic()) { + if (!publicCustomer.publicCustomer()) { throw new BadCredentialsException("Authentication Failed. Public Id is not valid."); } User user = new User(new UserId(UUIDBased.EMPTY)); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java index 12ff629385..c9af642347 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java @@ -60,8 +60,8 @@ public class Customer extends ContactBased implements HasName { public void setTitle(String title) { this.title = title; } - - public boolean isPublic() { + + public boolean publicCustomer() { // Using better name isPublic causes tests to fail if (getAdditionalInfo() != null && getAdditionalInfo().has("isPublic")) { return getAdditionalInfo().get("isPublic").asBoolean(); } From 6b7e7cd3e3f3e2496518f12e4462658dc1f44195 Mon Sep 17 00:00:00 2001 From: Chris Eykamp Date: Wed, 4 Oct 2017 08:32:44 -0700 Subject: [PATCH 5/8] Rename function --- .../thingsboard/server/controller/CustomerController.java | 2 +- .../auth/jwt/RefreshTokenAuthenticationProvider.java | 2 +- .../security/auth/rest/RestAuthenticationProvider.java | 2 +- .../java/org/thingsboard/server/common/data/Customer.java | 8 +++++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java index 8cfcc38254..ec1149656b 100644 --- a/application/src/main/java/org/thingsboard/server/controller/CustomerController.java +++ b/application/src/main/java/org/thingsboard/server/controller/CustomerController.java @@ -56,7 +56,7 @@ public class CustomerController extends BaseController { ObjectMapper objectMapper = new ObjectMapper(); ObjectNode infoObject = objectMapper.createObjectNode(); infoObject.put("title", customer.getTitle()); - infoObject.put("isPublic", customer.publicCustomer()); + infoObject.put("isPublic", customer.isPublic()); return infoObject; } catch (Exception e) { throw handleException(e); diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java b/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java index ce1fd34cf3..be5e546aaf 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/jwt/RefreshTokenAuthenticationProvider.java @@ -104,7 +104,7 @@ public class RefreshTokenAuthenticationProvider implements AuthenticationProvide throw new UsernameNotFoundException("Public entity not found by refresh token"); } - if (!publicCustomer.publicCustomer()) { + if (!publicCustomer.isPublic()) { throw new BadCredentialsException("Refresh token is not valid"); } diff --git a/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java b/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java index ddb2d61983..661502319b 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java +++ b/application/src/main/java/org/thingsboard/server/service/security/auth/rest/RestAuthenticationProvider.java @@ -108,7 +108,7 @@ public class RestAuthenticationProvider implements AuthenticationProvider { if (publicCustomer == null) { throw new UsernameNotFoundException("Public entity not found: " + publicId); } - if (!publicCustomer.publicCustomer()) { + if (!publicCustomer.isPublic()) { throw new BadCredentialsException("Authentication Failed. Public Id is not valid."); } User user = new User(new UserId(UUIDBased.EMPTY)); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java index c9af642347..a82c235a45 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java @@ -15,6 +15,7 @@ */ package org.thingsboard.server.common.data; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty.Access; import org.thingsboard.server.common.data.id.CustomerId; @@ -61,11 +62,12 @@ public class Customer extends ContactBased implements HasName { this.title = title; } - public boolean publicCustomer() { // Using better name isPublic causes tests to fail + @JsonIgnore + public boolean isPublic() { if (getAdditionalInfo() != null && getAdditionalInfo().has("isPublic")) { - return getAdditionalInfo().get("isPublic").asBoolean(); + return additionalInfo.get("isPublic").asBoolean(); } - + return false; } From 28898a4f69594aa48bc80f679bf8167560466389 Mon Sep 17 00:00:00 2001 From: Chris Eykamp Date: Wed, 4 Oct 2017 15:40:57 -0700 Subject: [PATCH 6/8] Whitespace --- .../main/java/org/thingsboard/server/common/data/Customer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java index a82c235a45..a34f929758 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java @@ -159,5 +159,4 @@ public class Customer extends ContactBased implements HasName { builder.append("]"); return builder.toString(); } - } From 1ce7591fc1f37d983cbb77efba576d5398f9de49 Mon Sep 17 00:00:00 2001 From: Chris Eykamp Date: Wed, 4 Oct 2017 15:40:57 -0700 Subject: [PATCH 7/8] Whitespace --- .../main/java/org/thingsboard/server/common/data/Customer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java index 4179291953..7754e88ecd 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Customer.java @@ -159,5 +159,4 @@ public class Customer extends ContactBased implements HasName { builder.append("]"); return builder.toString(); } - } From 32e1c0d5506ed63901d6838bb6acb1463097eb44 Mon Sep 17 00:00:00 2001 From: eykamp Date: Mon, 2 Oct 2017 16:10:45 -0700 Subject: [PATCH 8/8] Revert "Update README.md" This reverts commit f937e0bc9dbaa1770f278e3c4652bc32fdf121f9. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 477e12993a..d96289fae1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ThingsBoard [![Join the chat at https://gitter.im/thingsboard/chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/thingsboard/chat?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![Build Status](https://travis-ci.org/eykamp/thingsboard.svg?branch=master)](https://travis-ci.org/thingsboard/thingsboard) +[![Build Status](https://travis-ci.org/thingsboard/thingsboard.svg?branch=master)](https://travis-ci.org/thingsboard/thingsboard) ThingsBoard is an open-source IoT platform for data collection, processing, visualization, and device management.