aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/database/OpenIdProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/database/OpenIdProvider.java')
-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));