Date: Fri, 29 Mar 2024 09:51:10 +0000 (UTC) Message-ID: <1077287160.7801.1711705870448@ip-10-10-7-29.ec2.internal> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_7800_856875258.1711705870447" ------=_Part_7800_856875258.1711705870447 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
This example is in response to this p= ost to the grouper-users email list
Add test users to the registry:
gsh 0% = grouperSession =3D GrouperSession.startRootSession(); gsh 1% RegistryReset._addSubjects(0, 10);
Add an attribute:
Grouper= starting up: version: 1.6.3, build date: null, env: <no label configure= d> grouper.properties read from: C:\mchyzer\grouper\v1_6\grouper\build\grouper= .properties Grouper current directory is: C:\mchyzer\grouper\v1_6\grouper log4j.properties read from: C:\mchyzer\grouper\v1_6\grouper\bui= ld\log4j.properties Grouper is logging to file: C:\mchyzer\grouper\v1_6\grouper\log= s\grouper_error.log, at min level WARN for package: edu.internet2.middlewar= e.grouper, based on log4j.properties grouper.hibernate.properties: C:\mchyzer\grouper\v1_6\grouper\build\grouper= .hibernate.properties grouper.hibernate.properties: grouper_v1_6@jdbc:mysql://localhost:3306/grou= per_v1_6 sources.xml read from: C:\mchyzer= \grouper\v1_6\grouper\build\sources.xml sources.xml groupersource id: g:gsa sources.xml jdbc source id: jdbc: GrouperJdbcConnectionProvider Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoader Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderType Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderDbName Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderScheduleType Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderQuartzCron Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderIntervalSeconds Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderPriority Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderAttrsLike Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderAttrQuery Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderAttrSetQuery Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderActionQuery Grouper note: auto-created attributeDefName: etc:attribute:attrLoader:attri= buteLoaderActionSetQuery Type help() for instructions gsh 0% grouperSession =3D GrouperSession.startRootSession(); edu.internet2.middleware.grouper.GrouperSession: 68de5538cb694321a89d09acf4= 1ca4a8,'GrouperSystem','application' gsh 4% RegistryReset._addSubjects(0, 10); gsh 5% RegistrySubject registrySubject =3D new RegistrySubject(); gsh 6% registrySubject.setId("uportal_user"); gsh 7% registrySubject.setName("uportal_user"); gsh 8% registrySubject.setTypeString("person"); gsh 17% registrySubject.getAttributes().put("monAttribut", GrouperUtil.toSe= t(new String[]{"Valeur A"})); Valeur A gsh 19% GrouperDAOFactory.getFactory().getRegistrySubject().create(registry= Subject); gsh 20% registrySubject =3D GrouperDAOFactory.getFactory().getRegistrySubje= ct().find("test.subject.0", "person", true); hibernatesubject: id=3D'test.subject.0' type=3D'person' name=3D'my name is = test.subject.0' gsh 21% registrySubjectAttribute =3D new RegistrySubjectAttribute(); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@d23ad gsh 22% registrySubjectAttribute.setName("monAttribut"); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@4ad820b6 gsh 23% registrySubjectAttribute.setValue("Valeur B"); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@f9cb2fb9 gsh 24% registrySubjectAttribute.setSearchValue("valeur b"); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@f9cb2fb9 gsh 25% registrySubjectAttribute.setSubjectId(registrySubject.getId()); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@11d79d7b gsh 26% HibernateSession.byObjectStatic().save(registrySubjectAttribute); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@11d79d7b gsh 27% registrySubject =3D GrouperDAOFactory.getFactory().getRegistrySubje= ct().find("test.subject.2", "person", true); hibernatesubject: id=3D'test.subject.2' type=3D'person' name=3D'my name is = test.subject.2' gsh 28% registrySubjectAttribute =3D new RegistrySubjectAttribute(); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@d23ad gsh 29% registrySubjectAttribute.setName("monAttribut"); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@4ad820b6 gsh 30% registrySubjectAttribute.setValue("Valeur C"); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@f9cb2fba gsh 31% registrySubjectAttribute.setSearchValue("valeur c"); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@f9cb2fba gsh 32% registrySubjectAttribute.setSubjectId(registrySubject.getId()); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@11d7a82e gsh 33% HibernateSession.byObjectStatic().save(registrySubjectAttribute); edu.internet2.middleware.grouper.RegistrySubjectAttribute: edu.internet2.mi= ddleware.grouper.RegistrySubjectAttribute@11d7a82e gsh 34% GrouperDAOFactory.getFactory().getRegistrySubject().create(registry= Subject);
Create a view for the loader group:
CREATE = OR REPLACE VIEW loader_test_listes AS SELECT CONCAT('esup:groupes_auto:test_listes:',TRIM(VALUE)) AS group_name, CONCAT('Groupe auto Attribut ',VALUE) AS group_display_name, CONCAT('monAttribut=3D', VALUE) AS group_description, CONCAT('esup:groupes_auto:test_listes:',TRIM(VALUE)) AS readers, TRIM(VALUE) AS attribute_value FROM subjectattribute WHERE NAME=3D'monAttribut'
Create the loader type on startup in grouper-loader.properties:
# auto-= add grouper loader types and attributes when grouper starts up if they are = not there loader.autoadd.typesAttributes =3D true
Create a view of members for the loader group:
CREATE = OR REPLACE VIEW loader_test_listes_members AS SELECT group_name, sa.subjectId AS subject_id FROM loader_test_listes ltl, subjectattribute sa WHERE sa.name =3D 'monAttribut' AND sa.value =3D ltl.attribute_value
Create the loader group:
gsh 35%= group=3Dnew GroupSave(grouperSession).assignName("aStem:loaderGroup").assi= gnCreateParentStemsIfNotExist(true).save(); group: name=3D'aStem:loaderGroup' displayName=3D'aStem:loaderGroup' uuid=3D= '280fc3d01c6847aba35ea67bdea92be8'gsh 38% groupAddType("aStem:loaderGroup",= "grouperLoader") true gsh 39% setGroupAttr("aStem:loaderGroup", "grouperLoaderDbName", "grouper") true gsh 40% setGroupAttr("aStem:loaderGroup", "grouperLoaderType", "SQL_GROUP_L= IST") true gsh 41% setGroupAttr("aStem:loaderGroup", "grouperLoaderScheduleType", "CRO= N") true gsh 42% setGroupAttr("aStem:loaderGroup", "grouperLoaderQuartzCron", "0 0 8= * * ? ") true gsh 43% setGroupAttr("aStem:loaderGroup", "grouperLoaderGroupQuery", "SELEC= T group_name, group_display_name, group_description, readers FROM loader_te= st_listes") true gsh 44% setGroupAttr("aStem:loaderGroup", "grouperLoaderQuery", "SELECT gro= up_name, subject_id, 'jdbc' as subject_source_id FROM loader_test_listes_me= mbers") true
Run the loader job:
gsh 46%= group =3D GroupFinder.findByName(grouperSession, "aStem:loaderGroup", true= ); group: name=3D'aStem:loaderGroup' displayName=3D'aStem:loaderGroup' uuid=3D= '280fc3d01c6847aba35ea67bdea92be8' gsh 47% loaderRunOneJob(group); loader ran successfully, inserted 3 memberships, deleted 0 memberships, tot= al membership count: 3
Check the memberships:
gsh 48%= getMembers("esup:groupes_auto:test_listes:Valeur B"); member: id=3D'test.subject.0' type=3D'person' source=3D'jdbc' uuid=3D'e9c7d= 890774448e0a40d722e7c3d3209' gsh 49% getMembers("esup:groupes_auto:test_listes:Valeur A"); member: id=3D'uportal_user' type=3D'person' source=3D'jdbc' uuid=3D'd596481= e981b4404a35174633ef1d7f8' gsh 50% getMembers("esup:groupes_auto:test_listes:Valeur C"); member: id=3D'test.subject.2' type=3D'person' source=3D'jdbc' uuid=3D'c8c8f= 3983bf642fbae5d4ae2e37ffe55'
Check the privileges
gsh 3% = group =3D GroupFinder.findByName(grouperSession, "esup:groupes_auto:test_li= stes:Valeur B", true); group: name=3D'esup:groupes_auto:test_listes:Valeur B' displayName=3D'esup:= groupes_auto:test_listes:Groupe auto Attribut Valeur B' uuid=3D'5242e40001a= 5441cab835714616fb1d4' gsh 4% group.getReaders(); subject: id=3D'5242e40001a5441cab835714616fb1d4' type=3D'group' source=3D'g= :gsa' name=3D'esup:groupes_auto:test_listes:Valeur B' subject: id=3D'GrouperAll' type=3D'application' source=3D'g:isa' name=3D'Ev= eryEntity' subject: id=3D'test.subject.0' type=3D'person' source=3D'jdbc' name=3D'my n= ame is test.subject.0' gsh 5% group =3D GroupFinder.findByName(grouperSession, "esup:groupes_auto:= test_listes:Valeur A", true); group: name=3D'esup:groupes_auto:test_listes:Valeur A' displayName=3D'esup:= groupes_auto:test_listes:Groupe auto Attribut Valeur A' uuid=3D'da0ffbe3c5a= e429d8f1ba4068f4dd935' gsh 6% group.getReaders(); subject: id=3D'uportal_user' type=3D'person' source=3D'jdbc' name=3D'uporta= l_user' subject: id=3D'GrouperAll' type=3D'application' source=3D'g:isa' name=3D'Ev= eryEntity' subject: id=3D'da0ffbe3c5ae429d8f1ba4068f4dd935' type=3D'group' source=3D'g= :gsa' name=3D'esup:groupes_auto:test_listes:Valeur A' gsh 7% group =3D GroupFinder.findByName(grouperSession, "esup:groupes_auto:= test_listes:Valeur C", true); group: name=3D'esup:groupes_auto:test_listes:Valeur C' displayName=3D'esup:= groupes_auto:test_listes:Groupe auto Attribut Valeur C' uuid=3D'da6f70a45e6= 64cc3a956cdb17e53c19f' gsh 8% group.getReaders(); subject: id=3D'test.subject.2' type=3D'person' source=3D'jdbc' name=3D'my n= ame is test.subject.2' subject: id=3D'GrouperAll' type=3D'application' source=3D'g:isa' name=3D'Ev= eryEntity' subject: id=3D'da6f70a45e664cc3a956cdb17e53c19f' type=3D'group' source=3D'g= :gsa' name=3D'esup:groupes_auto:test_listes:Valeur C'