Author: tdraier
Date: Fri Nov 16 12:09:04 2007
New Revision: 19179
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19179&repname=
=3Djahia
Log:
introduce simple public user service and jcr login module
Added:
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/locator.ent (wi=
th props)
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/project.xml (wi=
th props)
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/Constants.java
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserService.java
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserServiceFactory.java
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserServiceProxy.java
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/JahiaLoginModule.java
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/JahiaPrincipal.java
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/locator.ent
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/locator.ent&rev=3D19179&repname=3Dj=
ahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/locator.ent (adde=
d)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/locator.ent Fri N=
ov 16 12:09:04 2007
@@ -0,0 +1,6 @@
+<!ENTITY common-dependencies SYSTEM "file:../../common-packagedwebapps/pom=
-fragments/common-dependencies.ent"> =
+<!ENTITY common-topsite SYSTEM "file:../../common-packagedwebapps/pom-frag=
ments/common-topsite.ent"> =
+<!ENTITY common-toprepository SYSTEM "file:../../common-packagedwebapps/po=
m-fragments/common-toprepository.ent"> =
+<!ENTITY common-warsite SYSTEM "file:../../common-packagedwebapps/pom-frag=
ments/common-warsite.ent"> =
+<!ENTITY common-warrepository SYSTEM "file:../../common-packagedwebapps/po=
m-fragments/common-warrepository.ent"> =
+<!ENTITY jetspeed-version "2.1-dev">
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/project.xml
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/project.xml&rev=3D19179&repname=3Dj=
ahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/project.xml (adde=
d)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/project.xml Fri N=
ov 16 12:09:04 2007
@@ -0,0 +1,46 @@
+<?xml version=3D"1.0" encoding=3D"UTF-8"?>
+<!DOCTYPE project [
+ <!ENTITY % locator-entities SYSTEM "file:locator.ent"> %locator-entiti=
es;
+]>
+<project>
+ <extend>${basedir}/../project.xml</extend>
+ <pomVersion>3</pomVersion>
+ <artifactId>public-api</artifactId>
+ <groupId>jahia</groupId>
+ <package>org.jahia</package>
+
+ <url>http://projects.jahia.org/${pom.artifactId}/core</url>
+ <siteDirectory>html/${pom.artifactId}/core</siteDirectory>
+
+ <repository>
+ <connection>scm:cvs:pserver:[EMAIL PROTECTED]:/home/cvs/repos=
itory_anonymous:${pom.artifactId}/public-api</connection>
+ <url>http://cvspub.jahia.org/cgi-bin/cvsweb.cgi/${pom.artifactId}/publ=
ic-api/</url>
+ </repository>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>jsr170</groupId>
+ <artifactId>jcr</artifactId>
+ <version>1.0</version>
+ <url>http://www.day.com/maven/jsr170/jars/jcr-1.0.jar</url>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-discovery</groupId>
+ <artifactId>commons-discovery</artifactId>
+ <version>0.2</version>
+ </dependency>
+ <dependency>
+ <id>commons-id</id>
+ <version>0.1-dev</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <nagEmailAddress>[EMAIL PROTECTED]</nagEmailAddress>
+ <sourceDirectory>src/java</sourceDirectory>
+ <unitTestSourceDirectory>src/test/src/java</unitTestSourceDirectory>
+ </build>
+
+</project>
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/j=
ahia/api/Constants.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahia/api/Constants.ja=
va&rev=3D19179&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/Constants.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/Constants.java Fri Nov 16 12:09:04 2007
@@ -0,0 +1,109 @@
+package org.jahia.api;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 6 juil. 2007
+ * Time: 18:54:16
+ * To change this template use File | Settings | File Templates.
+ */
+public class Constants {
+ public static final String JCR_AUTOCREATED =3D "jcr:autoCreated";
+ public static final String JCR_BASEVERSION =3D "jcr:baseVersion";
+ public static final String JCR_CHILD =3D "jcr:child";
+ public static final String JCR_CHILDNODEDEFINITION =3D "jcr:childNodeD=
efinition";
+ public static final String JCR_CONTENT =3D "jcr:content";
+ public static final String JCR_CREATED =3D "jcr:created";
+ public static final String JCR_DATA =3D "jcr:data";
+ public static final String JCR_DEFAULTPRIMARYTYPE =3D "jcr:defaultPrim=
aryType";
+ public static final String JCR_DEFAULTVALUES =3D "jcr:defaultValues";
+ public static final String JCR_ENCODING =3D "jcr:encoding";
+ public static final String JCR_FROZENMIXINTYPES =3D "jcr:frozenMixinTy=
pes";
+ public static final String JCR_FROZENNODE =3D "jcr:frozenNode";
+ public static final String JCR_FROZENPRIMARYTYPE =3D "jcr:frozenPrimar=
yType";
+ public static final String JCR_FROZENUUID =3D "jcr:frozenUuid";
+ public static final String JCR_HASORDERABLECHILDNODES =3D "jcr:hasOrde=
rableChildNodes";
+ public static final String JCR_ISCHECKEDOUT =3D "jcr:isCheckedOut";
+ public static final String JCR_ISMIXIN =3D "jcr:isMixin";
+ public static final String JCR_LANGUAGE =3D "jcr:language";
+ public static final String JCR_LASTMODIFIED =3D "jcr:lastModified";
+ public static final String JCR_LOCKISDEEP =3D "jcr:lockIsDeep";
+ public static final String JCR_LOCKOWNER =3D "jcr:lockOwner";
+ public static final String JCR_MANDATORY =3D "jcr:mandatory";
+ public static final String JCR_MERGEFAILED =3D "jcr:mergeFailed";
+ public static final String JCR_MIMETYPE =3D "jcr:mimeType";
+ public static final String JCR_MIXINTYPES =3D "jcr:mixinTypes";
+ public static final String JCR_MULTIPLE =3D "jcr:multiple";
+ public static final String JCR_NAME =3D "jcr:name";
+ public static final String JCR_NODETYPENAME =3D "jcr:nodeTypeName";
+ public static final String JCR_ONPARENTVERSION =3D "jcr:onParentVersio=
n";
+ public static final String JCR_PREDECESSORS =3D "jcr:predecessors";
+ public static final String JCR_PRIMARYITEMNAME =3D "jcr:primaryItemNam=
e";
+ public static final String JCR_PRIMARYTYPE =3D "jcr:primaryType";
+ public static final String JCR_PROPERTYDEFINITION =3D "jcr:propertyDef=
inition";
+ public static final String JCR_PROTECTED =3D "jcr:protected";
+ public static final String JCR_REQUIREDPRIMARYTYPES =3D "jcr:requiredP=
rimaryTypes";
+ public static final String JCR_REQUIREDTYPE =3D "jcr:requiredType";
+ public static final String JCR_ROOTVERSION =3D "jcr:rootVersion";
+ public static final String JCR_SAMENAMESIBLINGS =3D "jcr:sameNameSibli=
ngs";
+ public static final String JCR_STATEMENT =3D "jcr:statement";
+ public static final String JCR_SUCCESSORS =3D "jcr:successors";
+ public static final String JCR_SUPERTYPES =3D "jcr:supertypes";
+ public static final String JCR_SYSTEM =3D "jcr:system";
+ public static final String JCR_UUID =3D "jcr:uuid";
+ public static final String JCR_VALUECONSTRAINTS =3D "jcr:valueConstrai=
nts";
+ public static final String JCR_VERSIONHISTORY =3D "jcr:versionHistory";
+ public static final String JCR_VERSIONLABELS =3D "jcr:versionLabels";
+ public static final String JCR_VERSIONSTORAGE =3D "jcr:versionStorage";
+ public static final String JCR_VERSIONABLEUUID =3D "jcr:versionableUui=
d";
+ public static final String JCR_PATH =3D "jcr:path";
+ public static final String JCR_SCORE =3D "jcr:score";
+ public static final String MIX_LOCKABLE =3D "mix:lockable";
+ public static final String MIX_REFERENCEABLE =3D "mix:referenceable";
+ public static final String MIX_VERSIONABLE =3D "mix:versionable";
+ public static final String NT_BASE =3D "nt:base";
+ public static final String NT_CHILDNODEDEFINITION =3D "nt:childNodeDef=
inition";
+ public static final String NT_FILE =3D "nt:file";
+ public static final String NT_FOLDER =3D "nt:folder";
+ public static final String NT_FROZENNODE =3D "nt:frozenNode";
+ public static final String NT_HIERARCHYNODE =3D "nt:hierarchyNode";
+ public static final String NT_LINKEDFILE =3D "nt:linkedFile";
+ public static final String NT_NODETYPE =3D "nt:nodeType";
+ public static final String NT_PROPERTYDEFINITION =3D "nt:propertyDefin=
ition";
+ public static final String NT_QUERY =3D "nt:query";
+ public static final String NT_RESOURCE =3D "nt:resource";
+ public static final String NT_UNSTRUCTURED =3D "nt:unstructured";
+ public static final String NT_VERSION =3D "nt:version";
+ public static final String NT_VERSIONHISTORY =3D "nt:versionHistory";
+ public static final String NT_VERSIONLABELS =3D "nt:versionLabels";
+ public static final String NT_VERSIONEDCHILD =3D "nt:versionedChild";
+
+ public static final String JAHIA_NS =3D "http://www.jahia.org/jahia/1.=
0";
+ public static final String JAHIANT_NS =3D "http://www.jahia.org/jahia/=
nt/1.0";
+ public static final String JAHIAMIX_NS =3D "http://www.jahia.org/jahia=
/mix/1.0";
+
+ public static final String JAHIA_PREF =3D "j";
+ public static final String JAHIANT_PREF =3D "jnt";
+ public static final String JAHIAMIX_PREF =3D "jmix";
+
+ public static final String JAHIAMIX_METADATA =3D "jmix:metadata";
+
+ public static final String JAHIAMIX_EXTENSION =3D "jmix:extension";
+
+ public static final String JAHIANT_FOLDER =3D "jnt:folder";
+ public static final String JAHIANT_FILE =3D "jnt:file";
+ public static final String JAHIANT_SYSTEMFOLDER =3D "jnt:systemfolder";
+ public static final String JAHIANT_VIRTUALSITE =3D "jnt:virtualsite";
+ public static final String JAHIANT_SYSTEM =3D "jnt:system";
+
+ public static final String SYSTEM =3D "j:system";
+ public static final String FILTERS =3D "j:filters";
+ public static final String AUTOMATIONS =3D "j:automations";
+
+ public static final String CREATED =3D "j:created";
+ public static final String AUTHOR =3D "j:author";
+ public static final String LAST_MODIFIED =3D "j:lastModified";
+ public static final String LAST_AUTHOR =3D "j:lastAuthor";
+ public static final String THUMBNAIL =3D "j:thumbnail";
+
+}
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/j=
ahia/api/user/JahiaUserService.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahia/api/user/JahiaUs=
erService.java&rev=3D19179&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserService.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserService.java Fri Nov 16 12:09:04 2007
@@ -0,0 +1,26 @@
+package org.jahia.api.user;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 12 nov. 2007
+ * Time: 12:16:35
+ * To change this template use File | Settings | File Templates.
+ */
+public interface JahiaUserService {
+
+ public boolean checkPassword(String username, String password);
+
+ public boolean isServerAdmin(String username);
+
+ public boolean isAdmin(String username, String site);
+
+ public boolean isUserMemberOf(String username, String groupname, Strin=
g site);
+
+ public List getUserMembership(String username);
+
+ public List getGroupMembers(String groupname);
+
+}
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/j=
ahia/api/user/JahiaUserServiceFactory.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahia/api/user/JahiaUs=
erServiceFactory.java&rev=3D19179&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserServiceFactory.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserServiceFactory.java Fri Nov 16 12:09:04 2007
@@ -0,0 +1,24 @@
+package org.jahia.api.user;
+
+import javax.naming.spi.ObjectFactory;
+import javax.naming.Name;
+import javax.naming.Context;
+import java.util.Hashtable;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 14 nov. 2007
+ * Time: 18:42:58
+ * To change this template use File | Settings | File Templates.
+ */
+public class JahiaUserServiceFactory implements ObjectFactory {
+ public Object getObjectInstance(Object obj, Name name, Context nameCtx,
+ Hashtable environment)
+ throws Exception {
+
+ return new JahiaUserServiceProxy();
+ }
+
+ =
+}
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/j=
ahia/api/user/JahiaUserServiceProxy.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahia/api/user/JahiaUs=
erServiceProxy.java&rev=3D19179&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserServiceProxy.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/api/user/JahiaUserServiceProxy.java Fri Nov 16 12:09:04 2007
@@ -0,0 +1,42 @@
+package org.jahia.api.user;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 14 nov. 2007
+ * Time: 18:35:35
+ * To change this template use File | Settings | File Templates.
+ */
+public class JahiaUserServiceProxy implements JahiaUserService {
+ private JahiaUserService service;
+
+ public void setService(JahiaUserService service) {
+ this.service =3D service;
+ }
+
+ public boolean checkPassword(String username, String password) {
+ return service.checkPassword(username, password);
+ }
+
+ public boolean isServerAdmin(String username) {
+ return service.isServerAdmin(username);
+ }
+
+ public boolean isAdmin(String username, String site) {
+ return service.isAdmin(username, site);
+ }
+
+ public boolean isUserMemberOf(String username, String groupname, Strin=
g site) {
+ return service.isUserMemberOf(username, groupname, site);
+ }
+
+ public List getUserMembership(String username) {
+ return service.getUserMembership(username);
+ }
+
+ public List getGroupMembers(String groupname) {
+ return service.getGroupMembers(groupname);
+ }
+}
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/j=
ahia/jaas/JahiaLoginModule.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahia/jaas/JahiaLoginM=
odule.java&rev=3D19179&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/JahiaLoginModule.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/JahiaLoginModule.java Fri Nov 16 12:09:04 2007
@@ -0,0 +1,133 @@
+package org.jahia.jaas;
+
+import org.apache.commons.id.IdentifierGenerator;
+import org.apache.commons.id.IdentifierGeneratorFactory;
+import org.jahia.api.user.JahiaUserService;
+
+import javax.jcr.Credentials;
+import javax.jcr.SimpleCredentials;
+import javax.security.auth.Subject;
+import javax.security.auth.callback.*;
+import javax.security.auth.login.FailedLoginException;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+import javax.naming.NamingException;
+import javax.naming.InitialContext;
+import javax.naming.Context;
+import java.io.IOException;
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Hashtable;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 27 f=C3=83=C2=A9vr. 2006
+ * Time: 12:00:21
+ * To change this template use File | Settings | File Templates.
+ */
+public class JahiaLoginModule implements LoginModule {
+ public static final String SYSTEM =3D "@system";
+ public static final String GUEST =3D "@guest";
+
+ private static IdentifierGenerator idGen =3D IdentifierGeneratorFactor=
y.newInstance().uuidVersionFourGenerator();
+ private static HashMap systemPass =3D new HashMap();
+
+ private Subject subject;
+ private Principal user =3D null;
+ private CallbackHandler callbackHandler;
+ private Map sharedState;
+ private Map options;
+
+ public void initialize(Subject subject, CallbackHandler callbackHandle=
r, Map sharedState, Map options) {
+ this.subject =3D subject;
+ this.callbackHandler =3D callbackHandler;
+ this.sharedState =3D sharedState;
+ this.options =3D options;
+ }
+
+ public boolean login() throws LoginException {
+ try {
+ Callback[] callbacks =3D new Callback[] { new NameCallback("na=
me?"), new PasswordCallback("pass?",false) } ;
+ callbackHandler.handle(callbacks);
+
+ String name =3D ((NameCallback)callbacks[0]).getName();
+ char[] pass =3D ((PasswordCallback)callbacks[1]).getPassword();
+ if (name !=3D null) {
+ if (SYSTEM.equals(name)) {
+ String key =3D new String(pass);
+ if (name.equals(systemPass.get(key))) {
+ systemPass.remove(key);
+ user =3D new JahiaPrincipal(SYSTEM, true, false);
+ }
+ } else if (GUEST.equals(name)) {
+ user =3D new JahiaPrincipal(GUEST, false, true);
+ } else {
+ String key =3D new String(pass);
+ if (name.equals(systemPass.get(key)) || getJahiaUserSe=
rvice().checkPassword(name,key)) {
+ systemPass.remove(key);
+ user =3D new JahiaPrincipal(name);
+ }
+ }
+ if (user =3D=3D null) {
+ throw new FailedLoginException();
+ }
+ }
+ } catch (Exception e) {
+ }
+ return user !=3D null;
+ }
+
+ public boolean commit() throws LoginException {
+ if (user =3D=3D null) {
+ return false;
+ } else {
+ // add a principals (authenticated identities) to the Subject
+ subject.getPrincipals().add(user);
+ return true;
+ }
+ }
+
+ public boolean abort() throws LoginException {
+ if (user =3D=3D null) {
+ return false;
+ } else {
+ logout();
+ }
+ return true;
+ }
+
+ public boolean logout() throws LoginException {
+ subject.getPrincipals().remove(user);
+ user =3D null;
+ return true;
+ }
+
+ private static String getSystemPass(String user) {
+ String p =3D idGen.nextIdentifier().toString();
+ systemPass.put(p, user);
+ return p;
+ }
+
+ public static Credentials getSystemCredentials() {
+ return new SimpleCredentials(JahiaLoginModule.SYSTEM, getSystemPas=
s(JahiaLoginModule.SYSTEM).toCharArray());
+ }
+
+ public static Credentials getGuestCredentials() {
+ return new SimpleCredentials(JahiaLoginModule.GUEST, new char[0]);
+ }
+
+ public static Credentials getCredentials(String username) {
+ return new SimpleCredentials(username, getSystemPass(username).toC=
harArray());
+ }
+
+ public JahiaUserService getJahiaUserService() throws NamingException {
+ String serviceName =3D "jahia/users";
+ Hashtable env =3D new Hashtable();
+ InitialContext initctx =3D new InitialContext(env);
+ Context ctx =3D (Context) initctx.lookup("java:comp/env");
+ return (JahiaUserService) ctx.lookup(serviceName);
+ }
+
+}
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/j=
ahia/jaas/JahiaPrincipal.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahia/jaas/JahiaPrinci=
pal.java&rev=3D19179&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/JahiaPrincipal.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/public-api/src/java/org/jahi=
a/jaas/JahiaPrincipal.java Fri Nov 16 12:09:04 2007
@@ -0,0 +1,39 @@
+package org.jahia.jaas;
+
+import java.security.Principal;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 9 nov. 2007
+ * Time: 17:16:55
+ * To change this template use File | Settings | File Templates.
+ */
+public class JahiaPrincipal implements Principal {
+ private boolean isSystem =3D false;
+ private boolean isGuest =3D false;
+
+ private String name;
+
+ public JahiaPrincipal(String name, boolean system, boolean guest) {
+ this.name =3D name;
+ isSystem =3D system;
+ isGuest =3D guest;
+ }
+
+ public JahiaPrincipal(String name) {
+ this.name =3D name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public boolean isSystem() {
+ return isSystem;
+ }
+
+ public boolean isGuest() {
+ return isGuest;
+ }
+}
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list