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

Reply via email to