Anuj TBE
Anuj TBE

Reputation: 9800

How to use Auth component of Cakephp 3 in Event

I'm using CakePHP 3.2 and proffer plugin for image uploading.

I want to rewrite the default path of proffer plugin to upload image and change image name before save.

As per the documentation of proffer from github. I have created an event in /src/Event

Now I want to rename the file like

$this->Auth->user('id').'-'.$row('id').date('dmyhis').ext

this is what I have done

$newFilename = $this->Auth->user('id').'-'.$event->subject()->get('id') . '_' . Inflector::slug($event->subject()->get('name')) . date('ymdhis') . $ext;

But this is giving error that Auth can not be used here. Is there any way to use Auth Component outside controller ?

Upvotes: 1

Views: 995

Answers (2)

TommyDo
TommyDo

Reputation: 673

With cake 3.x and after, you should using this:

$this->request->session()->read('Auth');

When debug it

debug( $this->request->session()->read('Auth') );

[
    'id' => (int) 2,
    'username' => 'admin',
    'nice_name' => 'Tommy Do',
    'first_name' => 'Huy',
    'last_name' => 'Đỗ',

    ...//and more info in UserTable
]

And access to each element.

$this->request->session()->read('Auth.nice_name');

Print:

Tommy Do

Hope it will help you :D

Upvotes: 0

Indrasis Datta
Indrasis Datta

Reputation: 8618

You can access the logged in user id by loading the session.

use Cake\Network\Session;
$session  = new Session();
$userData = $session->read('Auth.User.id');

Use this as a reference: Reading & Writing Session Data

Upvotes: 1

Related Questions