You only need to set a prefix as explicitly false if the page with the
link has that prefix defined as true.

- Jamie

On Apr 18, 8:21 am, "Krissy Masters" <naked.cake.ba...@gmail.com>
wrote:
> One thing I was going to ask in regard to the admin routing.
> You have 3 different routes prefixed, admin, manager, editor and on the
> homepage like this example do you have to write admin => false, manager=>
> false, editor => false for every link? Or is there a short prefix => null
> type option?
>
>
>
> -----Original Message-----
> From: cake-php@googlegroups.com [mailto:cake-php@googlegroups.com] On Behalf
>
> Of Sam Sherlock
> Sent: Monday, April 18, 2011 12:24 PM
> To: cake-php@googlegroups.com
> Subject: Re: Can someone explain this to me in English please
>
> the last line allows admin users to access all areas. Other roles are
> limited to thier respective prefixed routes
>
> add admin=>false  to your html->link calls
>
> On 18/04/2011, MeatSandwich <i...@babyclothingcentral.co.uk> wrote:
> > Sorry for being a bit of a dumb-ass but I'm trying to learn and have
> > been looking at this for a couple of days but I'm still not completely
> > sure how it works. I'm following an offline tutorial about using
> > prefixes.
>
> > the tutorial says do this:
> > 1 - uncomment the admin routing prefix in core.php
> > 2 - add the following to users_controller.php:
> >    public function dashboard() {
> >            $role = $this->Auth->user('role');
> >            if (!empty($role)) {
> >                    $this->redirect(array($role=>true,
> 'action'=>'dashboard'));
> >            }
> >    }
>
> >    public function admin_dashboard() {
> >    }
>
> >    public function manager_dashboard() {
> >    }
>
> > 3 - create three views for the above
> > 4 - in app_controller add the authorize and session components with
> > appropriate settings, then add:
> >    public function isAuthorized() {
> >            $role = $this->Auth->user('role');
> >            $neededRole = null;
> >            $prefix = !empty($this->params['prefix']) ? $this-
> >>params['prefix'] : null;
> >            if (!empty($prefix) && in_array($prefix,
> > Configure::read('Routing.prefixes'))) {
> >                    $neededRole = $prefix;
> >            }
> >            return (empty($neededRole) || strcasecmp($role, 'admin') ==
> 0 ||
> > strcasecmp($role, $neededRole) == 0);
> >    }
>
> > 5 - in the default layout:
> > <?php
> >    $dashboardUrl = array('controller'=>'users', 'action'=>'dashboard');
> >    if (!empty($user['role'])) {
> >            $dashboardUrl[$user['role']] = true;
> >    }
> >    echo $this->Html->link('My Dashboard', $dashboardUrl);
> > ?>
>
> > Now the whole thing works and I can follow most of whats going on, but
> > I'm confused with the last line in the isAuthorized method. What
> > exactly does return (empty($neededRole) || strcasecmp($role, 'admin')
> > == 0 || strcasecmp($role, $neededRole) == 0); actually return?
>
> > Also, the above code works fine and when I log in as someone who is an
> > admin they can view the admin_dashboard ok, but there after it seems
> > any other link has an admin prefix. How do I stop that happening? I
> > don't want to have to create an admin_ method for everything including
> > the homepage!
>
> > thanks in advance - Cake rules!
>
> > --
> > Our newest site for the community: CakePHP Video Tutorials
> >http://tv.cakephp.org
> > Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help
> > others with their CakePHP related questions.
>
> > To unsubscribe from this group, send email to
> > cake-php+unsubscr...@googlegroups.com For more options, visit this group
> at
> >http://groups.google.com/group/cake-php
>
> --
>  - S
>
> +44 (0)7908 069 219
>
> --
> Our newest site for the community: CakePHP Video 
> Tutorialshttp://tv.cakephp.org
> Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help
> others with their CakePHP related questions.
>
> To unsubscribe from this group, send email to
> cake-php+unsubscr...@googlegroups.com For more options, visit this group 
> athttp://groups.google.com/group/cake-php

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to