mirror of
https://github.com/elyby/accounts.git
synced 2025-05-31 14:11:46 +05:30
Тестовые данные теперь интегрируются через аспектную библиотеку
This commit is contained in:
@@ -8,6 +8,7 @@ use Go\Core\AspectKernel as BaseAspectKernel;
|
||||
class AspectKernel extends BaseAspectKernel {
|
||||
|
||||
protected function configureAop(AspectContainer $container): void {
|
||||
$container->registerAspect(new aspects\MockDataAspect());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
177
api/aop/aspects/MockDataAspect.php
Normal file
177
api/aop/aspects/MockDataAspect.php
Normal file
@@ -0,0 +1,177 @@
|
||||
<?php
|
||||
namespace api\aop\aspects;
|
||||
|
||||
use Go\Aop\Aspect;
|
||||
use Go\Aop\Intercept\MethodInvocation;
|
||||
use Go\Lang\Annotation\Around;
|
||||
use Yii;
|
||||
use yii\web\Request;
|
||||
|
||||
class MockDataAspect implements Aspect {
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation Invocation
|
||||
* @Around("execution(public api\controllers\SignupController->actionIndex(*))")
|
||||
*/
|
||||
public function beforeSignup(MethodInvocation $invocation) {
|
||||
$email = $this->getRequest()->post('email');
|
||||
if ($email === 'let-me-register@ely.by') {
|
||||
return ['success' => true];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\controllers\SignupController->actionRepeatMessage(*))")
|
||||
*/
|
||||
public function beforeRepeatMessage(MethodInvocation $invocation) {
|
||||
$email = $this->getRequest()->post('email');
|
||||
if ($email === 'let-me-register@ely.by' || $email === 'let-me-repeat@ely.by') {
|
||||
return ['success' => true];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\controllers\SignupController->actionConfirm(*))")
|
||||
*/
|
||||
public function beforeSignupConfirm(MethodInvocation $invocation) {
|
||||
$email = $this->getRequest()->post('key');
|
||||
if ($email === 'LETMEIN') {
|
||||
return [
|
||||
'success' => true,
|
||||
'access_token' => 'dummy_token',
|
||||
'expires_in' => time() + 60,
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\controllers\AuthenticationController->actionForgotPassword(*))")
|
||||
*/
|
||||
public function beforeForgotPassword(MethodInvocation $invocation) {
|
||||
$login = $this->getRequest()->post('login');
|
||||
if ($login === 'let-me-recover@ely.by') {
|
||||
return [
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'canRepeatIn' => time() + 60,
|
||||
'repeatFrequency' => 60,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\controllers\AuthenticationController->actionRecoverPassword(*))")
|
||||
*/
|
||||
public function beforeRecoverPassword(MethodInvocation $invocation) {
|
||||
$key = $this->getRequest()->post('key');
|
||||
if ($key === 'LETMEIN') {
|
||||
return [
|
||||
'success' => true,
|
||||
'access_token' => 'dummy_token',
|
||||
'expires_in' => time() + 60,
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\modules\accounts\controllers\DefaultController->actionGet(*))")
|
||||
*/
|
||||
public function beforeAccountGet(MethodInvocation $invocation) {
|
||||
$httpAuth = $this->getRequest()->getHeaders()->get('authorization');
|
||||
if ($httpAuth === 'Bearer dummy_token') {
|
||||
return [
|
||||
'id' => 1,
|
||||
'uuid' => 'f63cd5e1-680f-4c2d-baa2-cc7bb174b71a',
|
||||
'username' => 'dummy',
|
||||
'isOtpEnabled' => false,
|
||||
'registeredAt' => time(),
|
||||
'lang' => 'en',
|
||||
'elyProfileLink' => 'http://ely.by/u1',
|
||||
'email' => 'let-me-register@ely.by',
|
||||
'isActive' => true,
|
||||
'passwordChangedAt' => time(),
|
||||
'hasMojangUsernameCollision' => false,
|
||||
'shouldAcceptRules' => false,
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\modules\accounts\actions\EmailVerificationAction->run(*))")
|
||||
*/
|
||||
public function beforeAccountEmailVerification(MethodInvocation $invocation) {
|
||||
$httpAuth = $this->getRequest()->getHeaders()->get('authorization');
|
||||
if ($httpAuth === 'Bearer dummy_token') {
|
||||
$password = $this->getRequest()->post('password');
|
||||
if (empty($password)) {
|
||||
return [
|
||||
'success' => false,
|
||||
'errors' => [
|
||||
'password' => 'error.password_required',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'success' => true,
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\modules\accounts\actions\NewEmailVerificationAction->run(*))")
|
||||
*/
|
||||
public function beforeAccountNewEmailVerification(MethodInvocation $invocation) {
|
||||
$key = $this->getRequest()->post('key');
|
||||
if ($key === 'LETMEIN') {
|
||||
return [
|
||||
'success' => true,
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodInvocation $invocation
|
||||
* @Around("execution(public api\modules\accounts\actions\ChangeEmailAction->run(*))")
|
||||
*/
|
||||
public function beforeAccountChangeEmail(MethodInvocation $invocation) {
|
||||
$key = $this->getRequest()->post('key');
|
||||
if ($key === 'LETMEIN') {
|
||||
return [
|
||||
'success' => true,
|
||||
'email' => 'brand-new-email@ely.by',
|
||||
];
|
||||
}
|
||||
|
||||
return $invocation->proceed();
|
||||
}
|
||||
|
||||
private function getRequest(): Request {
|
||||
return Yii::$app->getRequest();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user