What is the best practice for using Access Tokens in apis?
$identity = self::find()->where(['access_token' => $token])->select('id')->one(); if ($identity == null) return null; //As per the recommendations, https://www.yiiframework.com/doc/api/2.0/yii-web-identityinterface#findIdentityByAccessToken()-detail // null should be re turned here. if (!Yii::$app->authManager->checkAccess($identity->id, Permissions::IdentifyWithAccessToken)) return null; return $identity;
this doesn't seem all that secure having it in plain text.
$model->link('organisationUsers', Yii::$app->user->identity, ['status' => 10, 'role' => 10]);.
in /app/vendor/yiisoft/yii2/db/BaseActiveRecord.php at line 1350– yii\db\BaseActiveRecord::bindModels(['organisation_id' => 'id'], common\models\User, common\models\Organisation).
I have tried
'container' => [ 'definitions' => [ yii\base\Model::class => app\models\Model::class,
but that doesn't do anything. The models dont have any of the
app\models\Model::class and are not instances of it
this always fails
$model = TestModel::findOne(['id' => 3]); $success = $model instanceof \app\models\Model; if (!$success) Yii::$app->session->addFlash('danger', 'failed to override');
Hey guys, I have a question regarding the yiisoft/yii2-queue and the monitor extension from Roman Zhuravlev. I need to implement a worker affinity for jobs.
I start worker using supervisor in docker container (1 or many):
[group:worker] programs=yii-queue-worker priority=40 [program:yii-queue-worker] command=yii queue/listen --verbose=1 --php-binary=/usr/local/bin/php --isolate=1 --color=0 --interactive=0 process_name=%(program_name)s_%(process_num)02d autostart=true numprocs=5 autorestart=true startsecs=14 startretries=20 user=application stdout_logfile = /dev/stdout stdout_logfile_maxbytes = 0 stderr_logfile = /dev/stderr stderr_logfile_maxbytes = 0
So I have 5 isolated queue listeners up and running in each container / host.
Now a job A was pushed for the first time and gets executed by worker A on host A.
Then I remember (using a simple key value store in redis) that job A was processed by worker A on host A.
Works fine so far and I can access that information everywhere.
Now the next time job A comes I need to ensure that this job A will only gets executed on worker A on host A.
Until worker A on host A is busy that job A needs to wait.
I tried a lot to get that done but job A gets always executed by one of the next free available worker process.
I use own extended classes doing nothing atm then calling the parent class methods to be able to customize.
Here`s my config:
'queue' => [ 'class' => ProjectQueue::class, 'commandClass' => ProjectCommand::class, 'as log' => [ 'class' => ProjectLogBehavior::class, 'autoFlush' => true, ], 'as jobMonitor' => [ 'class' => ProjectJobMonitor::class, ], 'as workerMonitor' => [ 'class' => ProjectWorkerMonitor::class, ], 'mutex' => [ 'class' => MysqlMutex::class, 'db' => 'db', 'autoRelease' => false, ], 'mutexTimeout' => 10, 'db' => 'db', 'channel' => 'master-queue', 'deleteReleased' => true, 'ttr' => 200, 'attempts' => 1, ],
Now my question. Is that possible at all? And where I need to slide in to get that done.
Thanks in advance !
🎁 Yii news 2020, issue 8: https://opencollective.com/yiisoft/updates/yii-news-2020-issue-8
🎄 Happy New Year!