Moved SocialRequestManager from social/core to services
This commit is contained in:
1 parent
de6cd5f10a
commit
2ff46353bc
9 files changed
+23
-27
No files matched your search
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* JBoss, Home of Professional Open Source.
|
||||
* Copyright 2012, Red Hat, Inc., and individual contributors
|
||||
* as indicated by the @author tags. See the copyright.txt file in the
|
||||
* distribution for a full listing of individual contributors.
|
||||
*
|
||||
* This is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this software; if not, write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
||||
*/
|
||||
package org.keycloak.services.managers;
|
||||
|
||||
import org.keycloak.social.RequestDetails;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
*/
|
||||
public class SocialRequestManager {
|
||||
|
||||
public static final long TIMEOUT = 10 * 60 * 1000;
|
||||
|
||||
private Map<String, RequestDetails> map = new HashMap<String, RequestDetails>();
|
||||
|
||||
private LinkedHashMap<String, Long> expires = new LinkedHashMap<String, Long>();
|
||||
|
||||
public synchronized void addRequest(String requestId, RequestDetails request) {
|
||||
pruneExpired();
|
||||
|
||||
map.put(requestId, request);
|
||||
expires.put(requestId, System.currentTimeMillis() + TIMEOUT);
|
||||
}
|
||||
|
||||
public synchronized boolean isRequestId(String requestId) {
|
||||
return map.containsKey(requestId);
|
||||
}
|
||||
|
||||
public synchronized RequestDetails retrieveData(String requestId) {
|
||||
expires.remove(requestId);
|
||||
RequestDetails details = map.remove(requestId);
|
||||
|
||||
pruneExpired();
|
||||
|
||||
return details;
|
||||
}
|
||||
|
||||
// Just obtain data without expiring it
|
||||
public synchronized RequestDetails getData(String requestId) {
|
||||
return map.get(requestId);
|
||||
}
|
||||
|
||||
private void pruneExpired() {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
Iterator<Entry<String, Long>> itr = expires.entrySet().iterator();
|
||||
while (itr.hasNext()) {
|
||||
Entry<String, Long> e = itr.next();
|
||||
if (e.getValue() < currentTime) {
|
||||
itr.remove();
|
||||
map.remove(e.getKey());
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import org.keycloak.models.picketlink.PicketlinkKeycloakSessionFactory;
|
||||
import org.keycloak.models.picketlink.mappings.ApplicationEntity;
|
||||
import org.keycloak.models.picketlink.mappings.RealmEntity;
|
||||
import org.keycloak.services.utils.PropertiesManager;
|
||||
import org.keycloak.social.SocialRequestManager;
|
||||
import org.keycloak.services.managers.SocialRequestManager;
|
||||
import org.picketlink.idm.PartitionManager;
|
||||
import org.picketlink.idm.config.IdentityConfigurationBuilder;
|
||||
import org.picketlink.idm.internal.DefaultPartitionManager;
|
||||
|
||||
@@ -66,7 +66,7 @@ import org.keycloak.social.SocialConstants;
|
||||
import org.keycloak.social.SocialProvider;
|
||||
import org.keycloak.social.SocialProviderConfig;
|
||||
import org.keycloak.social.SocialProviderException;
|
||||
import org.keycloak.social.SocialRequestManager;
|
||||
import org.keycloak.services.managers.SocialRequestManager;
|
||||
import org.keycloak.social.SocialUser;
|
||||
|
||||
/**
|
||||
@@ -186,7 +186,6 @@ public class SocialResource {
|
||||
MultivaluedMap<String, String> formData = fillRegistrationFormWithSocialData(socialUser);
|
||||
|
||||
RequestDetailsBuilder reqDetailsBuilder = RequestDetailsBuilder.createFromRequestDetails(requestData);
|
||||
reqDetailsBuilder.putSocialAttribute(SocialConstants.ATTR_SOCIAL_LINK, socialLink);
|
||||
|
||||
String requestId = UUID.randomUUID().toString();
|
||||
socialRequestManager.addRequest(requestId, reqDetailsBuilder.build());
|
||||
@@ -281,7 +280,6 @@ public class SocialResource {
|
||||
String scope = requestData.getClientAttribute("scope");
|
||||
String state = requestData.getClientAttribute("state");
|
||||
String redirectUri = requestData.getClientAttribute("redirectUri");
|
||||
SocialLinkModel socialLink = (SocialLinkModel)requestData.getSocialAttribute(SocialConstants.ATTR_SOCIAL_LINK);
|
||||
|
||||
Response response1 = tokenService.processRegisterImpl(clientId, scope, state, redirectUri, formData, true);
|
||||
|
||||
@@ -297,7 +295,7 @@ public class SocialResource {
|
||||
// Normally shouldn't happen
|
||||
throw new IllegalStateException("User " + username + " not found in the realm");
|
||||
}
|
||||
realm.addSocialLink(user, socialLink);
|
||||
realm.addSocialLink(user, new SocialLinkModel(requestData.getProviderId(), username));
|
||||
|
||||
// Expire cookie and invalidate requestData
|
||||
String cookiePath = Urls.socialBase(uriInfo.getBaseUri()).build().getPath();
|
||||
|
||||
Reference in new issue
Block a user