# |
Jul 7th 2021, 16:06 |
bato |
:thinking_face: I think the `i18n` shell script is intended to be used in "dev" instance (local, docker, container, etc...) to create translations. Then it will be pushed to a (probably) git repository. When the repository is cloned that permissions are lost. So I can't figure out why there is need of 770 permissions, but maybe it's my limitations. Thanks for the support as usual ;) |
# |
Jul 7th 2021, 14:52 |
dereuromark |
https://stackoverflow.com/questions/19547085/differences-between-chmod-755-vs-750-permissions-set => why would world need access to those if the servers are properly (securely) configured? |
# |
Jul 7th 2021, 14:52 |
dereuromark |
linux :) which means local PC but internet apps (which means not so local apps on the web) are not targeting you yourself on your computer, but on remote servers |
# |
Jul 7th 2021, 14:47 |
bato |
in linux system the folder created are 775 by default, why it should be 770? |
# |
Jul 7th 2021, 14:44 |
dereuromark |
yeah, I didnt have any issues so far, and I run multiple apps through the same container. |
# |
Jul 7th 2021, 14:43 |
dereuromark |
i dont think it is a bug, the permissions shouldnt be larger by default for any folder. any if you use the tools I mentioned there will never be such issues. |
# |
Jul 7th 2021, 14:42 |
bato |
devilbox seems cool also if missing PHP 7.4 and 8. Anyway I think it's a bug, I'll try to open a PR later |
# |
Jul 7th 2021, 14:35 |
dereuromark |
devilbox is just awesome. works ootb (pun intended). |
# |
Jul 7th 2021, 14:34 |
dereuromark |
thats why you always use a box (vm or docker) :) |
# |
Jul 7th 2021, 14:30 |
bato |
If missing `Locale`folder `bin/cake i18n extract` create new one with permissions `770` If web server isn't the creator or doesn't belong to the group, it can't access to that folder |
# |
Jul 7th 2021, 14:24 |
bato |
solved... it was a permission issue on `Locale` folder |
# |
Jul 7th 2021, 14:11 |
bmudda |
@alamnaryab you can try this plugin for populating created and modified by attributes: https://github.com/UseMuffin/Footprint |
# |
Jul 7th 2021, 13:59 |
dereuromark |
I would debug the __d() function and what it looks up in the end, what language it tries to find etc |
# |
Jul 7th 2021, 13:59 |
dereuromark |
cake generates the mo file, no need to do anything from normal po usage |
# |
Jul 7th 2021, 13:57 |
kevin.pfeifer |
So you edit the `my_plugin.po` with something like PoEdit and generate a `my_plugin.mo` from it, right? |
# |
Jul 7th 2021, 13:55 |
bato |
Uhm... so should it work automatically? No need to configure anything else in plugin? |
# |
Jul 7th 2021, 13:51 |
dereuromark |
well, 2 should also be fine. https://github.com/cakephp/localized/tree/3.x/src/Locale |
# |
Jul 7th 2021, 13:50 |
dereuromark |
I always used 3 letter iso codes in cake3 ( https://github.com/dereuromark/cakephp-tools/tree/cake3/src/Locale ), not sure if that makes a difference in the end. |
# |
Jul 7th 2021, 13:36 |
slackebot2 |
forcing locale `I18n::setLocale('it')` but the strings aren't translated. Do I need to add/load a translator for the plugin? |
# |
Jul 7th 2021, 13:36 |
bato |
Hi all, I need some help with localization in a plugin for CakePHP 3.9. I have a plugin named `MyPlugin` and I made translations using `__d()` and domain `my_plugin`. Then I have extracted transaltions with `./bin/cake I18n extract --plugin MyPlugin` generating `my_plugin.pot` file inside the plugin `src/Locale` directory. I have generated `src/Locale/it/my_plugin.po` file with `./bin/cake i18n init it -p MyPlugin` To test it I'm |
# |
Jul 7th 2021, 13:14 |
dereuromark |
As only the controller should have access to request data. |
# |
Jul 7th 2021, 13:13 |
dereuromark |
Usually you would pass in that data from the controller layer into the model layer and then the behavior can use that. |
# |
Jul 7th 2021, 13:13 |
dereuromark |
I think Utils one contains one. Well, they are also cheating a bit using global auth forwarding :) But better than nothing. https://github.com/cakemanager/cakephp-utils/blob/master/src/Model/Behavior/WhoDidItBehavior.php |
# |
Jul 7th 2021, 13:11 |
dereuromark |
At the very least a session class wrapper would be appropriate here. |
# |
Jul 7th 2021, 13:11 |
alamnaryab |
no, how can I use the default one? |
# |
Jul 7th 2021, 13:11 |
dereuromark |
See awesome list. The main problem with yours is that you directly access super global $_SESSION, which is very bad. |
# |
Jul 7th 2021, 13:10 |
dereuromark |
Why? :) You do know that it already exists, right? |
# |
Jul 7th 2021, 13:06 |
slackebot2 |
$entity->modified_by = $loggedin_user_id; }else{ $entity->modified_by = $loggedin_user_id; } } }``` How can I improve it? |
# |
Jul 7th 2021, 13:06 |
alamnaryab |
I have created a `CreatedbyBehavior` to auto populate `created_by` and `modified_by` fields ```class CreatedbyBehavior extends Behavior { public function beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options) { $loggedin_user_id = isset($_SESSION['Auth']->id)?$_SESSION['Auth']->id:-1; if($entity->isNew()){ $entity->created_by = $loggedin_user_id; |
# |
Jul 7th 2021, 13:02 |
info315 |
@alamnaryab I think your Controller has to pass the current user id to the Table, which pass it to the Behavior |
# |
Jul 7th 2021, 12:39 |
ndm |
You could use a result formatter on the query to modify the data that lands in the entity, or add a virtual field to the user entity that extracts the information on the fly. |
# |
Jul 7th 2021, 12:07 |
alamnaryab |
Hi How can I get logged-in user id inside Behavior I used Authentication Plugin following cake4 cms tutorial |
# |
Jul 7th 2021, 11:52 |
paolo.bragagni |
usingfoc bootstrap-ui but my require fields are not styled |
# |
Jul 7th 2021, 08:37 |
dereuromark |
But are u also using it as in docs? :) |
# |
Jul 7th 2021, 08:24 |
rudy1976s |
I am using @dereuromark Tags plugin, I configured it as described in the docs, but I cannot save: I always get the following error: `Cannot convert value of type array to string.` The stack is not helping: anyone got same issue ? |
# |
Jul 7th 2021, 08:22 |
rudy1976s |
good morning !!! |
# |
Jul 6th 2021, 22:17 |
itmpls |
makes sense, yeah |
# |
Jul 6th 2021, 22:06 |
dereuromark |
blacklisting instead of whitelisting is usually considered a security risk. add any new method/controller without thinking about it and you exposed too much by accident. |
# |
Jul 6th 2021, 21:14 |
itmpls |
Apparently my version doesn't support bypassAuth - by AppController logic did you mean just specifying a beforeFilter and conditioning off $this->name to specify $this->Auth->allow? That's what I just discovered |
# |
Jul 6th 2021, 19:57 |
slackebot2 |
] ); }``` It Returns `Roles` insde `UserRoles` object. while I want it as plain array of roles as property of `User` object so that I can make check easily for roles as below ```if(in_array('admin',$this->Authentication->getIdentityData('roles') ){ //show admin dashboard }else if(array_intersect( ['sa','owner'],$this->Authentication->getIdentityData('roles') ){ //show owner dashboard } ``` |
# |
Jul 6th 2021, 19:57 |
alamnaryab |
Respected @ndm I tried this, but there is still an issue I have 4 tables `Users` `Students` `Roles` and `UserRoles` I am expecting ```$this->Authentication->getIdentityData('roles') = array('sa','admin',....);``` ```public function findForAuthentication(\Cake\ORM\Query $query, array $options): \Cake\ORM\Query { return $query->contain( [ 'Students', 'UserRoles.Roles' |