Log message #4263485

# At Username Text
# May 18th 2021, 15:00 etibor well the thing for the UsersController located in Templates/Users - without the prefix
# May 18th 2021, 14:56 ndm @etibor Are you just using separate templates so that you can display different menus per role?
# May 18th 2021, 14:47 paolo.bragagni it creates a LibroPolicy.php in my src\Policy
# May 18th 2021, 14:46 paolo.bragagni I'd like that when I fire bin/cake bake all Libri -t BragBake
# May 18th 2021, 14:44 paolo.bragagni bake template for policy?
# May 18th 2021, 14:39 etibor the issue is when i navigate to the users/profile page and logged with admin for example i navigate to site-url/admin/users/profile
# May 18th 2021, 14:37 etibor i have now: Template/admin/layout/admin_menu.ctp Template/clerk/layout/clerk_menu.ctp while my commonly used functions located in Controller/UsersController.php - non prefixed
# May 18th 2021, 14:33 ndm Trying to substitute layouts is most likely having looots of pitfalls, I probably wouldn't even try it, rather I'd use a custom view or live with the mentioned layout subdirectory "workaround".
# May 18th 2021, 14:30 etibor however when i tried to use element insted of layout it was only good for side menu, because the default top menu is the default layout
# May 18th 2021, 14:29 etibor okey i now i a little more familiar with the concept
# May 18th 2021, 14:24 ndm You could use subfolders in the default layout folder though? Sure, it's separate from the prefix template subfolders then, but still properly separated and in a place where it makes sense.
# May 18th 2021, 14:22 ndm You can't just use that anywhere, it's tied to the view's internals. As you noticed, changing the layout path only changes where things point to inside of the default layout folder, more drastic changes can only be applied on view level.
# May 18th 2021, 14:20 etibor i have just could not figured out how can i use that costumViews's functions
# May 18th 2021, 14:19 etibor https://github.com/cakephp/cakephp/issues/3907
# May 18th 2021, 14:19 etibor the real issue is coming by the setLayyoutPath can not point out the prefixed layout directory path
# May 18th 2021, 14:18 etibor my problem in short, i have different prefixes for different roles, i have non prefixed Controllers for commonly used function when i navigate to the non prefixed Controller, the page is look for the non prefixed layout directory, and con not change it by set Layout Path in my case layout are difinied two times, first in the prefixed layout directory, secondly by the non prefixed layout directory - this is simple not DRY
# May 18th 2021, 14:02 ndm Why even in the first place? I don't really know what problem exactly that snippet there is trying to fix, but layouts for prefixes should work out of the box IIRC.
# May 18th 2021, 13:59 etibor how can i use an element insted of a layout ?
# May 18th 2021, 13:41 etibor this could solve my issue: https://gist.github.com/TamiasSibiricus/a1010fc95839f79e9e8a however i dont really knows how to use view's function in Controller
# May 18th 2021, 13:40 etibor with layouts, i have a lot of issues, when i have multiple prefixes
# May 18th 2021, 13:38 etibor its the first time that i try to work with elements, using insted of layouts
# May 18th 2021, 13:37 etibor thank you @ndm
# May 18th 2021, 13:32 ndm @etibor Use `disableAutoLayout()` instead. On 3.x you could also set the layout to `false` instead of an empty string, but that won't work in 4.x anymore.
# May 18th 2021, 13:17 etibor using : $this->viewBuilder()->setLayout(''); will disable the rest of the template too not just the layout
# May 18th 2021, 13:16 etibor hello how can i disable the default layout
# May 18th 2021, 11:19 neon1024 Ah, it is still there. What an odd bug
# May 18th 2021, 11:14 neon1024 Is the `Model.initialize` event not a thing any more? I can only see DebugKit calling it in my listener
# May 18th 2021, 09:57 ndm Not necessarily, you can also do a find after using `saveAssociated()`, and then use the query model id for one last separate save that updates the order.
# May 18th 2021, 09:50 rightscoreanalysis thanks @ndm - so the way to go would be to use seperate saves and then use $this->Model->Id to seed the foreign keys manually?
# May 18th 2021, 09:39 ndm But even if it were generally possible, it would not be practical with a "to many" association, as the saving logic wouldn't which of the possibly many addresses should be associated with the order.
# May 18th 2021, 09:37 ndm @rightscoreanalysis That's not possible no, only directly association models can be automatically decorated with a foreign key.
# May 18th 2021, 09:32 rightscoreanalysis my question about saving back through a relationship better explained here, I am sure those most knowledgeable will know if what I am attempting is possible or not: https://stackoverflow.com/questions/67582761/cakephp-saving-fk-back-through-data-in-a-multiple-relation-structure
# May 18th 2021, 09:21 neon1024 Thanks for the tips everyone :bow:
# May 18th 2021, 09:21 slackebot I bet that will fill in my mental gaps :)
# May 18th 2021, 09:21 neon1024 Oh right that does make sense. The main thing was that we have a custom RoleAuthorize class, which I wanted to keep. So I can refactor to Policies in another PR. The request middleware looked a good spot to just call an instance of that class and return it’s `authenticate()`. Which does seem to work, but now I know I need to massage it a bit :thumbsup: Although I’m going to read through the bits that @steinkel linked, as
# May 18th 2021, 09:15 slackebot generally you can as well manually check the request (if you actually _want_ to use a request policy) on controller level and take actions into account that do not require authentication. ```$action = $this->request->getParam('action'); if (in_array($action, $this->Authentication->getUnauthenticatedActions(), true)) { $this->Authorization->skipAuthorization(); } else { $this->Authorization->authorize($this->request, 'access'); }```
# May 18th 2021, 09:15 ndm @neon1024 That's just how the request authorization middleware works, it unconditionally applies to every request, acting as a simple, early entry point for stuff like RBAC, ACL, etc., and if you don't want to duplicate config, then you should store it in a central point instead where both your policies as well as your controllers can look it up. Also, you don't necessarily _have_ to use the middleware to authorize requests,
# May 18th 2021, 09:01 erwane So yes, we have to define it twice :)
# May 18th 2021, 09:00 erwane In my AuthController (page with no authorization and not yet authenticated), i have to write ``` public function initialize() { parent::initialize(); $this->Authentication->allowUnauthenticated([ 'login', 'logout', 'passwordAsk', 'passwordRenew', ]); $this->skipAuthorization();```
# May 18th 2021, 09:00 neon1024 I’ll get my reading done this morning :thumbsup:
# May 18th 2021, 08:59 neon1024 I'