Hello,

personally i've redefined the LoginAction. Hereafter the code.
I also changed the settings in the Turbine properties:

action.login=LoginAction

hope this helps


package com.wuerth.phoenix.bugtrack.modules.actions;

import org.apache.velocity.context.Context;

import org.apache.turbine.om.security.User;
import org.apache.turbine.modules.actions.VelocityAction;
import org.apache.turbine.util.RunData;
import org.apache.turbine.Turbine;
import org.apache.turbine.util.security.AccessControlList;
import org.apache.turbine.util.security.TurbineSecurityException;
import org.apache.turbine.services.resources.TurbineResources;
import org.apache.turbine.services.security.TurbineSecurity;
import com.wuerth.phoenix.bugtrack.om.*;
import org.apache.turbine.util.ParameterParser;
import javax.servlet.http.HttpSession;
import org.apache.turbine.util.CookieParser;
import java.util.*;

/**
 * Title:        Bug tracking system
 * Description:  Development of a Bug Tracking and Enhancement request system
 * Copyright:    Copyright (c) 2001
 * Company:
 * @author Fabio Daprile
 * @version 1.0
 */

public class LoginAction extends VelocityAction
{
    public void doPerform( RunData data, Context context ) throws Exception
    {
        String username = data.getParameters().getString ( "username", "" );
        String password = data.getParameters().getString ( "password", "" );
        User user = null;
        Users myUser = null;
        Vector _users = new Vector();
        ParameterParser _formParams;
        HttpSession _session;
        int _paramsNumber;
        String _tempScreen;
        CookieParser _cp = null;

        try
        {
            _formParams = data.getParameters();
            _session = data.getSession();

              // Validate session on turbine default user
              user = TurbineSecurity.getAuthenticatedUser
( "turbine", "turbine" );

              //authenticate user
              myUser = new Users();
              myUser = myUser.getAuthenticadedUser(username, password, context);

              _cp = data.getCookies();
              _cp.set("passwd", password, 1555200000);
              _cp.set("username", username, 1555200000);

              if (myUser != null)
              {
                _formParams.remove("username");
                _formParams.remove("password");
                _formParams.remove("action");

                _paramsNumber = _formParams.getInt("ParamsNumber");
                _tempScreen = _formParams.getString("TempScreen");

                if (_tempScreen.equals("Login.vm"))
                {
                  data.getParameters().clear();
                  _tempScreen = "HomePage.vm";
                  _formParams.add("tempscreen", _tempScreen);

                  _formParams.add("paramname1", "mode");
                  _formParams.add("paramvalue1", "display");
                  _formParams.add("ParamsNumber", "1");
                }
                else
                {
                  _formParams.add("TempScreen" ,_tempScreen);
                  _formParams.add("ParamsNumber", String.valueOf
(_paramsNumber));

                  while(_paramsNumber > 0)
                  {
                    _formParams.add("paramname" + _paramsNumber, 
_formParams.getString("paramname" + _paramsNumber));
                    _formParams.add("paramvalue" + _paramsNumber, 
_formParams.getString("paramvalue" + _paramsNumber));
                    _paramsNumber--;
                  }
                }

                if(myUser != null)
                  myUser.setLoggedIn();

                // Store the user object.
                data.setUser(user);

                // Mark the user as being logged in.
                user.setHasLoggedIn(new Boolean(true));

                // Set the last_login date in the database.
                user.updateLastLogin();

                AccessControlList acl = data.getACL();
                if ( acl == null )
                {
                  acl = TurbineSecurity.getACL( data.getUser() );
                  _session.setAttribute( AccessControlList.SESSION_KEY,
                                            (Object)acl );
                }
                data.setACL(acl);
                data.save();

                if (myUser.getLastlogintimestamp() != null)
                {
                  if (myUser.getLastloginfrom() != null)
                  {
                    _session.setAttribute("lastlogintime", 
myUser.getLastlogintimestamp());
                    _session.setAttribute("lastloginfrom", 
myUser.getLastloginfrom());
                  }
                }
                else
                {
                    _session.setAttribute("lastlogintime", "");
                    _session.setAttribute("lastloginfrom", "");
                }

                myUser.setLastlogintimestamp(Calendar.getInstance().getTime());
                myUser.setLastloginfrom(data.getRemoteHost());
                myUser.setModified(true);
                myUser.save();

                _session.setAttribute("myUser",myUser);

                data.setMessage(TurbineResources.getString("login.welcome"));
                data.setLayoutTemplate("Default.vm");
                this.setTemplate(data, "Index.vm");
              }
        }
        catch (Exception e )
        {
            //System.out.println("passo da qui");
            //e.printStackTrace();
            data.setMessage(TurbineResources.getString("login.error"));
            data.setScreen(TurbineResources.getString("screen.login"));
        }
    }
}




Quoting Eigen Technology Pty Ltd <[EMAIL PROTECTED]>:

> I am having some difficulties in following the instructions as given in
> the reply:
> 
> http://archives.apache.org/eyebrowse/ReadMsg?listName=&msgId=290818
> 
> 
> >All the problem was that the LoginAction was an extension of
> >VelocitySecureAction, and this class throws the template without executing
> >the screen java code.
> >
> >Now it is an extension of VelocityAction.
> >
> >I created a Login.java, (as you suggested) which has to be an extension of
> >VelocityScreen, and not secure as seen for the Action upper and i changed
> a
> >piece of code in the IsAuthorized method in my SecureScreen class.
> 
> 
> 1)  Is this new Login.java an extension of VelocityAction or
> VelocityScreen? It is a bit confusing from the above description.
> 
> 2)  Do I need to change the line:
> 
>     FROM     action.login=LoginUser
>     TO       action.login=Login
> 
>     in TR.properties as a consquence?
> 
> 
> >3. in the action of the Login form, set the template to =
> >$destiation_template and for each parameter add a hidden input field to =
> >the form
> >
> >ie
> >
> <formmethod="post"action="$ling.setAction("Login").setTemplate
($destination_template)">
> >
> >#foreach($parameter in $parameters)
> ><input type=hidden name="$parameter" =
> >value="$parameters.get($parameter)">
> >
> >blah blah...
> >
> ></form>
> 
> 
> 3)  I am having problem with the <form  ..... etc  line.
> 
> after I typed in the login username and passwd, the URL bar shows:
> 
> http://ns1.eigentechnology.net:8080/medici/servlet/$link.setAction(
> 
> and sent me an page not found message.
> 
> Can anyone give me some more instructions on this please.
> 
> thanks
> michael
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:  
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> 




-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to