Fixes #17. Simplify redirect_uri validation rules to allow localhost

This commit is contained in:
ErickSkrauch
2022-12-10 02:51:47 +01:00
parent 9c39e97640
commit 262bdbc08e
2 changed files with 25 additions and 33 deletions

View File

@ -3,11 +3,12 @@ declare(strict_types=1);
namespace api\modules\oauth\models;
use Closure;
use common\helpers\Error as E;
use common\models\OauthClient;
use yii\helpers\ArrayHelper;
class ApplicationType extends BaseOauthClientType {
final class ApplicationType extends BaseOauthClientType {
public $description;
@ -16,7 +17,7 @@ class ApplicationType extends BaseOauthClientType {
public function rules(): array {
return ArrayHelper::merge(parent::rules(), [
['redirectUri', 'required', 'message' => E::REDIRECT_URI_REQUIRED],
['redirectUri', 'url', 'validSchemes' => ['[\w]+'], 'message' => E::REDIRECT_URI_INVALID],
['redirectUri', Closure::fromCallable([$this, 'validateUrl'])],
['description', 'string'],
]);
}
@ -27,4 +28,10 @@ class ApplicationType extends BaseOauthClientType {
$client->redirect_uri = $this->redirectUri;
}
private function validateUrl(string $attribute): void {
if (!filter_var($this->$attribute, FILTER_VALIDATE_URL)) {
$this->addError($attribute, E::REDIRECT_URI_INVALID);
}
}
}