From 1ec5e75d1cd506c0c984f6545199fcdc38712300 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2020 13:57:22 +0000 Subject: [PATCH 01/18] [Security] Bump node-sass from 4.12.0 to 4.13.1 Bumps [node-sass](https://github.com/sass/node-sass) from 4.12.0 to 4.13.1. **This update includes a security fix.** - [Release notes](https://github.com/sass/node-sass/releases) - [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md) - [Commits](https://github.com/sass/node-sass/compare/v4.12.0...v4.13.1) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 28 ++++++++-------------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 2fa04e2a2..9690a0a30 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "lodash": "4.17.13", "map-stream": "0.0.7", "mini-css-extract-plugin": "^0.7.0", - "node-sass": "^4.12.0", + "node-sass": "^4.13.1", "phantomjs-prebuilt": "2.1.14", "postcss-loader": "^2.0.0", "protractor": "^5.4.4", diff --git a/yarn.lock b/yarn.lock index 970041a2a..1970a98d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4624,19 +4624,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -6842,7 +6830,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.13, lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.1, lodash@~4.17.10: +lodash@4.17.13: version "4.17.13" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.13.tgz#0bdc3a6adc873d2f4e0c4bac285df91b64fc7b93" integrity sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA== @@ -6857,7 +6845,7 @@ lodash@^3.10.1, lodash@^3.2.0, lodash@^3.3.1, lodash@^3.8.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.14, lodash@^4.17.15: +lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.1, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -7619,10 +7607,10 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-sass@^4.12.0, node-sass@^4.7.2: - version "4.12.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" - integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== +node-sass@^4.13.1, node-sass@^4.7.2: + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -7631,7 +7619,7 @@ node-sass@^4.12.0, node-sass@^4.7.2: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.15" meow "^3.7.0" mkdirp "^0.5.1" nan "^2.13.2" From a7de6d2a38b855fb46798bb467f268178651208d Mon Sep 17 00:00:00 2001 From: nivethika Date: Tue, 3 Nov 2020 14:49:47 +0100 Subject: [PATCH 02/18] bump version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ae6a656b0..fe69f7bcb 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ plugins { allprojects { group 'org.radarcns' - version '0.6.1' // project version + version '0.6.2-SNAPSHOT' // project version // The comment on the previous line is only there to identify the project version line easily // with a sed command, to auto-update the version number with the prepare-release-branch.sh From ef39691728b408d7a3987a385d3f61ff8714910c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 4 Nov 2020 05:36:23 +0000 Subject: [PATCH 03/18] [Security] Bump tree-kill from 1.2.1 to 1.2.2 Bumps [tree-kill](https://github.com/pkrumins/node-tree-kill) from 1.2.1 to 1.2.2. **This update includes a security fix.** - [Release notes](https://github.com/pkrumins/node-tree-kill/releases) - [Commits](https://github.com/pkrumins/node-tree-kill/compare/v1.2.1...v1.2.2) Signed-off-by: dependabot-preview[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 970041a2a..943fc7d33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11153,9 +11153,9 @@ tough-cookie@~2.4.3: punycode "^1.4.1" tree-kill@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" - integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== trim-newlines@^1.0.0: version "1.0.0" From 5371c16bca6ce856dc0930e38880edca87ea36c9 Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 4 Nov 2020 17:39:10 +0100 Subject: [PATCH 04/18] navigate to home page after login, if no redirect url found --- src/main/webapp/app/blocks/interceptor/auth.interceptor.ts | 3 ++- src/main/webapp/app/shared/login/login.component.ts | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/webapp/app/blocks/interceptor/auth.interceptor.ts b/src/main/webapp/app/blocks/interceptor/auth.interceptor.ts index a2c198d23..4a24c2106 100644 --- a/src/main/webapp/app/blocks/interceptor/auth.interceptor.ts +++ b/src/main/webapp/app/blocks/interceptor/auth.interceptor.ts @@ -16,11 +16,12 @@ export class AuthInterceptor implements HttpInterceptor { if (!!tokenString) { const token: TokenData = JSON.parse(tokenString); if (!!token && token.expires_at && token.expires_at > new Date().getTime()) { - request = request.clone({ + const newReq = request.clone({ setHeaders: { Authorization: 'Bearer ' + token.access_token } }); + return next.handle(newReq); } } return next.handle(request); diff --git a/src/main/webapp/app/shared/login/login.component.ts b/src/main/webapp/app/shared/login/login.component.ts index a0aa3035e..770a3a903 100644 --- a/src/main/webapp/app/shared/login/login.component.ts +++ b/src/main/webapp/app/shared/login/login.component.ts @@ -65,9 +65,16 @@ export class JhiLoginModalComponent implements AfterViewInit { // // previousState was set in the authExpiredInterceptor before being redirected to login modal. // // since login is succesful, go to stored previousState and clear previousState + const redirect = this.stateStorageService.getUrl(); + console.log('redirect', redirect); if (redirect) { + console.log('redirecting to', redirect); + this.stateStorageService.storeUrl(null); this.router.navigate([redirect]); + } else { + console.log('redirecting to home', redirect); + this.router.navigate(['/']); } }).catch(() => { this.authenticationError = true; From a06ae8b54f44f33f4875428ca712fa718e1c2272 Mon Sep 17 00:00:00 2001 From: nivethika Date: Thu, 5 Nov 2020 13:00:36 +0100 Subject: [PATCH 05/18] remove console log --- src/main/webapp/app/shared/login/login.component.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/webapp/app/shared/login/login.component.ts b/src/main/webapp/app/shared/login/login.component.ts index 770a3a903..e9efd79e7 100644 --- a/src/main/webapp/app/shared/login/login.component.ts +++ b/src/main/webapp/app/shared/login/login.component.ts @@ -67,13 +67,10 @@ export class JhiLoginModalComponent implements AfterViewInit { // // since login is succesful, go to stored previousState and clear previousState const redirect = this.stateStorageService.getUrl(); - console.log('redirect', redirect); if (redirect) { - console.log('redirecting to', redirect); this.stateStorageService.storeUrl(null); this.router.navigate([redirect]); } else { - console.log('redirecting to home', redirect); this.router.navigate(['/']); } }).catch(() => { From aee8f11a5fabc13194f21c33684eae6bb4bcc7e8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 6 Nov 2020 05:42:31 +0000 Subject: [PATCH 06/18] [Security] Bump webpack-subresource-integrity from 1.3.3 to 1.5.2 Bumps [webpack-subresource-integrity](https://github.com/waysact/webpack-subresource-integrity) from 1.3.3 to 1.5.2. **This update includes a security fix.** - [Release notes](https://github.com/waysact/webpack-subresource-integrity/releases) - [Changelog](https://github.com/waysact/webpack-subresource-integrity/blob/master/CHANGELOG.md) - [Commits](https://github.com/waysact/webpack-subresource-integrity/compare/v1.3.3...v1.5.2) Signed-off-by: dependabot-preview[bot] --- yarn.lock | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 970041a2a..84ff2bb2f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11884,7 +11884,7 @@ webpack-notifier@1.5.0: object-assign "^4.1.0" strip-ansi "^3.0.1" -webpack-sources@^1.0.0: +webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.3.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -11892,18 +11892,10 @@ webpack-sources@^1.0.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - webpack-subresource-integrity@^1.0.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.3.tgz#8a320457a93ef480707884443d886f7f677ccbf7" - integrity sha512-t668hZNc/fZCgt2u83A4Tp9l5sDEwAhEC5XQ2QugshEr9WkNNDQC6551pB/JUfy5DwqTa/MJzAjeG5QQ9vxCEA== + version "1.5.2" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz#e40b6578d3072e2d24104975249c52c66e9a743e" + integrity sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw== dependencies: webpack-sources "^1.3.0" From af4648e74da611f9a3631205ee7819fb61da3f1a Mon Sep 17 00:00:00 2001 From: nivethika Date: Fri, 6 Nov 2020 11:30:10 +0100 Subject: [PATCH 07/18] fix Dutch text in English language resource. --- src/main/webapp/i18n/en/user-management.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/webapp/i18n/en/user-management.json b/src/main/webapp/i18n/en/user-management.json index 3e0815d7e..9e0d551be 100644 --- a/src/main/webapp/i18n/en/user-management.json +++ b/src/main/webapp/i18n/en/user-management.json @@ -23,8 +23,8 @@ "firstName": "First name", "lastName": "Last name", "email": "Email", - "activated": "Geactiveerd", - "deactivated": "Gedeactiveerd", + "activated": "Activated", + "deactivated": "Deactivated", "profiles": "Authorities", "langKey": "Language", "createdBy": "Created by", From a677f5e114c22dd7d3ebcdefe5d8ef67a41cc9da Mon Sep 17 00:00:00 2001 From: nivethika Date: Fri, 6 Nov 2020 15:29:05 +0100 Subject: [PATCH 08/18] filter participants from user-management table --- .../repository/filters/UserFilter.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java index 9868cf3ca..94f641d38 100644 --- a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java +++ b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java @@ -15,6 +15,9 @@ import java.util.ArrayList; import java.util.List; +import static org.radarcns.auth.authorization.AuthoritiesConstants.INACTIVE_PARTICIPANT; +import static org.radarcns.auth.authorization.AuthoritiesConstants.PARTICIPANT; + public class UserFilter implements Specification { private String login; private String email; @@ -22,37 +25,44 @@ public class UserFilter implements Specification { private String authority; @Override - public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder builder) { List predicates = new ArrayList<>(); + Join roleJoin = root.join("roles"); + Join authorityJoin = roleJoin.join("authority"); + Predicate filterParticipants = builder.and( + builder.not(authorityJoin.get("name").in(PARTICIPANT, INACTIVE_PARTICIPANT))); + predicates.add(filterParticipants); if (StringUtils.isNotBlank(login)) { predicates - .add(cb.like(cb.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); + .add(builder.like(builder.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(email)) { predicates - .add(cb.like(cb.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); + .add(builder.like(builder.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(projectName)) { - Join roleJoin = root.join("roles"); Join projectJoin = roleJoin.join("project"); - predicates.add(cb.like(cb.lower(projectJoin.get("projectName")), + predicates.add(builder.like(builder.lower(projectJoin.get("projectName")), "%" + projectName.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(authority)) { - Join roleJoin = root.join("roles"); - Join authorityJoin = roleJoin.join("authority"); - predicates.add(cb.like(cb.lower(authorityJoin.get("name")), - "%" + authority.trim().toLowerCase() + "%")); + Predicate filterByAuthority = builder.and( + builder.like(builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), + filterParticipants); + predicates.add(filterByAuthority); + + } else { + predicates.add(filterParticipants); } if (predicates.isEmpty()) { return null; } else { query.distinct(true); - return cb.and(predicates.toArray(new Predicate[0])); + return builder.and(predicates.toArray(new Predicate[0])); } } From 341eba1f428ef5c8d53921576deb44be01635c9a Mon Sep 17 00:00:00 2001 From: nivethika Date: Mon, 9 Nov 2020 12:55:57 +0100 Subject: [PATCH 09/18] fix test --- build.gradle | 4 +++- .../repository/filters/UserFilter.java | 11 +++++----- .../web/rest/UserResourceIntTest.java | 22 +++++++++++++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index fe69f7bcb..53953eadc 100644 --- a/build.gradle +++ b/build.gradle @@ -195,7 +195,9 @@ dependencies { testCompile "org.awaitility:awaitility:${awaitility_version}" testCompile "com.jayway.jsonpath:json-path" - testCompile "org.springframework.boot:spring-boot-starter-test" + testCompile ("org.springframework.boot:spring-boot-starter-test") { + exclude group: "com.vaadin.external.google", module:"android-json" + } testCompile "org.springframework.security:spring-security-test" testCompile "org.springframework.boot:spring-boot-test" testCompile "org.assertj:assertj-core:${assertj_version}" diff --git a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java index 94f641d38..c61d892ea 100644 --- a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java +++ b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java @@ -35,12 +35,12 @@ public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBu predicates.add(filterParticipants); if (StringUtils.isNotBlank(login)) { - predicates - .add(builder.like(builder.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); + predicates.add( + builder.like(builder.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(email)) { - predicates - .add(builder.like(builder.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); + predicates.add( + builder.like(builder.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(projectName)) { @@ -50,7 +50,8 @@ public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBu } if (StringUtils.isNotBlank(authority)) { Predicate filterByAuthority = builder.and( - builder.like(builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), + builder.like( + builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), filterParticipants); predicates.add(filterByAuthority); diff --git a/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java b/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java index 83952e497..7d7f26bc6 100644 --- a/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java +++ b/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java @@ -8,6 +8,8 @@ import org.radarcns.auth.authorization.AuthoritiesConstants; import org.radarcns.management.ManagementPortalTestApp; import org.radarcns.management.config.ManagementPortalProperties; +import org.radarcns.management.domain.Authority; +import org.radarcns.management.domain.Role; import org.radarcns.management.domain.User; import org.radarcns.management.repository.SubjectRepository; import org.radarcns.management.repository.UserRepository; @@ -34,6 +36,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import java.util.HashSet; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -52,6 +55,7 @@ import static org.radarcns.management.service.UserServiceIntTest.UPDATED_LOGIN; import static org.radarcns.management.service.UserServiceIntTest.UPDATED_PASSWORD; import static org.radarcns.management.service.UserServiceIntTest.createEntity; +import static org.radarcns.auth.authorization.AuthoritiesConstants.SYS_ADMIN; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -125,7 +129,6 @@ public void setUp() throws ServletException { } - @Before public void initTest() { user = createEntity(); @@ -238,7 +241,22 @@ public void createUserWithExistingEmail() throws Exception { @Transactional public void getAllUsers() throws Exception { // Initialize the database - userRepository.saveAndFlush(user); + Role adminRole = new Role(); + adminRole.setId(1L); + adminRole.setAuthority(new Authority(SYS_ADMIN)); + adminRole.setProject(null); + + User userWithRole = new User(); + userWithRole.setLogin(DEFAULT_LOGIN); + userWithRole.setPassword(RandomStringUtils.random(60)); + userWithRole.setActivated(true); + userWithRole.setEmail(DEFAULT_EMAIL); + userWithRole.setFirstName(DEFAULT_FIRSTNAME); + userWithRole.setLastName(DEFAULT_LASTNAME); + userWithRole.setLangKey(DEFAULT_LANGKEY); + userWithRole.setRoles(Collections.singleton(adminRole)); + userRepository.saveAndFlush(userWithRole); + final int databaseSizeBeforeCreate = userRepository.findAll().size(); // Get all the users restUserMockMvc.perform(get("/api/users?sort=id,desc") From 334f1f7c42729d65a4bdeef7f6dec66017bbbe2d Mon Sep 17 00:00:00 2001 From: nivethika Date: Mon, 9 Nov 2020 13:37:27 +0100 Subject: [PATCH 10/18] code style fix --- .../management/repository/filters/UserFilter.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java index c61d892ea..9793c9d27 100644 --- a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java +++ b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java @@ -35,12 +35,12 @@ public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBu predicates.add(filterParticipants); if (StringUtils.isNotBlank(login)) { - predicates.add( - builder.like(builder.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); + predicates.add(builder.like( + builder.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(email)) { - predicates.add( - builder.like(builder.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); + predicates.add(builder.like( + builder.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(projectName)) { @@ -49,9 +49,8 @@ public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBu "%" + projectName.trim().toLowerCase() + "%")); } if (StringUtils.isNotBlank(authority)) { - Predicate filterByAuthority = builder.and( - builder.like( - builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), + Predicate filterByAuthority = builder.and(builder.like( + builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), filterParticipants); predicates.add(filterByAuthority); From 90771d99511f8a3eb310973cc1fde870d053c0f8 Mon Sep 17 00:00:00 2001 From: nivethika Date: Mon, 16 Nov 2020 17:42:23 +0100 Subject: [PATCH 11/18] fix issues with using user filter --- .../management/repository/filters/UserFilter.java | 10 +++++----- .../radarcns/management/web/rest/util/FilterUtil.java | 9 +++++++++ .../management/web/rest/UserResourceIntTest.java | 1 - 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/radarcns/management/web/rest/util/FilterUtil.java diff --git a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java index 9793c9d27..ead729486 100644 --- a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java +++ b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java @@ -1,10 +1,10 @@ package org.radarcns.management.repository.filters; -import org.apache.commons.lang.StringUtils; import org.radarcns.management.domain.Authority; import org.radarcns.management.domain.Project; import org.radarcns.management.domain.Role; import org.radarcns.management.domain.User; +import org.radarcns.management.web.rest.util.FilterUtil; import org.springframework.data.jpa.domain.Specification; import javax.persistence.criteria.CriteriaBuilder; @@ -34,21 +34,21 @@ public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBu builder.not(authorityJoin.get("name").in(PARTICIPANT, INACTIVE_PARTICIPANT))); predicates.add(filterParticipants); - if (StringUtils.isNotBlank(login)) { + if (FilterUtil.isValid(login)) { predicates.add(builder.like( builder.lower(root.get("login")), "%" + login.trim().toLowerCase() + "%")); } - if (StringUtils.isNotBlank(email)) { + if (FilterUtil.isValid(email)) { predicates.add(builder.like( builder.lower(root.get("email")), "%" + email.trim().toLowerCase() + "%")); } - if (StringUtils.isNotBlank(projectName)) { + if (FilterUtil.isValid(projectName)) { Join projectJoin = roleJoin.join("project"); predicates.add(builder.like(builder.lower(projectJoin.get("projectName")), "%" + projectName.trim().toLowerCase() + "%")); } - if (StringUtils.isNotBlank(authority)) { + if (FilterUtil.isValid(authority)) { Predicate filterByAuthority = builder.and(builder.like( builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), filterParticipants); diff --git a/src/main/java/org/radarcns/management/web/rest/util/FilterUtil.java b/src/main/java/org/radarcns/management/web/rest/util/FilterUtil.java new file mode 100644 index 000000000..274688c41 --- /dev/null +++ b/src/main/java/org/radarcns/management/web/rest/util/FilterUtil.java @@ -0,0 +1,9 @@ +package org.radarcns.management.web.rest.util; + +import org.apache.commons.lang.StringUtils; + +public class FilterUtil { + public static boolean isValid(String str) { + return StringUtils.isNotBlank(str) && !str.equals("null"); + } +} diff --git a/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java b/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java index 7d7f26bc6..bb26fc4a4 100644 --- a/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java +++ b/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java @@ -256,7 +256,6 @@ public void getAllUsers() throws Exception { userWithRole.setLangKey(DEFAULT_LANGKEY); userWithRole.setRoles(Collections.singleton(adminRole)); userRepository.saveAndFlush(userWithRole); - final int databaseSizeBeforeCreate = userRepository.findAll().size(); // Get all the users restUserMockMvc.perform(get("/api/users?sort=id,desc") From fdfffe914bc1bc0d1fe4bcefe4a418d2fe2fefa2 Mon Sep 17 00:00:00 2001 From: nivethika Date: Tue, 17 Nov 2020 17:24:51 +0100 Subject: [PATCH 12/18] send sort parameters to backend --- src/main/webapp/app/shared/model/request.utils.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/webapp/app/shared/model/request.utils.ts b/src/main/webapp/app/shared/model/request.utils.ts index eeef53ab7..071c9e370 100644 --- a/src/main/webapp/app/shared/model/request.utils.ts +++ b/src/main/webapp/app/shared/model/request.utils.ts @@ -1,17 +1,18 @@ import { HttpParams } from '@angular/common/http'; -export const createRequestOption = (req?: RequestOptions): HttpParams => { +export const createRequestOption = (req?: any): HttpParams => { let options: HttpParams = new HttpParams(); if (req) { Object.keys(req).forEach((key) => { - if (Array.isArray(req[key])) { - const values: [string] = req[key] as [string]; - values.forEach(value => options.append(key, value)); - } else { - const value = req[key] as string; - options = options.set(key, value); + if (key !== 'sort') { + options = options.set(key, req[key]); } }); + if (req.sort) { + req.sort.forEach((val) => { + options = options.append('sort', val); + }); + } } return options; }; From 02ec330594b815375d9983c8a9ecaaad3185d9c7 Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 18 Nov 2020 14:43:05 +0100 Subject: [PATCH 13/18] send valid query param only --- .../radarcns/management/repository/filters/UserFilter.java | 6 +----- src/main/webapp/app/shared/model/request.utils.ts | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java index ead729486..57e45e6d3 100644 --- a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java +++ b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java @@ -7,11 +7,7 @@ import org.radarcns.management.web.rest.util.FilterUtil; import org.springframework.data.jpa.domain.Specification; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; +import javax.persistence.criteria.*; import java.util.ArrayList; import java.util.List; diff --git a/src/main/webapp/app/shared/model/request.utils.ts b/src/main/webapp/app/shared/model/request.utils.ts index 071c9e370..c10b23bec 100644 --- a/src/main/webapp/app/shared/model/request.utils.ts +++ b/src/main/webapp/app/shared/model/request.utils.ts @@ -4,7 +4,7 @@ export const createRequestOption = (req?: any): HttpParams => { let options: HttpParams = new HttpParams(); if (req) { Object.keys(req).forEach((key) => { - if (key !== 'sort') { + if (key !== 'sort' && req[key]) { options = options.set(key, req[key]); } }); From 25b77b8fbbd84c2d076d7ff6fd71eeb3789a1c96 Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 18 Nov 2020 14:43:29 +0100 Subject: [PATCH 14/18] disable sorting predicates that don't work --- .../user-management/user-management.component.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/webapp/app/admin/user-management/user-management.component.html b/src/main/webapp/app/admin/user-management/user-management.component.html index 07e0b894d..9728f4c49 100644 --- a/src/main/webapp/app/admin/user-management/user-management.component.html +++ b/src/main/webapp/app/admin/user-management/user-management.component.html @@ -37,11 +37,11 @@

Filter by

Email Lang Key - Profiles - Project - Created Date - Last Modified By - Last Modified Date + Profiles + Project + Created Date + Last Modified By + Last Modified Date From 1798513af24be0de4d71804ee5b490b45655e254 Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 18 Nov 2020 14:43:52 +0100 Subject: [PATCH 15/18] add subject's sorting parameters back --- src/main/webapp/app/shared/subject/subject.component.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/webapp/app/shared/subject/subject.component.html b/src/main/webapp/app/shared/subject/subject.component.html index 715048a85..34f6fe196 100644 --- a/src/main/webapp/app/shared/subject/subject.component.html +++ b/src/main/webapp/app/shared/subject/subject.component.html @@ -28,9 +28,9 @@

- - - + + + From 4efa94d13c487187a975cc7302249d6655ed3392 Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 18 Nov 2020 15:03:25 +0100 Subject: [PATCH 16/18] fix code style and e2e test --- .../management/repository/filters/UserFilter.java | 9 +++++++-- .../management/web/rest/UserResourceIntTest.java | 2 +- .../javascript/e2e/entities/user-management.spec.ts | 10 +++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java index 57e45e6d3..e9cc2eb7a 100644 --- a/src/main/java/org/radarcns/management/repository/filters/UserFilter.java +++ b/src/main/java/org/radarcns/management/repository/filters/UserFilter.java @@ -7,7 +7,11 @@ import org.radarcns.management.web.rest.util.FilterUtil; import org.springframework.data.jpa.domain.Specification; -import javax.persistence.criteria.*; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Join; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.List; @@ -46,7 +50,8 @@ public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBu } if (FilterUtil.isValid(authority)) { Predicate filterByAuthority = builder.and(builder.like( - builder.lower(authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), + builder.lower( + authorityJoin.get("name")), "%" + authority.trim().toLowerCase() + "%"), filterParticipants); predicates.add(filterByAuthority); diff --git a/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java b/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java index bb26fc4a4..5a3b5410f 100644 --- a/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java +++ b/src/test/java/org/radarcns/management/web/rest/UserResourceIntTest.java @@ -142,7 +142,7 @@ public void createUser() throws Exception { // Create the User Set roles = new HashSet<>(); RoleDTO role = new RoleDTO(); - role.setAuthorityName(AuthoritiesConstants.SYS_ADMIN); + role.setAuthorityName(SYS_ADMIN); roles.add(role); ManagedUserVM managedUserVm = createDefaultUser(roles); diff --git a/src/test/javascript/e2e/entities/user-management.spec.ts b/src/test/javascript/e2e/entities/user-management.spec.ts index b35048756..0ee806e41 100644 --- a/src/test/javascript/e2e/entities/user-management.spec.ts +++ b/src/test/javascript/e2e/entities/user-management.spec.ts @@ -49,7 +49,7 @@ describe('Create, edit, and delete user', () => { await element(by.cssContainingText('button.btn-primary', 'Save')).click(); await browser.waitForAngular(); - expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(8); + expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(4); }); it('should be able to create new system admin user', async() => { @@ -61,7 +61,7 @@ describe('Create, edit, and delete user', () => { await element(by.cssContainingText('button.btn-primary', 'Save')).click(); await browser.waitForAngular(); - expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(9); + expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(5); }); it('should be able to edit a user with roles', async() => { @@ -73,7 +73,7 @@ describe('Create, edit, and delete user', () => { await element(by.cssContainingText('button.btn-primary', 'Save')).click(); await browser.waitForAngular(); - expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(9); + expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(5); }); it('should be able to delete a user with roles', async() => { @@ -85,7 +85,7 @@ describe('Create, edit, and delete user', () => { .click(); await browser.waitForAngular(); - expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(8); + expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(4); }); it('should be able to delete a sys admin user', async() => { @@ -97,6 +97,6 @@ describe('Create, edit, and delete user', () => { .click(); await browser.waitForAngular(); - expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(7); + expect((await element.all(by.css('jhi-user-mgmt tbody tr')).count())).toEqual(3); }); }); From 06057e8a7c27372df208b7aebed324e25a1b9f18 Mon Sep 17 00:00:00 2001 From: nivethika Date: Thu, 19 Nov 2020 11:53:22 +0100 Subject: [PATCH 17/18] prepare release --- README.md | 2 +- build.gradle | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cafb59a74..fb774cb19 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ memory database and ManagementPortal. -The docker image can be pulled by running `docker pull radarbase/management-portal:0.6.1`. +The docker image can be pulled by running `docker pull radarbase/management-portal:0.6.2`. ## Configuration diff --git a/build.gradle b/build.gradle index 53953eadc..d736df0c8 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ plugins { allprojects { group 'org.radarcns' - version '0.6.2-SNAPSHOT' // project version + version 'release-0.6.2' // project version // The comment on the previous line is only there to identify the project version line easily // with a sed command, to auto-update the version number with the prepare-release-branch.sh diff --git a/package.json b/package.json index eeba19371..dc56dc5c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "management-portal", - "version": "0.6.1", + "version": "release-0.6.2", "description": "Description for ManagementPortal", "private": true, "cacheDirectories": [ From a17b1b3c436e40aeccbbbb5a4327c9af05f514b0 Mon Sep 17 00:00:00 2001 From: nivethika Date: Thu, 19 Nov 2020 12:03:00 +0100 Subject: [PATCH 18/18] correct release version --- build.gradle | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index d736df0c8..19f9bc3f3 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ plugins { allprojects { group 'org.radarcns' - version 'release-0.6.2' // project version + version '0.6.2' // project version // The comment on the previous line is only there to identify the project version line easily // with a sed command, to auto-update the version number with the prepare-release-branch.sh diff --git a/package.json b/package.json index 8d9d45c07..182eb2dcf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "management-portal", - "version": "release-0.6.2", + "version": "0.6.2", "description": "Description for ManagementPortal", "private": true, "cacheDirectories": [
subjectIdEnternal IdStatussubjectIdEnternal IdStatus Project Sources Attributes