diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientAPI.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientAPI.java index bcb2c8a7f..0780a8812 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientAPI.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/web/ClientAPI.java @@ -24,6 +24,8 @@ import org.mitre.jose.JWEEncryptionMethodEmbed; import org.mitre.jose.JWSAlgorithmEmbed; import org.mitre.oauth2.model.ClientDetailsEntity; import org.mitre.oauth2.service.ClientDetailsEntityService; +import org.mitre.openid.connect.model.UserInfo; +import org.mitre.openid.connect.service.UserInfoService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -40,6 +42,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import com.google.common.base.Strings; +import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; @@ -61,6 +64,10 @@ public class ClientAPI { @Autowired private ClientDetailsEntityService clientService; + + @Autowired + private UserInfoService userInfoService; + private JsonParser parser = new JsonParser(); private Gson gson = new GsonBuilder() @@ -159,8 +166,14 @@ public class ClientAPI { } // set owners as current logged in user - //client.setOwner(principal.getName()); - //TODO: owner has been replaced by a list of contacts, which should be styled as email addresses. + // try to look up a user based on the principal's name + if (client.getContacts() == null || client.getContacts().isEmpty()) { + UserInfo user = userInfoService.getByUsername(auth.getName()); + if (user != null && user.getEmail() != null) { + client.setContacts(Sets.newHashSet(user.getEmail())); + } + } + client.setDynamicallyRegistered(false); ClientDetailsEntity newClient = clientService.saveNewClient(client); @@ -225,8 +238,13 @@ public class ClientAPI { } // set owners as current logged in user - // client.setOwner(principal.getName()); - //TODO: owner has been replaced by a list of contacts, which should be styled as email addresses. + // try to look up a user based on the principal's name + if (client.getContacts() == null || client.getContacts().isEmpty()) { + UserInfo user = userInfoService.getByUsername(auth.getName()); + if (user != null && user.getEmail() != null) { + client.setContacts(Sets.newHashSet(user.getEmail())); + } + } ClientDetailsEntity newClient = clientService.updateClient(oldClient, client); m.addAttribute("entity", newClient);