Author: tdraier
Date: Thu Nov 15 18:50:16 2007
New Revision: 19163
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19163&repname=
=3Djahia
Log:
introduce simple public user service and jcr login module
Added:
tags/JAHIA_5_0_3/public-api/
tags/JAHIA_5_0_3/public-api/locator.ent (with props)
tags/JAHIA_5_0_3/public-api/project.xml (with props)
tags/JAHIA_5_0_3/public-api/src/
tags/JAHIA_5_0_3/public-api/src/java/
tags/JAHIA_5_0_3/public-api/src/java/org/
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
e.java
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
eFactory.java
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
eProxy.java
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaLoginModule.ja=
va
tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaPrincipal.java
Added: tags/JAHIA_5_0_3/public-api/locator.ent
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/locator.ent&rev=3D19163&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
--- tags/JAHIA_5_0_3/public-api/locator.ent (added)
+++ tags/JAHIA_5_0_3/public-api/locator.ent Thu Nov 15 18:50:16 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: tags/JAHIA_5_0_3/public-api/project.xml
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/project.xml&rev=3D19163&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
--- tags/JAHIA_5_0_3/public-api/project.xml (added)
+++ tags/JAHIA_5_0_3/public-api/project.xml Thu Nov 15 18:50:16 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}/loginmodule</connection>
+ <url>http://cvspub.jahia.org/cgi-bin/cvsweb.cgi/${pom.artifactId}/core=
/</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: tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserSer=
vice.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/src/java/org/jahia/api/user/JahiaUserService.java&rev=3D19163=
&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
--- tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
e.java (added)
+++ tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
e.java Thu Nov 15 18:50:16 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: tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserSer=
viceFactory.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/src/java/org/jahia/api/user/JahiaUserServiceFactory.java&rev=
=3D19163&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
--- tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
eFactory.java (added)
+++ tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
eFactory.java Thu Nov 15 18:50:16 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: tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserSer=
viceProxy.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/src/java/org/jahia/api/user/JahiaUserServiceProxy.java&rev=3D=
19163&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
--- tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
eProxy.java (added)
+++ tags/JAHIA_5_0_3/public-api/src/java/org/jahia/api/user/JahiaUserServic=
eProxy.java Thu Nov 15 18:50:16 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: tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaLoginModule=
.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/src/java/org/jahia/jaas/JahiaLoginModule.java&rev=3D19163&rep=
name=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
--- tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaLoginModule.ja=
va (added)
+++ tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaLoginModule.ja=
va Thu Nov 15 18:50:16 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: tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaPrincipal.j=
ava
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/tags/JAHIA_5_0=
_3/public-api/src/java/org/jahia/jaas/JahiaPrincipal.java&rev=3D19163&repna=
me=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
--- tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaPrincipal.java=
(added)
+++ tags/JAHIA_5_0_3/public-api/src/java/org/jahia/jaas/JahiaPrincipal.java=
Thu Nov 15 18:50:16 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