07-15-2009 11:30 AM
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService;
import org.apache.log4j.Logger;
public class BootstrapAuthorityCreator {
private AuthorityService authorityService;
private PersonService personService;
private TransactionService transactionService;
private AuthenticationService authenticationService;
private UserTransaction tx;
private static Logger logger = Logger.getLogger(BootstrapAuthorityCreator.class);
public void init() throws Exception {
String salesGroup;
String marketingGroup;
tx = transactionService.getUserTransaction();
tx.begin();
// create tuser1, tuser2, tuser3, tuser4
if(!authenticationService.authenticationExists("tuser1")) {
authenticationService.createAuthentication("tuser1", "password".toCharArray());
if (logger.isDebugEnabled()) logger.debug("Created tuser1 auth");
}
if (!personService.personExists("tuser1")) {
personService.createPerson(createDefaultProperties("tuser1", "Test", "User1", "tuser1@localhost", "password"));
if (logger.isDebugEnabled()) logger.debug("Created tuser1 person");
}
if(!authenticationService.authenticationExists("tuser2")) {
authenticationService.createAuthentication("tuser2", "password".toCharArray());
if (logger.isDebugEnabled()) logger.debug("Created tuser2 auth");
}
if (!personService.personExists("tuser2")) {
personService.createPerson(createDefaultProperties("tuser2", "Test", "User2", "tuser2@localhost", "password"));
if (logger.isDebugEnabled()) logger.debug("Created tuser2 person");
}
if(!authenticationService.authenticationExists("tuser3")) {
authenticationService.createAuthentication("tuser3", "password".toCharArray());
if (logger.isDebugEnabled()) logger.debug("Created tuser3 auth");
}
if (!personService.personExists("tuser3")) {
personService.createPerson(createDefaultProperties("tuser3", "Test", "User3", "tuser3@localhost", "password"));
if (logger.isDebugEnabled()) logger.debug("Created tuser3 person");
}
if(!authenticationService.authenticationExists("tuser4")) {
authenticationService.createAuthentication("tuser4", "password".toCharArray());
if (logger.isDebugEnabled()) logger.debug("Created tuser4 auth");
}
if (!personService.personExists("tuser4")) {
personService.createPerson(createDefaultProperties("tuser4", "Test", "User4", "tuser4@localhost", "password"));
if (logger.isDebugEnabled()) logger.debug("Created tuser4 person");
}
if (authorityService.authorityExists(authorityService.getName(AuthorityType.GROUP, "sales"))) {
salesGroup = authorityService.getName(AuthorityType.GROUP, "sales");
} else {
// create the sales group
salesGroup = authorityService.createAuthority(AuthorityType.GROUP, null, "sales");
}
//add tuser1 and tuser2 to the sales group
authorityService.addAuthority(salesGroup, "tuser1");
authorityService.addAuthority(salesGroup, "tuser2");
if (authorityService.authorityExists(authorityService.getName(AuthorityType.GROUP, "marketing"))) {
marketingGroup = authorityService.getName(AuthorityType.GROUP, "marketing");
} else {
// create the marketing group
marketingGroup = authorityService.createAuthority(AuthorityType.GROUP, null, "marketing");
}
//add tuser3 and tuser4 to the marketing group
authorityService.addAuthority(marketingGroup, "tuser3");
authorityService.addAuthority(marketingGroup, "tuser4");
tx.commit();
}
private Map<QName, Serializable> createDefaultProperties(String userName, String firstName, String lastName,
String email, String password) {
HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>();
properties.put(ContentModel.PROP_USERNAME, userName);
properties.put(ContentModel.PROP_FIRSTNAME, firstName);
properties.put(ContentModel.PROP_LASTNAME, lastName);
properties.put(ContentModel.PROP_EMAIL, email);
properties.put(ContentModel.PROP_PASSWORD, password);
return properties;
}
public void setAuthorityService(AuthorityService authorityService) {
this.authorityService = authorityService;
}
public void setPersonService(PersonService personService) {
this.personService = personService;
}
public void setTransactionService(TransactionService transactionService) {
this.transactionService = transactionService;
}
public void setAuthenticationService(AuthenticationService authenticationService) {
this.authenticationService = authenticationService;
}
}
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!– A simple class that is initialized by Spring –>
<bean id="sdk.createUsers.createUsersBean" class="org.alfresco.module.sdkcreateusers.BootstrapAuthorityCreator" init-method="init">
<property name="personService">
<ref bean="personService" />
</property>
<property name="authorityService">
<ref bean="authorityService" />
</property>
<property name="transactionService">
<ref bean="transactionService" />
</property>
<property name="authenticationService">
<ref bean="authenticationService" />
</property>
</bean>
</beans>
(…)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sdk.createUsers.createUsersBean' defined in file [/opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/module/sdkCreateUsers/module-context.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
Caused by: java.lang.NullPointerException
at org.alfresco.repo.search.IndexerComponent.createNode(IndexerComponent.java:72)
at org.alfresco.repo.node.index.NodeIndexer.indexCreateNode(NodeIndexer.java:91)
at org.alfresco.repo.node.db.DbNodeServiceImpl.createNode(DbNodeServiceImpl.java:345)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invokeInternal(SingleEntryTransactionResourceInterceptor.java:163)
at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invoke(SingleEntryTransactionResourceInterceptor.java:138)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy9.createNode(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy9.createNode(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:221)
at $Proxy10.createNode(Unknown Source)
at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:279)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:188)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:188)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy9.createNode(Unknown Source)
at org.alfresco.repo.security.authentication.RepositoryAuthenticationDao.createUser(RepositoryAuthenticationDao.java:254)
at org.alfresco.repo.security.authentication.AuthenticationServiceImpl.createAuthentication(AuthenticationServiceImpl.java:82)
at org.alfresco.repo.security.authentication.AbstractChainingAuthenticationService.createAuthentication(AbstractChainingAuthenticationService.java:76)
at org.alfresco.module.sdkcreateusers.BootstrapAuthorityCreator.init(BootstrapAuthorityCreator.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1242)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:69)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
15:50:19,065 INFO [org.alfresco.web.site.FrameworkHelper] Successfully Initialized Web Framework
(…)
07-30-2009 03:54 AM
10-14-2009 04:49 PM
#########################################################
# Classe Alfresco
# Auteur : Bruno Ferrari - Grenoble INP
# Date : 14/10/2009
# Version : 1.0a
#########################################################
package Alfresco;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw
(
new
login
logout
errorCode
errorMessage
dumpPersonInfos
getAllPersons
searchPersons
createPerson
deletePerson
getPersonInfos
setPersonInfos
dumpGroupInfos
createGroup
deleteGroup
getAllRootGroups
getAllGroups
searchGroups
getGroupInfos
getGroupDirectMembers
getGroupDirectPersons
getGroupDirectSubGroups
addPersonToGroup
removePersonFromGroup
addSubGroupToGroup
removeSubGroupFromGroup
);
#our @EXPORT_OK;
our $VERSION = "1.0a";
use warnings;
use strict;
### Variables et fonctions
use HTTP::Request::Common;
use HTTP::Request;
use HTTP::Response;
use HTTP::Headers;
use LWP::UserAgent;
use JSON;
#—————————————————————————
sub new
{
my ($class, $host, $port) = @_;
my $self = { _rp => undef, _verbose => 0 };
bless $self, $class;
$self->{_rp} = $self;
$self->{_host} = $host;
$self->{_port} = $port;
$self->{_errorCode} = 0;
$self->{_errorMsg} = '';
return $self;
}
#—————————————————————————
sub login ()
{
my ($self, $username, $password) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $GetReq = HTTP::Request->new
(
'POST',
"http://$host:$port/alfresco/service/api/login",
$h,
'{"username" : "' . $username . '","password" : "' . $password . '"}'
);
my $res = $ua->request($GetReq);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
$self->{_ticket} = $hashRef->{"data"}->{"ticket"};
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub logout ()
{
my ($self) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'DELETE',
"http://$host:$port/alfresco/service/api/login/ticket/$ticket?alf_ticket=$ticket&format=json",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
return ($hashRef->{"status"}->{"code"} == 200);
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub errorCode ()
{
my ($self) = @_;
return ($self->{_errorCode});
}
#—————————————————————————
sub errorMessage ()
{
my ($self) = @_;
return ($self->{_errorMsg});
}
#—————————————————————————
sub dumpPersonInfos ()
{
my ($self, $personsInfosRef, $level) = @_;
$level = defined ($level) ? $level : 0;
foreach my $k (keys %{$personsInfosRef})
{
my $value = defined ($personsInfosRef->{$k}) ? $personsInfosRef->{$k} : '';
my $i = 0;
while ($i < $level)
{
print "\t";
$i += 1;
}
print "$k : $value\n";
}
}
#—————————————————————————
sub getAllPersons ()
{
my ($self, $personsInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname/children?authorityType=GROUP&alf_ticket=$t...",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub searchPersons ()
{
my ($self, $filter, $personsInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname/children?authorityType=GROUP&alf_ticket=$t...",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"people"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$personsInfosRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub createPerson ()
{
my ($self, $personInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $content = JSON::encode_json ($personInfosRef);
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'POST',
"http://$host:$port/alfresco/service/api/people?alf_ticket=$ticket",
$h,
$content
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub deletePerson ()
{
my ($self, $userName) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $GetReq = HTTP::Request->new
(
'DELETE',
"http://$host:$port/alfresco/service/api/people/$userName?alf_ticket=$ticket",
$h
);
my $res = $ua->request($GetReq);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getPersonInfos ()
{
my ($self, $accountname, $personInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname/children?authorityType=GROUP&alf_ticket=$t...",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
%{$personInfosRef} = %{JSON::decode_json ($res->content)};
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub setPersonInfos ()
{
my ($self, $accountname, $personInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $content = JSON::encode_json ($personInfosRef);
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'PUT',
"http://$host:$port/alfresco/service/api/people/$accountname?alf_ticket=$ticket",
$h,
$content
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub dumpGroupInfos ()
{
my ($self, $groupInfosRef, $level) = @_;
$level = defined ($level) ? $level : 0;
foreach my $k (keys %{$groupInfosRef})
{
my $value = defined ($groupInfosRef->{$k}) ? $groupInfosRef->{$k} : '';
my $i = 0;
while ($i < $level)
{
print "\t";
$i += 1;
}
print "$k : $value\n";
}
}
#—————————————————————————
sub createGroup ()
{
my ($self, $groupInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $shortName = $groupInfosRef->{"shortName"};
my $content = JSON::encode_json ($groupInfosRef);
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'POST',
"http://$host:$port/alfresco/service/api/rootgroups/$shortName?alf_ticket=$ticket",
$h,
$content
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub deleteGroup ()
{
my ($self, $shortName) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'DELETE',
"http://$host:$port/alfresco/service/api/groups/$shortName?alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getAllRootGroups ()
{
my ($self, $groupInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/rootgroups?alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"data"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$groupInfosRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getAllGroups ()
{
my ($self, $groupInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups?shortNameFilter=*&alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"data"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$groupInfosRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub searchGroups ()
{
my ($self, $filter, $groupInfosRef) = @_;
print "getAllGroups :\n";
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups?shortNameFilter=$filter&alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"data"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$groupInfosRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getGroupInfos ()
{
my ($self, $shortname, $groupInfosRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname?alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
foreach my $k (keys %{$hashRef->{"data"}})
{
$groupInfosRef->{$k} = $hashRef->{"data"}->{$k};
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getGroupDirectMembers ()
{
my ($self, $shortname, $groupMembersRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname/children?alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"data"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$groupMembersRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getGroupDirectPersons ()
{
my ($self, $shortname, $groupMembersRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname/children?authorityType=USER&alf_ticket=$ti...",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"data"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$groupMembersRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub getGroupDirectSubGroups ()
{
my ($self, $shortname, $groupMembersRef) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'GET',
"http://$host:$port/alfresco/service/api/groups/$shortname/children?authorityType=GROUP&alf_ticket=$t...",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
my $hashRef = JSON::decode_json ($res->content);
my $arrayRef = $hashRef->{"data"};
foreach my $hRef (@{$arrayRef})
{
my %memberInfos;
foreach my $k (keys %{$hRef})
{
$memberInfos {$k} = $hRef->{$k}
}
push (@{$groupMembersRef}, \%memberInfos);
}
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub addPersonToGroup ()
{
my ($self, $userName, $shortName) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'POST',
"http://$host:$port/alfresco/service/api/groups/$shortName/children/$userName?alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub removePersonFromGroup ()
{
my ($self, $userName, $shortName) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'DELETE',
"http://$host:$port/alfresco/service/api/groups/$shortName/children/$userName?alf_ticket=$ticket",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub addSubGroupToGroup ()
{
my ($self, $subGroupName, $groupName) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'POST',
"http://$host:$port/alfresco/service/api/groups/$groupName/children/GROUP_$subGroupName?alf_ticket=$t...",
$h
);
my $res = $ua->request ($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
#—————————————————————————
sub removeSubGroupFromGroup ()
{
my ($self, $subGroupName, $groupName) = @_;
my $host = $self->{_host};
my $port = $self->{_port};
my $ticket = $self->{_ticket};
my $ua = LWP::UserAgent->new;
my $h = HTTP::Headers->new;
$h->header ('Content-Type' => 'application/json', Accept=>'application/json');
my $req = HTTP::Request->new
(
'DELETE',
"http://$host:$port/alfresco/service/api/groups/$groupName/children/GROUP_$subGroupName?alf_ticket=$t...",
$h
);
my $res = $ua->request($req);
if ($res->is_success)
{
return 1;
}
else
{
$self->{_errorCode} = $res->{_rc};
$self->{_errorMsg} = $res->{_msg};
return 0;
}
}
1;
use warnings;
use strict;
use Alfresco;
my $host = 'localhost';
my $port = 8080;
print "host : $host\n";
print "admin: ";
my $admin = <STDIN>;
chomp ($admin);
print "password: ";
my $password = <STDIN>;
chomp ($password);
my $alfresco = new Alfresco ($host, $port);
if ($alfresco->login ($admin, $password))
{
print "$admin is logged on…\n";
print "Person creation :\n";
print "userName : ";
my $userName = <STDIN>;
chomp ($userName);
print "firstName : ";
my $firstName = <STDIN>;
chomp ($firstName);
print "lastName : ";
my $lastName = <STDIN>;
chomp ($lastName);
print "email : ";
my $email = <STDIN>;
chomp ($email);
my %personInfos;
$personInfos {"userName"} = $userName;
$personInfos {"password"} = $userName;
$personInfos {"firstName"} = $firstName;
$personInfos {"lastName"} = $lastName;
$personInfos {"email"} = $email;
if ($alfresco->createPerson (\%personInfos))
{
print "$userName created !\n";
my %infos;
if ($alfresco->getPersonInfos ($userName, \%infos))
{
$alfresco->dumpPersonInfos (\%infos, 1);
}
else
{
print "getPersonInfos ($userName, …) failed !\n";
}
}
else
{
print "Can't create $userName\n";
}
if ($alfresco->logout ())
{
print "$admin is now logged out\n";
}
else
{
print "unable to logged out $admin…\n";
}
}
else
{
print "$admin can't log in $host:$port\n";
}
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.