Implemented the ability to get information about the current account by 0 id

This commit is contained in:
ErickSkrauch 2019-01-24 19:29:46 +03:00
parent 0cfa64890d
commit 918501da81
2 changed files with 33 additions and 5 deletions

View File

@ -15,9 +15,9 @@ use yii\web\NotFoundHttpException;
class DefaultController extends Controller {
public function behaviors(): array {
$paramsCallback = function() {
$id = Yii::$app->request->get('id');
if ($id === null) {
$paramsCallback = function(): array {
$id = (int)Yii::$app->request->get('id');
if ($id === 0) {
$identity = Yii::$app->user->getIdentity();
if ($identity !== null) {
$account = $identity->getAccount();
@ -132,7 +132,7 @@ class DefaultController extends Controller {
return (new TwoFactorAuthInfo($this->findAccount($id)))->getCredentials();
}
public function bindActionParams($action, $params) {
public function bindActionParams($action, $params): array {
if (!isset($params['id'])) {
/** @noinspection NullPointerExceptionInspection */
$account = Yii::$app->user->getIdentity()->getAccount();
@ -145,7 +145,13 @@ class DefaultController extends Controller {
}
private function findAccount(int $id): Account {
$account = Account::findOne($id);
if ($id === 0) {
/** @noinspection NullPointerExceptionInspection */
$account = Yii::$app->user->getIdentity()->getAccount();
} else {
$account = Account::findOne($id);
}
if ($account === null) {
throw new NotFoundHttpException();
}

View File

@ -36,6 +36,28 @@ class GetCest {
$I->canSeeResponseJsonMatchesJsonPath('$.passwordChangedAt');
}
public function testGetInfoAboutCurrentUser(FunctionalTester $I) {
$I->wantTo('get info about user with 0 id, e.g. current');
$I->amAuthenticated();
$this->route->get(0);
$I->canSeeResponseCodeIs(200);
$I->canSeeResponseIsJson();
$I->canSeeResponseContainsJson([
'id' => 1,
'uuid' => 'df936908-b2e1-544d-96f8-2977ec213022',
'username' => 'Admin',
'isOtpEnabled' => false,
'email' => 'admin@ely.by',
'lang' => 'en',
'isActive' => true,
'hasMojangUsernameCollision' => false,
'shouldAcceptRules' => false,
'elyProfileLink' => 'http://ely.by/u1',
]);
$I->canSeeResponseJsonMatchesJsonPath('$.passwordChangedAt');
}
public function testGetWithNotAcceptedLatestRules(FunctionalTester $I) {
$accountId = $I->amAuthenticated('Veleyaba');