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.torque.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]

Reply via email to