Whoops, looks like that works for /app/, but not /app :/

On Sunday, March 10, 2019 at 5:47:03 PM UTC-5, Adam Hopkins wrote:
>
> I had trouble getting it to work with optional placeholders, but I ended 
> up getting it to work with the wildcard placeholders 
> <https://metacpan.org/pod/Mojolicious::Guides::Routing#Wildcard-placeholders>
> :
>
> $session_auth_route->get('*path')->to(controller => 'app', action => 
> 'index'); 
>
>
> Let me know if this doesn't seem right, or if there is a better way. 
> Thanks!
>
> On Sunday, March 10, 2019 at 5:20:33 PM UTC-5, Dan Book wrote:
>>
>> Actually your first one does not cover /app/ because the placeholder is 
>> not optional. To make it optional you can give it a default (see 
>> https://metacpan.org/pod/Mojolicious::Guides::Routing#Optional-placeholders
>> )
>>
>> -Dan
>>
>> On Sun, Mar 10, 2019 at 2:58 PM Adam Hopkins <[email protected]> 
>> wrote:
>>
>>> So that makes sense that under routes need to have routes under them to 
>>> be the final destination. I guess I thought that
>>>
>>> $session_auth_route->get('/*')->to(controller => 'app', action => 
>>> 'index');
>>>
>>> Would cover both /app/ and /app/*.
>>>
>>> I tried what I think you meant:
>>>
>>>
>>> $session_auth_route->get()->to(controller => 'app', action => 'index');
>>>
>>>
>>> And that only seemed to match /app, but nothing after /app/.
>>>
>>> On Sunday, March 10, 2019 at 1:42:00 PM UTC-5, Dan Book wrote:
>>>>
>>>> Under routes do not match on their own. They must have routes under 
>>>> them to be the final destination of the route. If you don't have any 
>>>> routes 
>>>> under /app, then just make it a regular ->get.
>>>>
>>>> -Dan
>>>>
>>>> On Sun, Mar 10, 2019 at 2:03 PM Adam Hopkins <[email protected]> 
>>>> wrote:
>>>>
>>>>> I have an authenticated part of my app, where I want all paths under 
>>>>> "/app*" to go to the same action. I thought I could do this with only one 
>>>>> route, but I seem to need two:
>>>>>
>>>>> my $session_auth_route = $app->routes->under('/app' => sub ($c) {
>>>>>     return 1 if $c->is_session_authenticated; 
>>>>>
>>>>>
>>>>>     $c->redirect_to('/');
>>>>>     return;
>>>>> });
>>>>>
>>>>>
>>>>> # without this, /app alone will not match
>>>>> $session_auth_route->get('/')->to(controller => 'app', action => 
>>>>> 'index');
>>>>>
>>>>>
>>>>> # I thought this would cover /app and /app/whatever, but it only works 
>>>>> when there is more after /app in the path
>>>>> $session_auth_route->get('/*')->to(controller => 'app', action => 
>>>>> 'index'); 
>>>>>
>>>>> Is there a better way to get this working with only one route that 
>>>>> will match everything under /app and including /app?
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Mojolicious" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at https://groups.google.com/group/mojolicious.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Mojolicious" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/mojolicious.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to