Return-Path: Delivered-To: apmail-roller-commits-archive@www.apache.org Received: (qmail 91777 invoked from network); 23 May 2007 21:17:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 May 2007 21:17:37 -0000 Received: (qmail 79443 invoked by uid 500); 23 May 2007 21:17:33 -0000 Delivered-To: apmail-roller-commits-archive@roller.apache.org Received: (qmail 79407 invoked by uid 500); 23 May 2007 21:17:33 -0000 Mailing-List: contact commits-help@roller.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@roller.apache.org Delivered-To: mailing list commits@roller.apache.org Received: (qmail 79342 invoked by uid 99); 23 May 2007 21:17:32 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 May 2007 14:17:32 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 May 2007 14:17:26 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 79CF01A981A; Wed, 23 May 2007 14:17:06 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r541089 - in /roller/trunk: src/org/apache/roller/ui/core/security/RollerUserDetailsService.java web/WEB-INF/security.xml Date: Wed, 23 May 2007 21:17:06 -0000 To: commits@roller.apache.org From: snoopdave@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070523211706.79CF01A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: snoopdave Date: Wed May 23 14:17:05 2007 New Revision: 541089 URL: http://svn.apache.org/viewvc?view=rev&rev=541089 Log: Roller's own Acegi user details service, enables Acegi authentication to work regardless of how Roller's database provider is configured. Added: roller/trunk/src/org/apache/roller/ui/core/security/RollerUserDetailsService.java Modified: roller/trunk/web/WEB-INF/security.xml Added: roller/trunk/src/org/apache/roller/ui/core/security/RollerUserDetailsService.java URL: http://svn.apache.org/viewvc/roller/trunk/src/org/apache/roller/ui/core/security/RollerUserDetailsService.java?view=auto&rev=541089 ============================================================================== --- roller/trunk/src/org/apache/roller/ui/core/security/RollerUserDetailsService.java (added) +++ roller/trunk/src/org/apache/roller/ui/core/security/RollerUserDetailsService.java Wed May 23 14:17:05 2007 @@ -0,0 +1,52 @@ +package org.apache.roller.ui.core.security; + +import java.util.Iterator; +import org.acegisecurity.GrantedAuthority; +import org.acegisecurity.GrantedAuthorityImpl; +import org.acegisecurity.userdetails.User; +import org.acegisecurity.userdetails.UserDetails; +import org.acegisecurity.userdetails.UserDetailsService; +import org.acegisecurity.userdetails.UsernameNotFoundException; +import org.apache.roller.RollerException; +import org.apache.roller.business.Roller; +import org.apache.roller.business.RollerFactory; +import org.apache.roller.business.UserManager; +import org.apache.roller.pojos.RoleData; +import org.apache.roller.pojos.UserData; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.DataRetrievalFailureException; + +/** + * Acegi user details service implemented using Roller API. + */ +public class RollerUserDetailsService implements UserDetailsService { + + public UserDetails loadUserByUsername(String userName) + throws UsernameNotFoundException, DataAccessException { + + UserData userData = null; + try { + Roller roller = RollerFactory.getRoller(); + UserManager umgr = roller.getUserManager(); + userData = umgr.getUserByUserName(userName, Boolean.TRUE); + } catch (RollerException ex) { + throw new DataRetrievalFailureException("ERROR in user lookup", ex); + } + + if (userData == null) { + throw new UsernameNotFoundException("ERROR no user: " + userName); + } + + GrantedAuthority[] authorities = + new GrantedAuthorityImpl[userData.getRoles().size()]; + int i = 0; + for (Iterator it = userData.getRoles().iterator(); it.hasNext();) { + RoleData role = (RoleData)it.next(); + authorities[i++] = new GrantedAuthorityImpl(role.getRole()); + } + + return new User( + userData.getUserName(), userData.getPassword(), true, authorities); + } + +} Modified: roller/trunk/web/WEB-INF/security.xml URL: http://svn.apache.org/viewvc/roller/trunk/web/WEB-INF/security.xml?view=diff&rev=541089&r1=541088&r2=541089 ============================================================================== --- roller/trunk/web/WEB-INF/security.xml (original) +++ roller/trunk/web/WEB-INF/security.xml Wed May 23 14:17:05 2007 @@ -132,20 +132,8 @@ - - - - - - - - - SELECT username,passphrase,isenabled FROM rolleruser WHERE username = ? - - - SELECT username,rolename FROM userrole WHERE username = ? - - + +