aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/database
diff options
context:
space:
mode:
authorDan <djr2468@gmail.com>2023-04-03 21:30:28 +0100
committerDan <djr2468@gmail.com>2023-04-03 21:30:28 +0100
commita16da3bef30b26cbf813526dee817538b99d9d6e (patch)
treebd89fcae5c41ac74c2cb5f0840159cefa0626ed5 /src/main/java/org/traccar/database
parent2d92fa2473b2317f01b904a8f1afd83e7884d7c8 (diff)
downloadtrackermap-server-a16da3bef30b26cbf813526dee817538b99d9d6e.tar.gz
trackermap-server-a16da3bef30b26cbf813526dee817538b99d9d6e.tar.bz2
trackermap-server-a16da3bef30b26cbf813526dee817538b99d9d6e.zip
Support providers who do not provide the groups scope
Diffstat (limited to 'src/main/java/org/traccar/database')
-rw-r--r--src/main/java/org/traccar/database/OpenIdProvider.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main/java/org/traccar/database/OpenIdProvider.java b/src/main/java/org/traccar/database/OpenIdProvider.java
index f5c7eef15..537319b31 100644
--- a/src/main/java/org/traccar/database/OpenIdProvider.java
+++ b/src/main/java/org/traccar/database/OpenIdProvider.java
@@ -94,9 +94,15 @@ public class OpenIdProvider {
}
public URI createAuthUri() {
+ Scope scope = new Scope("openid", "profile", "email");
+
+ if (adminGroup != null) {
+ scope.add("groups");
+ }
+
AuthenticationRequest.Builder request = new AuthenticationRequest.Builder(
new ResponseType("code"),
- new Scope("openid", "profile", "email", "groups"),
+ scope,
clientId,
callbackUrl);
@@ -156,9 +162,9 @@ public class OpenIdProvider {
UserInfo userInfo = getUserInfo(bearerToken);
- User user = loginService.login(
- userInfo.getEmailAddress(), userInfo.getName(),
- userInfo.getStringListClaim("groups").contains(adminGroup));
+ Boolean administrator = adminGroup != null && userInfo.getStringListClaim("groups").contains(adminGroup);
+
+ User user = loginService.login(userInfo.getEmailAddress(), userInfo.getName(), administrator);
request.getSession().setAttribute(SessionResource.USER_ID_KEY, user.getId());
LogAction.login(user.getId(), ServletHelper.retrieveRemoteAddress(request));