mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Publishing:
- Return JSON status in response to authform.post - Remove authstatus webscript - Add icon URL to channel type data on REST API - Add authorise status to channel data on REST API - Add delete channel to REST API - Altered get icon operation on channel type so the required size can be specified freely (previously limited to known sizes) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29275 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -145,16 +145,15 @@ public abstract class AbstractChannelType implements ChannelType, InitializingBe
|
||||
@Override
|
||||
public String getAuthorisationUrl(Channel channel, String callbackUrl)
|
||||
{
|
||||
//Returning a null here to indicate that we should use our own credential-gathering mechanism.
|
||||
// Returning a null here to indicate that we should use our own
|
||||
// credential-gathering mechanism.
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
public final AuthStatus acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
Map<String, String[]> callbackParams)
|
||||
{
|
||||
boolean result = false;
|
||||
|
||||
ParameterCheck.mandatory("channel", channel);
|
||||
ParameterCheck.mandatory("callbackHeaders", callbackHeaders);
|
||||
ParameterCheck.mandatory("callbackParams", callbackParams);
|
||||
@@ -164,6 +163,18 @@ public abstract class AbstractChannelType implements ChannelType, InitializingBe
|
||||
+ "; Received " + channel.getChannelType().getId());
|
||||
}
|
||||
|
||||
AuthStatus result = internalAcceptAuthorisation(channel, callbackHeaders, callbackParams);
|
||||
|
||||
Map<QName, Serializable> props = new HashMap<QName, Serializable>();
|
||||
props.put(PublishingModel.PROP_AUTHORISATION_COMPLETE, Boolean.valueOf(AuthStatus.AUTHORISED.equals(result)));
|
||||
channelService.updateChannel(channel, props);
|
||||
return result;
|
||||
}
|
||||
|
||||
protected AuthStatus internalAcceptAuthorisation(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
Map<String, String[]> callbackParams)
|
||||
{
|
||||
AuthStatus result = AuthStatus.UNAUTHORISED;
|
||||
String[] username = callbackParams.get("username");
|
||||
String[] password = callbackParams.get("password");
|
||||
if (username != null && password != null)
|
||||
@@ -173,22 +184,12 @@ public abstract class AbstractChannelType implements ChannelType, InitializingBe
|
||||
props.put(PublishingModel.PROP_CHANNEL_PASSWORD, password[0]);
|
||||
channelService.updateChannel(channel, props);
|
||||
// TODO: BJR: 20110707: Should test the connection here
|
||||
result = true;
|
||||
result = AuthStatus.AUTHORISED;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public Resource getIcon16()
|
||||
{
|
||||
return getIcon("16");
|
||||
}
|
||||
|
||||
public Resource getIcon32()
|
||||
{
|
||||
return getIcon("32");
|
||||
}
|
||||
|
||||
protected Resource getIcon(String sizeSuffix)
|
||||
public Resource getIcon(String sizeSuffix)
|
||||
{
|
||||
String className = this.getClass().getCanonicalName();
|
||||
className = className.replaceAll("\\.", "\\/");
|
||||
|
@@ -363,5 +363,13 @@ public class ChannelHelper
|
||||
this.fileFolderService = fileFolderService;
|
||||
}
|
||||
|
||||
|
||||
public boolean isChannelAuthorised(NodeRef channelNode)
|
||||
{
|
||||
Boolean isAuthorised = Boolean.FALSE;
|
||||
if (nodeService.exists(channelNode))
|
||||
{
|
||||
isAuthorised = (Boolean)nodeService.getProperty(channelNode, PublishingModel.PROP_AUTHORISATION_COMPLETE);
|
||||
}
|
||||
return isAuthorised;
|
||||
}
|
||||
}
|
||||
|
@@ -133,4 +133,10 @@ public class ChannelImpl implements Channel
|
||||
NodeRef mappedNode = channelHelper.mapSourceToEnvironment(publishedNode, nodeRef);
|
||||
return channelType.getNodeUrl(mappedNode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAuthorised()
|
||||
{
|
||||
return channelHelper.isChannelAuthorised(getNodeRef());
|
||||
}
|
||||
}
|
||||
|
@@ -319,7 +319,10 @@ public class ChannelServiceImpl implements ChannelService
|
||||
HashMap<QName, Serializable> actualProps = new HashMap<QName, Serializable>(properties);
|
||||
actualProps.remove(ContentModel.PROP_NODE_UUID);
|
||||
NodeRef editorialNode = channel.getNodeRef();
|
||||
nodeService.setProperties(editorialNode, actualProps);
|
||||
for (Map.Entry<QName, Serializable> entry : actualProps.entrySet())
|
||||
{
|
||||
nodeService.setProperty(editorialNode, entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -139,10 +139,10 @@ public class FacebookChannelType extends AbstractChannelType
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
protected AuthStatus internalAcceptAuthorisation(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
Map<String, String[]> callbackParams)
|
||||
{
|
||||
boolean authorised = false;
|
||||
AuthStatus authorised = AuthStatus.UNAUTHORISED;
|
||||
|
||||
String accessToken = null;
|
||||
if (callbackParams.containsKey("access_token"))
|
||||
@@ -162,7 +162,7 @@ public class FacebookChannelType extends AbstractChannelType
|
||||
Map<QName,Serializable> channelProps = new HashMap<QName, Serializable>();
|
||||
channelProps.put(PublishingModel.PROP_OAUTH2_TOKEN, accessToken);
|
||||
getChannelService().updateChannel(channel, channelProps);
|
||||
authorised = true;
|
||||
authorised = AuthStatus.AUTHORISED;
|
||||
}
|
||||
return authorised;
|
||||
}
|
||||
|
@@ -173,10 +173,10 @@ public class FlickrChannelType extends AbstractChannelType
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
protected AuthStatus internalAcceptAuthorisation(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
Map<String, String[]> callbackParams)
|
||||
{
|
||||
boolean authorised = false;
|
||||
AuthStatus authorised = AuthStatus.UNAUTHORISED;
|
||||
String[] verifier = callbackParams.get("oauth_verifier");
|
||||
if (verifier != null)
|
||||
{
|
||||
@@ -193,7 +193,7 @@ public class FlickrChannelType extends AbstractChannelType
|
||||
newProps.put(PublishingModel.PROP_OAUTH1_TOKEN_VALUE, accessToken.getValue());
|
||||
newProps.put(PublishingModel.PROP_OAUTH1_TOKEN_SECRET, accessToken.getSecret());
|
||||
getChannelService().updateChannel(channel, newProps);
|
||||
authorised = true;
|
||||
authorised = AuthStatus.AUTHORISED;
|
||||
}
|
||||
return authorised;
|
||||
}
|
||||
|
@@ -145,10 +145,10 @@ public class TwitterChannelType extends AbstractChannelType
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
protected AuthStatus internalAcceptAuthorisation(Channel channel, Map<String, String[]> callbackHeaders,
|
||||
Map<String, String[]> callbackParams)
|
||||
{
|
||||
boolean authorised = false;
|
||||
AuthStatus authorised = AuthStatus.UNAUTHORISED;
|
||||
String[] verifier = callbackParams.get("oauth_verifier");
|
||||
if (verifier != null)
|
||||
{
|
||||
@@ -165,7 +165,7 @@ public class TwitterChannelType extends AbstractChannelType
|
||||
newProps.put(PublishingModel.PROP_OAUTH1_TOKEN_VALUE, accessToken.getValue());
|
||||
newProps.put(PublishingModel.PROP_OAUTH1_TOKEN_SECRET, accessToken.getSecret());
|
||||
getChannelService().updateChannel(channel, newProps);
|
||||
authorised = true;
|
||||
authorised = AuthStatus.AUTHORISED;
|
||||
}
|
||||
return authorised;
|
||||
}
|
||||
|
@@ -58,4 +58,15 @@ public interface Channel
|
||||
* @return a URL for the published content.
|
||||
*/
|
||||
String getUrl(NodeRef publishedNode);
|
||||
|
||||
/**
|
||||
* Has this channel been authorised yet?
|
||||
* Typically, when a channel is created in Alfresco the user is sent to the service provider to authorise
|
||||
* Alfresco to access their account on their behalf. Once Alfresco has been told that the user has done that then
|
||||
* this operation will return true. Until then, this operation will return false.
|
||||
*
|
||||
* A channel that is not authorised cannot be used to publish content or status updates to.
|
||||
* @return true if this channel has been authorised and is ready for use.
|
||||
*/
|
||||
boolean isAuthorised();
|
||||
}
|
@@ -35,6 +35,8 @@ import org.springframework.core.io.Resource;
|
||||
*/
|
||||
public interface ChannelType
|
||||
{
|
||||
enum AuthStatus {AUTHORISED, RETRY, UNAUTHORISED};
|
||||
|
||||
String getId();
|
||||
QName getChannelNodeType();
|
||||
NodeFinder getNodeFinder();
|
||||
@@ -59,9 +61,14 @@ public interface ChannelType
|
||||
int getMaximumStatusLength();
|
||||
|
||||
String getAuthorisationUrl(Channel channel, String callbackUrl);
|
||||
boolean acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders, Map<String, String[]> callbackParams);
|
||||
AuthStatus acceptAuthorisationCallback(Channel channel, Map<String, String[]> callbackHeaders, Map<String, String[]> callbackParams);
|
||||
|
||||
String getIconFileExtension();
|
||||
Resource getIcon16();
|
||||
Resource getIcon32();
|
||||
|
||||
/**
|
||||
* Obtain the resource that represents an icon for this channel type.
|
||||
* @param size A text representation of the icon size required. "16", "32", etc.
|
||||
* @return The resource that represents the requested icon if available. <code>null</code> otherwise.
|
||||
*/
|
||||
Resource getIcon(String size);
|
||||
}
|
||||
|
Reference in New Issue
Block a user