# |
May 7th 2021, 22:52 |
ndm |
For your redirect problem, you can debug if you land here, and if you get a valid redirect url: https://github.com/cakephp/authentication/blob/1.x/src/Middleware/AuthenticationMiddleware.php#L129-L137 |
# |
May 7th 2021, 22:50 |
ndm |
1.x is for CakePHP 3.x, and 2.x is for CakePHP 4.x, for both authentication and authorization |
# |
May 7th 2021, 22:48 |
thomas078 |
Also found something strange. Method 'App\Application::getAuthorizationService()' is not compatible with method 'Authorization\AuthorizationServiceProviderInterface::getAuthorizationService()' Trying to implement this in cake3.9. had to install composer require "cakephp/authorization:^1.0" instead of 2.0. Maybe this is not compatible with authentication 1.0? |
# |
May 7th 2021, 22:46 |
thomas078 |
strange as authentication middleware works |
# |
May 7th 2021, 22:45 |
ndm |
Maybe the authentication middleware is misplaced and something else handles the exception. |
# |
May 7th 2021, 22:42 |
thomas078 |
Application.php |
# |
May 7th 2021, 22:39 |
ndm |
maybe you're setting this in the wrong place |
# |
May 7th 2021, 22:30 |
thomas078 |
i set $service->setConfig([ 'unauthenticatedRedirect' => '/users/login', 'queryParam' => 'redirect', ]); but still i get *Error:* No identity found. You can skip this check by configuring `requireIdentity` to be `false`. but no redirect? |
# |
May 7th 2021, 22:28 |
thomas078 |
then i will really see the whole scope to see how much work to migrate from cake 3 to 4 |
# |
May 7th 2021, 22:27 |
thomas078 |
sure. Will test that as well |
# |
May 7th 2021, 22:21 |
ndm |
correct, authorization checks are done in policies now |
# |
May 7th 2021, 22:20 |
thomas078 |
and that old inAuthorized is not called nomore |
# |
May 7th 2021, 22:20 |
thomas078 |
I guess this is now with Authorization plugin |
# |
May 7th 2021, 22:19 |
thomas078 |
ok. Authentication set. Now basic Authorization. I used to do it like: public function isAuthorized($user) |
# |
May 7th 2021, 22:12 |
ndm |
yes |
# |
May 7th 2021, 22:12 |
thomas078 |
So, basically with that i can manually set it |
# |
May 7th 2021, 22:11 |
thomas078 |
ok. Got it. I was confused as Authentication already worked :) |
# |
May 7th 2021, 22:10 |
ndm |
That method _can_ be used to manually authenticate an identity, or to update a persisted identity (for example in the session). You don't _have_ to use it for authentication to work. |
# |
May 7th 2021, 22:07 |
thomas078 |
This is confusing. Maybe after identifying user i have to setIdentity as well? ```$user = $this->Users->find()->where(['Users.id' => $this->Authentication->getIdentityData('id')])->first();` $this->Authentication->setIdentity($user);``` ? |
# |
May 7th 2021, 22:01 |
thomas078 |
what does it even do as i can anyway call logged in users with $this->Authentication->getIdentity() |
# |
May 7th 2021, 22:01 |
thomas078 |
Second question. In Auth component it was like $this->Auth->setUser($user);. Do i need to call ```// Persist the user into configured authenticators. $this->Authentication->setIdentity($user);``` |
# |
May 7th 2021, 22:00 |
thomas078 |
? |
# |
May 7th 2021, 22:00 |
thomas078 |
for e.g i can call like debug($this->Authentication->getIdentityData('role')); and i will get my role, is this the correct way to do it |
# |
May 7th 2021, 21:59 |
thomas078 |
debug($this->Authentication->getIdentity()); Getting the identify object will all correct. Littlebit confused what is the correct way to get actual information. Identifiers? |
# |
May 7th 2021, 21:04 |
tyler.adam.lazenby |
its for a CI |
# |
May 7th 2021, 21:04 |
tyler.adam.lazenby |
Does anybody have any docker files they would be willing to share for cakephp 4.x and php8.0 |
# |
May 7th 2021, 20:45 |
thomas078 |
will start to play with that now |
# |
May 7th 2021, 20:45 |
thomas078 |
cool. Thanks |
# |
May 7th 2021, 20:43 |
slackebot |
] ); }``` |
# |
May 7th 2021, 20:43 |
kevin.pfeifer |
if you want to have specific actions without authentication, then yes, they should be placed in the beforeFilter in the controller like ``` public function beforeFilter( \Cake\Event\EventInterface $event ) { parent::beforeFilter( $event ); // Configure the login action to not require authentication, preventing // the infinite redirect loop issue $this->Authentication->addUnauthenticatedActions( [ 'login' |
# |
May 7th 2021, 20:42 |
thomas078 |
@kevin.pfeifer Thanks. Thats it. Best place to set it is at controllers beforeFilter? |
# |
May 7th 2021, 20:35 |
kevin.pfeifer |
like it is stated here: https://book.cakephp.org/authentication/2/en/index.html#getting-started |
# |
May 7th 2021, 20:34 |
kevin.pfeifer |
do you have ```$this->loadComponent( 'Authentication.Authentication' );``` in your AppController.php initialize function? |
# |
May 7th 2021, 20:30 |
thomas078 |
Any idea where to look |
# |
May 7th 2021, 20:30 |
thomas078 |
trying my best to migrate Auth component to Authentication. debug($this->Authentication); on my UsersController is giving me ```Undefined property: UsersController::$Authentication in /src/Controller/UsersController.php on line 72 [CORE/src/Controller/Controller.php, line 387]``` |
# |
May 7th 2021, 17:49 |
mehov |
Okay, no surrogate it is then! Somehow never tried using a composite key, so this is about time. Thanks again for the advice guys :) |
# |
May 7th 2021, 17:39 |
kevin.pfeifer |
I don't even have Foreign Key constraints set on my database, I just let cakephp handle all that ,:) |
# |
May 7th 2021, 17:37 |
ndm |
Technically it doesn't even need to be a real constraint, but just defined in the table class, but that won't work with auto-tables. |
# |
May 7th 2021, 17:35 |
ndm |
Again, all is needed is a primary key constraint, it doesn't matter whether it's an additional field, or whether it's created over the existing foreign key fields. |
# |
May 7th 2021, 17:31 |
kevin.pfeifer |
but from a pure cakephp standpoint it isn't necesarry for a pure N:M aka HABTM connection between 2 tables |
# |
May 7th 2021, 17:30 |
kevin.pfeifer |
if you don't have any additional data that needs to be stored inside that junction table then you are fine without the id. If you need it for future data that needs to be stored inside there then sure, the ID is needed |