Hi Henning, Just a point of clarification on the changes to extend TurbineUser in T2.3-dev below.
Below you have your extension classes in the package "de.intermeta.myapp.security.om" and in a later email to the list you said I could not reference via foreign key the extended user table unless it was all in one *-schema.xml file. Does this mean you have all your application classes in the *.security.om package (!?) as well as the security specific ones?. The other problem I have is that if the extended Myapp user table definition is in your project-schema.xml file and is used to generate the MyappUser and MyappUserPeer java source then how do you get it to implement the org.apache.turbine.om.security.peer.UserPeer interface as shown this excerpt from the tr.props section here http://jakarta.apache.org/turbine/turbine-2.3/services/security-service.html : This is the relevant bit # This setting is DBSecurityService specific - this class is consulted for the names # of the columns in the users' tables for the purpose of creating join queries. # If you use your own User implementation in conjunction with DBSecurityService, # it's peer class must implement org.apache.turbine.om.security.peer.UserPeer interface, # and you need to specify the name of the peer class here. # # Default: org.apache.turbine.om.security.peer.TurbineUserPeer # services.SecurityService.userPeer.class=org.apache.turbine.om.security.peer. TurbineUserPeer Thanks. David -----Original Message----- From: Henning P. Schmiedehausen [mailto:[EMAIL PROTECTED] Sent: 02 July 2003 14:16 To: [EMAIL PROTECTED] Subject: Re: Extending user in T2.3 Zamek <[EMAIL PROTECTED]> writes: >I would like to get a working TR.props file or a part of TR.prop >for compensation, I will correct, and comment the documentation. Ok, the following is cut life out of the application running in the window behind this one... --- cut --- services.SecurityService.classname=org.apache.turbine.services.security.torq ue.TorqueSecurityService [...] # ------------------------------------------------------------------- # # S E C U R I T Y S E R V I C E # # ------------------------------------------------------------------- # Default: org.apache.turbine.services.security.db.DBUserManager services.SecurityService.user.manager = org.apache.turbine.services.security.torque.TorqueUserManager # This is the class that implements the ACL interface. services.SecurityService.acl.class = org.apache.turbine.util.security.TurbineAccessControlList # # Configure Object Classes in the Security Service # # Custom User services.SecurityService.user.class = de.intermeta.myapp.security.MyAppUser services.SecurityService.group.class = org.apache.turbine.services.security.torque.TorqueGroup services.SecurityService.permission.class = org.apache.turbine.services.security.torque.TorquePermission services.SecurityService.role.class = org.apache.turbine.services.security.torque.TorqueRole # # Configure Peers for the Torque Security Service # services.SecurityService.torque.userPeer.class = de.intermeta.myapp.security.om.MyappUserPeer services.SecurityService.torque.groupPeer.class = de.intermeta.myapp.security.om.MyappGroupPeer services.SecurityService.torque.permissionPeer.class = de.intermeta.myapp.security.om.MyappPermissionPeer services.SecurityService.torque.rolePeer.class = de.intermeta.myapp.security.om.MyappRolePeer [...] --- cut --- --- cut --- myapp-schema.xml --- <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!DOCTYPE database SYSTEM "http://jakarta.apache.org/turbine/dtd/database_3_1.dtd"> <database name="myapp" defaultIdMethod="idbroker" defaultJavaType="primitive" defaultJavaNamingMethod="underscore" package="de.intermeta.myapp.security.om"> <table name="MYAPP_USER" idMethod="idbroker"> <column name="USER_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="LOGIN_NAME" required="true" size="64" type="VARCHAR" javaName="UserName"/> <column name="PASSWORD_VALUE" required="true" size="16" type="VARCHAR" javaName="Password"/> <column name="FIRST_NAME" required="true" size="64" type="VARCHAR"/> <column name="LAST_NAME" required="true" size="64" type="VARCHAR"/> <column name="EMAIL" size="64" type="VARCHAR"/> <column name="CONFIRM_VALUE" size="16" type="VARCHAR" javaName="Confirmed"/> <column name="MODIFIED" type="TIMESTAMP" size="0"/> <column name="CREATED" type="TIMESTAMP" size="0" javaName="CreateDate"/> <column name="LAST_LOGIN" type="TIMESTAMP" size="0"/> <column name="OBJECTDATA" type="VARBINARY"/> <!-- Myapp Erweiterungen --> <!-- Aktuell ausgewaehlte Sprachversion --> <column name="MYAPP_LANGUAGE_ID" type="INTEGER" javaName="LanguageId"/> <!-- Aktuell ausgewaehlte Gruppe --> <column name="MYAPP_GRUPPEN_ID" type="INTEGER" javaName="GruppenId"/> <unique> <unique-column name="LOGIN_NAME"/> </unique> </table> <table name="MYAPP_PERMISSION" idMethod="idbroker"> <column name="PERMISSION_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="PERMISSION_NAME" required="true" size="64" type="VARCHAR" javaName="Name"/> <unique> <unique-column name="PERMISSION_NAME"/> </unique> </table> <table name="MYAPP_ROLE" idMethod="idbroker"> <column name="ROLE_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="ROLE_NAME" required="true" size="64" type="VARCHAR" javaName="Name"/> <unique> <unique-column name="ROLE_NAME"/> </unique> </table> <table name="MYAPP_GROUP" idMethod="idbroker"> <column name="GROUP_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="GROUP_NAME" required="true" type="VARCHAR" size="64" javaName="Name"/> <unique> <unique-column name="GROUP_NAME"/> </unique> </table> <table name="TURBINE_ROLE_PERMISSION"> <column name="ROLE_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="PERMISSION_ID" required="true" primaryKey="true" type="INTEGER"/> <foreign-key foreignTable="MYAPP_ROLE"> <reference local="ROLE_ID" foreign="ROLE_ID"/> </foreign-key> <foreign-key foreignTable="MYAPP_PERMISSION"> <reference local="PERMISSION_ID" foreign="PERMISSION_ID"/> </foreign-key> </table> <table name="TURBINE_USER_GROUP_ROLE"> <column name="USER_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="GROUP_ID" required="true" primaryKey="true" type="INTEGER"/> <column name="ROLE_ID" required="true" primaryKey="true" type="INTEGER"/> <foreign-key foreignTable="MYAPP_USER"> <reference local="USER_ID" foreign="USER_ID"/> </foreign-key> <foreign-key foreignTable="MYAPP_GROUP"> <reference local="GROUP_ID" foreign="GROUP_ID"/> </foreign-key> <foreign-key foreignTable="MYAPP_ROLE"> <reference local="ROLE_ID" foreign="ROLE_ID"/> </foreign-key> </table> </database> --- cut --- myapp-schema.xml --- --- cut --- MyAppUser.java --- package de.intermeta.myapp.security; import org.apache.turbine.services.security.torque.TorqueUser; import de.intermeta.myapp.security.om.MyappUser; public class MyAppUser extends TorqueUser { /** * Constructor. */ public MyAppUser() { super(); } /** * This Constructor is used when the UserPeerManager * has retrieved a list of Database Objects from the peer and * must 'wrap' them into TorqueRole Objects. You should not use it directly! * * @param obj An Object from the peer */ public MyAppUser(Persistent obj) { super(obj); } public int getLanguageId() { return ((MyappUser) getPersistentObj()).getLanguageId(); } public void setLanguageId(int languageId) { ((MyappUser) getPersistentObj()).setLanguageId(languageId); } public int getGruppenId() { return ((MyappUser) getPersistentObj()).getGruppenId(); } public void setGruppenId(int gruppenId) { ((MyappUser) getPersistentObj()).setGruppenId(gruppenId); } } --- cut --- MyAppUser.java --- - Run the schema, you should get de.intermeta.myapp.security.om.<lots of classes> - add de.intermeta.maxpatch.myapp.security.MyAppUser.java - configure Turbine as described above - create the tables with maven torque:sql, put them into a database (I use PostgreSQL). Insert some data into the tables: --- cut --- INSERT INTO MYAPP_USER (USER_ID,LOGIN_NAME,PASSWORD_VALUE,FIRST_NAME,LAST_NAME) VALUES (1,'turbine','turbine','Mr.','Turbine'); INSERT INTO MYAPP_PERMISSION (PERMISSION_ID,PERMISSION_NAME) VALUES (1,'Myapp'); INSERT INTO MYAPP_ROLE (ROLE_ID,ROLE_NAME) VALUES (1,'MyappAdmin'); INSERT INTO MYAPP_GROUP (GROUP_ID,GROUP_NAME) VALUES (1,'global'); INSERT INTO MYAPP_GROUP (GROUP_ID,GROUP_NAME) VALUES (2,'Myapp'); INSERT INTO TURBINE_ROLE_PERMISSION (ROLE_ID,PERMISSION_ID) VALUES (1,1); INSERT INTO TURBINE_USER_GROUP_ROLE (USER_ID,GROUP_ID,ROLE_ID) VALUES (1,2,1); --- cut --- Now you should be able to log on with user "turbine" , pw "turbine". Regards Henning -- Dipl.-Inf. (Univ.) Henning P. Schmiedehausen INTERMETA GmbH [EMAIL PROTECTED] +49 9131 50 654 0 http://www.intermeta.de/ Java, perl, Solaris, Linux, xSP Consulting, Web Services freelance consultant -- Jakarta Turbine Development -- hero for hire --- Quote of the week: "It is pointless to tell people anything when you know that they won't process the message." --- Jonathan Revusky --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
