You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Vjeran Marcinko <vj...@email.t-com.hr> on 2009/08/09 13:31:28 UTC
[T5] Log in directly to requested page (not just home page)
Hello,
Is there any way to genericaly extract activation context (array or
EventContext) from some page instance?
I'm asking this because I want my page authorization to work in a way to
remember what page and activation context has been requested by unauthorized
user, so that after he logs in successfuly, I would redirect him to that
requested page. For that to work, inside my SecuredPage superclass, I have
to be able to extract requested page name (which is easy) and also
activation context (which I don't know how), so I would be able to store
them inside LogIn page form for later access in case of successful login.
BTW, is there also some generic way to apply activation context on page
instance without calling onActivate insid ecode, because I would probably
have something like:
public void onActivate(Long id) {...}
whereas I have activation in a array form?
Or some other suggestion for implementing this feature maybe? I guess this
functionality would also be useful for implementing some generic breadcrumbs
component....
Regards,
Vjeran
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: [T5] Log in directly to requested page (not just home page)
Posted by Vjeran Marcinko <vj...@email.t-com.hr>.
Thanx,
This is satisfying solution, though I don't know if Link implementation not
being Serializable makes any problem when persisting in HttpSession in some
cases.
-Vjeran
----- Original Message -----
From: "Josh Canfield" <jo...@thedailytube.com>
To: "Tapestry users" <us...@tapestry.apache.org>
Sent: Sunday, August 09, 2009 7:48 PM
Subject: Re: [T5] Log in directly to requested page (not just home page)
> I've found that the easiest thing to do is just remember the url that your
> user was trying to load in the first place.
> In my base page I have this:
>
> @InjectPage
> private Login _loginPage;
>
> public Object onActivate(Object[] context) {
> // Only let the request through if the user has logged in
> if (!_loginStateExists || !_loginState.isValid()) {
> _loginState = null;
> final Link link =
> _linkSource.createPageRenderLinkWithContext(_resources.getPageName(),
> context);
> _loginPage.setSuccessLink(link);
> return _loginPage;
> }
>
> return null;
> }
>
> Then when the form is submitted to the login page I have this:
>
> /**
> * Where to go after a successful login.
> */
> @Persist
> private Link _successLink;
>
> Object onSuccess() {
> if (_successLink != null) {
> final Link link = _successLink;
> _successLink = null; // we only use the link once.
> return link;
> }
> return Index.class; // no link set, just go to home page.
> }
>
>
> Josh
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: [T5] Log in directly to requested page (not just home page)
Posted by Josh Canfield <jo...@thedailytube.com>.
I've found that the easiest thing to do is just remember the url that your
user was trying to load in the first place.
In my base page I have this:
@InjectPage
private Login _loginPage;
public Object onActivate(Object[] context) {
// Only let the request through if the user has logged in
if (!_loginStateExists || !_loginState.isValid()) {
_loginState = null;
final Link link =
_linkSource.createPageRenderLinkWithContext(_resources.getPageName(),
context);
_loginPage.setSuccessLink(link);
return _loginPage;
}
return null;
}
Then when the form is submitted to the login page I have this:
/**
* Where to go after a successful login.
*/
@Persist
private Link _successLink;
Object onSuccess() {
if (_successLink != null) {
final Link link = _successLink;
_successLink = null; // we only use the link once.
return link;
}
return Index.class; // no link set, just go to home page.
}
Josh
2009/8/9 Vjeran Marcinko <vj...@email.t-com.hr>
> I know that onActivate can have EventContext argument, but it's less
> explicit compared to some specific onActivate for given page, such as
>
> public void onActivate(Long id) {...}
>
> and I don't want every page to have :
> public void onActivate(EventContext ec) {...}
>
> just because I want each of those pages to be accessed in a generic way
> from LoginPage when user logs in.
>
> What I need is some generic way of collectiing activation context values
> from some page instance (eg. triggering "passivate" event on page instance
> and collecting return values), and also applying that same activation
> context on desired page instance also in generic fashion (triggering
> "activate" event with that argument).
>
> I cannot do any of this via spoecific hardcoded way, since maybe some of my
> page has activation context specified via @PageActivationContext so I don't
> have an option to call manually onActivate or onPassivate, I have to di it
> the same way as Tapestry is doing it internally when it manages activation
> context.
>
> -Vjeran
>
> ----- Original Message ----- From: "Felix Gonschorek" <fe...@ggmedia.net>
> To: "Tapestry users" <us...@tapestry.apache.org>
> Sent: Sunday, August 09, 2009 1:48 PM
> Subject: Re: [T5] Log in directly to requested page (not just home page)
>
>
>
> Hi,
>>
>> there are two hints that may help you:
>>
>> You have two additional options for the parameters of you onActivate()
>> method:
>>
>> a) One parameter of type Object[]
>> b) One parameter of type EventContext
>> (
>> http://tapestry.apache.org/tapestry5/apidocs//org/apache/tapestry5/EventContext.html
>> )
>>
>> i use b) very often
>>
>> felix
>>
>>
>>
>> Vjeran Marcinko schrieb:
>>
>>> Hello,
>>>
>>> Is there any way to genericaly extract activation context (array or
>>> EventContext) from some page instance?
>>>
>>> I'm asking this because I want my page authorization to work in a way to
>>> remember what page and activation context has been requested by
>>> unauthorized user, so that after he logs in successfuly, I would
>>> redirect him to that requested page. For that to work, inside my
>>> SecuredPage superclass, I have to be able to extract requested page name
>>> (which is easy) and also activation context (which I don't know how), so
>>> I would be able to store them inside LogIn page form for later access in
>>> case of successful login.
>>>
>>> BTW, is there also some generic way to apply activation context on page
>>> instance without calling onActivate insid ecode, because I would
>>> probably have something like:
>>>
>>> public void onActivate(Long id) {...}
>>>
>>> whereas I have activation in a array form?
>>>
>>> Or some other suggestion for implementing this feature maybe? I guess
>>> this functionality would also be useful for implementing some generic
>>> breadcrumbs component....
>>>
>>> Regards,
>>> Vjeran
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
> --------------------------------------------------------------------------------
>
>
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 8.5.392 / Virus Database: 270.13.48/2292 - Release Date: 08/09/09
> 08:08:00
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
--
--
TheDailyTube.com. Sign up and get the best new videos on the internet
delivered fresh to your inbox.
Re: [T5] Log in directly to requested page (not just home page)
Posted by Vjeran Marcinko <vj...@email.t-com.hr>.
I know that onActivate can have EventContext argument, but it's less
explicit compared to some specific onActivate for given page, such as
public void onActivate(Long id) {...}
and I don't want every page to have :
public void onActivate(EventContext ec) {...}
just because I want each of those pages to be accessed in a generic way from
LoginPage when user logs in.
What I need is some generic way of collectiing activation context values
from some page instance (eg. triggering "passivate" event on page instance
and collecting return values), and also applying that same activation
context on desired page instance also in generic fashion (triggering
"activate" event with that argument).
I cannot do any of this via spoecific hardcoded way, since maybe some of my
page has activation context specified via @PageActivationContext so I don't
have an option to call manually onActivate or onPassivate, I have to di it
the same way as Tapestry is doing it internally when it manages activation
context.
-Vjeran
----- Original Message -----
From: "Felix Gonschorek" <fe...@ggmedia.net>
To: "Tapestry users" <us...@tapestry.apache.org>
Sent: Sunday, August 09, 2009 1:48 PM
Subject: Re: [T5] Log in directly to requested page (not just home page)
> Hi,
>
> there are two hints that may help you:
>
> You have two additional options for the parameters of you onActivate()
> method:
>
> a) One parameter of type Object[]
> b) One parameter of type EventContext
> (http://tapestry.apache.org/tapestry5/apidocs//org/apache/tapestry5/EventContext.html)
>
> i use b) very often
>
> felix
>
>
>
> Vjeran Marcinko schrieb:
>> Hello,
>>
>> Is there any way to genericaly extract activation context (array or
>> EventContext) from some page instance?
>>
>> I'm asking this because I want my page authorization to work in a way to
>> remember what page and activation context has been requested by
>> unauthorized user, so that after he logs in successfuly, I would
>> redirect him to that requested page. For that to work, inside my
>> SecuredPage superclass, I have to be able to extract requested page name
>> (which is easy) and also activation context (which I don't know how), so
>> I would be able to store them inside LogIn page form for later access in
>> case of successful login.
>>
>> BTW, is there also some generic way to apply activation context on page
>> instance without calling onActivate insid ecode, because I would
>> probably have something like:
>>
>> public void onActivate(Long id) {...}
>>
>> whereas I have activation in a array form?
>>
>> Or some other suggestion for implementing this feature maybe? I guess
>> this functionality would also be useful for implementing some generic
>> breadcrumbs component....
>>
>> Regards,
>> Vjeran
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
--------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.5.392 / Virus Database: 270.13.48/2292 - Release Date: 08/09/09
08:08:00
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: [T5] Log in directly to requested page (not just home page)
Posted by Felix Gonschorek <fe...@ggmedia.net>.
Hi,
there are two hints that may help you:
You have two additional options for the parameters of you onActivate() method:
a) One parameter of type Object[]
b) One parameter of type EventContext
(http://tapestry.apache.org/tapestry5/apidocs//org/apache/tapestry5/EventContext.html)
i use b) very often
felix
Vjeran Marcinko schrieb:
> Hello,
>
> Is there any way to genericaly extract activation context (array or
> EventContext) from some page instance?
>
> I'm asking this because I want my page authorization to work in a way to
> remember what page and activation context has been requested by
> unauthorized user, so that after he logs in successfuly, I would
> redirect him to that requested page. For that to work, inside my
> SecuredPage superclass, I have to be able to extract requested page name
> (which is easy) and also activation context (which I don't know how), so
> I would be able to store them inside LogIn page form for later access in
> case of successful login.
>
> BTW, is there also some generic way to apply activation context on page
> instance without calling onActivate insid ecode, because I would
> probably have something like:
>
> public void onActivate(Long id) {...}
>
> whereas I have activation in a array form?
>
> Or some other suggestion for implementing this feature maybe? I guess
> this functionality would also be useful for implementing some generic
> breadcrumbs component....
>
> Regards,
> Vjeran
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org