File tree Expand file tree Collapse file tree 2 files changed +59
-0
lines changed
Expand file tree Collapse file tree 2 files changed +59
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Nutgram \Laravel \Middleware ;
4+
5+ use Closure ;
6+ use Illuminate \Http \Request ;
7+ use SergiX44 \Nutgram \Exception \InvalidDataException ;
8+ use SergiX44 \Nutgram \Nutgram ;
9+
10+ class ValidateWebAppData
11+ {
12+ public function handle (Request $ request , Closure $ next )
13+ {
14+ try {
15+ $ initData = $ request ->input ('initData ' , '' );
16+ $ data = app (Nutgram::class)->validateWebAppData ($ initData );
17+
18+ $ request ->attributes ->add (['webapp ' => $ data ]);
19+ return $ next ($ request );
20+ } catch (InvalidDataException ) {
21+ abort (403 );
22+ }
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ use Illuminate \Http \Request ;
4+ use Nutgram \Laravel \Middleware \ValidateWebAppData ;
5+ use SergiX44 \Nutgram \Nutgram ;
6+ use SergiX44 \Nutgram \Telegram \Web \WebAppData ;
7+ use SergiX44 \Nutgram \Testing \FakeNutgram ;
8+ use Symfony \Component \HttpKernel \Exception \HttpException ;
9+
10+ beforeEach (function () {
11+ $ this ->request = new Request ();
12+ });
13+
14+ it ('validates web app data ' , function () {
15+ /** @var FakeNutgram $bot */
16+ $ bot = app (Nutgram::class);
17+
18+ $ this ->request ->merge ([
19+ 'initData ' => $ bot ->generateWebAppData ([
20+ 'foo ' => 'bar ' ,
21+ 'auth_date ' => time (),
22+ ])
23+ ]);
24+
25+ $ middleware = new ValidateWebAppData ();
26+ $ middleware ->handle ($ this ->request , function ($ request ) {
27+ expect ($ request ->get ('webapp ' ))->toBeInstanceOf (WebAppData::class);
28+ });
29+ });
30+
31+ it ('fails to validate web app data ' , function () {
32+ $ middleware = new ValidateWebAppData ();
33+ $ middleware ->handle ($ this ->request , function ($ request ) {
34+ });
35+ })->throws (HttpException::class);
You can’t perform that action at this time.
0 commit comments