Thursday, November 22, 2012

Re: Auth allow for shared functions in Appcontroller

Ignore what I said. I just thought about it for a minute and that's
incorrect. Auth::allow merges the actions:

$this->allowedActions = array_merge($this->allowedActions, $args);

So when it runs in a given Controller the other actions are merged
with whatever you allow in AppController. I just removed an action
from one of mine and allow()ed it inAppController. Works just fine.

What version are you running?

And I assumed you initialised Auth in AppController's $components array. eg.

public $components = array(
'Auth' => array(
'loginAction' => array(
'admin' => 0, 'controller' => 'users', 'action' => 'login'
),
// etc.

If you don't do it that way you need to initialise in beforeFilter()
*before* you call Auth::allow().

On Thu, Nov 22, 2012 at 5:48 PM, lowpass <zijn.digital@gmail.com> wrote:
> When AppController::beforeFilter() runs, it knows only about the
> methods in AppController.
>
> If you want to have dedicated actions for each controller then you
> need to specifically allow() them in each controller. Your controller
> action might in turn call parent::TellAFriend() which is a method in
> AppController, but Auth won't care about that. The only thing that
> matters in terms of whether you can call it is that it's not a private
> method. Auth only handles actions that Dispatcher dispatches to.
>
>
> On Thu, Nov 22, 2012 at 3:01 PM, MetZ <metz80@gmail.com> wrote:
>> Hi.
>>
>> I have a function in my AppController = TellaFriend
>>
>> That allows a visitor to email his friend about a spesific page on the
>> website, eg: shared by all controllers
>>
>> Now, if I need to have the function available to my views using
>> PostsController, I need to put in Auth allow TellaFriend in Postscontroller.
>> And if I need it in PageController, I need to put in Auth allow TellaFriend
>> in Pagecontroller also, and so on.
>>
>> Since this is a shared function, I was wondering, is it possible to add it
>> to AppController, and have it available app-wide?
>> I refer to my first post for the basic controller setup in use today (except
>> anything Auth allow in AppController, If I put anything like the mentioned
>> string in AppController, App does not work at all).
>>
>> -Tom
>>
>>
>> kl. 20:33:21 UTC+1 torsdag 22. november 2012 skrev cricket følgende:
>>>
>>> He means that he wants his AppController actions Auth::allow()ed globally.
>>>
>>> I've never run into this personally; don't know if it's a bug. Are
>>> these *actions* or just global functions that your controllers call
>>> internally? The latter I've done many times. There's no need to allow
>>> them as they're not actions that Dispatcher is involved with.
>>>
>>> It can be an array or multiple strings, btw.
>>>
>>> On Thu, Nov 22, 2012 at 11:09 AM, Jeremy Burns : Class Outfit
>>> <jerem...@classoutfit.com> wrote:
>>> > I hope I haven't misunderstood what you are trying to do... If they are
>>> > shared functions just put and allow them in app controller and call them
>>> > from any other controller like so: $this->myFunctionName().
>>> >
>>> > On 22 Nov 2012, at 16:04, MetZ <met...@gmail.com> wrote:
>>> >
>>> > Hi.
>>> >
>>> > Anyone know how I can auth allow shared functions in appcontroller?
>>> >
>>> > Appcontroller:
>>> > public function beforeFilter() {
>>> > $this->Auth->allow('SharedFunction');
>>> >
>>> > OtherController.php
>>> > public function beforeFilter() {
>>> > parent::beforeFilter();
>>> > $this->Auth->allow('ControllerSpesificFunction',
>>> > 'ControllerSpesificFunction2');
>>> >
>>> > If I do it like above, it kills my app, and to get the sharedfunction(s)
>>> > access in all controllers, I need to manually put them in all
>>> > controllers.
>>> >
>>> > Anyone know how I can do it?
>>> >
>>> > Have tried with array() and so on. same result.
>>> >
>>> > Thanks!
>>> > -Tom
>>> >
>>> > --
>>> > Like Us on FaceBook https://www.facebook.com/CakePHP
>>> > Find us on Twitter http://twitter.com/CakePHP
>>> >
>>> > ---
>>> > You received this message because you are subscribed to the Google
>>> > Groups
>>> > "CakePHP" group.
>>> > To post to this group, send email to cake...@googlegroups.com.
>>> > To unsubscribe from this group, send email to
>>> > cake-php+u...@googlegroups.com.
>>> > Visit this group at http://groups.google.com/group/cake-php?hl=en.
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > Like Us on FaceBook https://www.facebook.com/CakePHP
>>> > Find us on Twitter http://twitter.com/CakePHP
>>> >
>>> > ---
>>> > You received this message because you are subscribed to the Google
>>> > Groups
>>> > "CakePHP" group.
>>> > To post to this group, send email to cake...@googlegroups.com.
>>> > To unsubscribe from this group, send email to
>>> > cake-php+u...@googlegroups.com.
>>> > Visit this group at http://groups.google.com/group/cake-php?hl=en.
>>> >
>>> >
>>
>> --
>> Like Us on FaceBook https://www.facebook.com/CakePHP
>> Find us on Twitter http://twitter.com/CakePHP
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "CakePHP" group.
>> To post to this group, send email to cake-php@googlegroups.com.
>> To unsubscribe from this group, send email to
>> cake-php+unsubscribe@googlegroups.com.
>> Visit this group at http://groups.google.com/group/cake-php?hl=en.
>>
>>

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.

No comments: