diff --git a/.env b/.env index 35dde88..b89f992 100644 --- a/.env +++ b/.env @@ -55,8 +55,8 @@ RNRPHDEV="https://unioilstationlocatorapi.lbteksystems.com/api/" #PAYMAYA_SANDBOX_SECRET_KEY="sk-X8qolYjy62kIzEbr0QRK1h4b4KDVHaNcwMYk39jInSl:" -PASSPORT_ADMIN_CLIENT_ID=2 -PASSPORT_ADMIN_CLIENT_SECRET=fvv0uTTB5mKcxwuoanQRmly9dUqgadbyPNWdXlc1 +PASSPORT_ADMIN_CLIENT_ID=9eec8533-a8e7-4c28-b5b3-39c0a4479b1f +PASSPORT_ADMIN_CLIENT_SECRET=UCtG5jPOooiHZUJ8qSNMXajH6qzNxZ9n0VVSe2Ge M360_BROADCAST_URL=https://smsapi.mobile360.ph/v2/api/broadcast M360_BROADCAST_USERNAME=unioil diff --git a/.gitignore b/.gitignore index 6421944..1301434 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ npm-debug.log yarn-error.log .phpunit.result.cache +storage/oauth/*.key diff --git a/app/Http/Controllers/API/InAppNotificationController.php b/app/Http/Controllers/API/InAppNotificationController.php index ac11517..4053c0e 100644 --- a/app/Http/Controllers/API/InAppNotificationController.php +++ b/app/Http/Controllers/API/InAppNotificationController.php @@ -38,7 +38,14 @@ class InAppNotificationController extends Controller // Get all Notifications from the Notifications Table $list = InAppNotifications::all(); if(!count($list)) return $this->format->success("No records found",[]); // Check if notifications are present and return the appropriate response - return response()->json(["code"=>200,"message"=>"SUCCESS","data"=>$otp], 200); + return response()->json([ + "code" => 200, + "message" => "SUCCESS", + "data" => [ + "notifications" => $list, + "otp" => $otp, + ] + ], 200); } /** diff --git a/app/Http/Controllers/API/StationController.php b/app/Http/Controllers/API/StationController.php index 2380a14..2bb9d03 100644 --- a/app/Http/Controllers/API/StationController.php +++ b/app/Http/Controllers/API/StationController.php @@ -2,25 +2,27 @@ namespace App\Http\Controllers\API; -use Illuminate\Http\Request; -use App\Http\Controllers\Controller; -use App\Contracts\StationResourceInterface; -use App\Contracts\AdminActionLogsInterface; -use App\Contracts\LcardActionLogsInterface; -use App\Contracts\StationFuelPricesInterface; -use App\Contracts\StationFavoriteResourceInterface; -// use App\Http\Resources\StationResource; -use App\Libraries\ParameterHelper; -use App\Helpers\CurrentUserHelper; -use App\Helpers\StringHelper; -use App\Helpers\HttpStatusCode; -use App\Http\Resources\StationLocatorResource; -use App\Http\Resources\StationSearchResource; -use App\Libraries\StratuscastLibrary; -use App\Libraries\RNRPHLibrary; -use App\Libraries\StaticContents; +use App\User; +use App\Admin; use App\Station; use App\CodeCity; +use Illuminate\Http\Request; +use App\Helpers\StringHelper; +use App\Helpers\HttpStatusCode; +// use App\Http\Resources\StationResource; +use App\Libraries\RNRPHLibrary; +use App\Libraries\StaticContents; +use App\Helpers\CurrentUserHelper; +use App\Libraries\ParameterHelper; +use App\Http\Controllers\Controller; +use App\Libraries\StratuscastLibrary; +use App\Contracts\AdminActionLogsInterface; +use App\Contracts\LcardActionLogsInterface; +use App\Contracts\StationResourceInterface; +use App\Contracts\StationFuelPricesInterface; +use App\Http\Resources\StationSearchResource; +use App\Http\Resources\StationLocatorResource; +use App\Contracts\StationFavoriteResourceInterface; class StationController extends Controller { @@ -138,6 +140,7 @@ class StationController extends Controller public function get_viewable() { $details = $this->station->getByField('is_viewable',1); + if(count($details) > 0) { @@ -146,10 +149,22 @@ class StationController extends Controller { if($value['is_active'] == 1) { + $city = CodeCity::where('city_id', $value['city_id'])->first(); + $cityName = $value['city_id'] == 0 ? 'Unassigned' : ($city->name ?? 'Unknown'); + + $user = User::where('id', $value['created_by'])->first(); + $userName = $value['created_by'] == 0 ? 'Unassigned' : ($user->name ?? 'Unknown'); + + $parsed[] = array( 'station_uuid' => $value['station_uuid'], 'code' => $value['code'], 'description' => $value['description'], + 'city' => $cityName, + 'created_at' => $value['created_at'], + 'created_by' => $userName, + 'modified_by' => $value['modified_by'], + 'modified_at' => $value['updated_at'], ); } } diff --git a/app/Http/Controllers/API/UserController.php b/app/Http/Controllers/API/UserController.php index 63a0e7a..39ccd86 100644 --- a/app/Http/Controllers/API/UserController.php +++ b/app/Http/Controllers/API/UserController.php @@ -176,7 +176,7 @@ class UserController extends Controller $data = [ 'grant_type' => 'password', - 'client_id' => env("PASSPORT_ADMIN_CLIENT_ID", 2), + 'client_id' => env("PASSPORT_ADMIN_CLIENT_ID", 9), 'client_secret' => env("PASSPORT_ADMIN_CLIENT_SECRET", "test"), 'username' => $admin[0]['email'], 'password' => request('password'), diff --git a/app/Http/Resources/ReportMobileUsageResource.php b/app/Http/Resources/ReportMobileUsageResource.php index e00ce0f..197f0bc 100644 --- a/app/Http/Resources/ReportMobileUsageResource.php +++ b/app/Http/Resources/ReportMobileUsageResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources; use App\Contracts\RatingsResourceInterface; +use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; class ReportMobileUsageResource extends JsonResource @@ -18,7 +19,8 @@ class ReportMobileUsageResource extends JsonResource $this->withoutWrapping(); return [ - 'date' => $this->date->toDateString(), + 'mba_id' => $this->mba_id, + 'date' => Carbon::parse($this->date)->toDateString(), 'active' => $this->active, 'inactive' => $this->inactive, 'locked' => $this->locked, diff --git a/app/Http/Resources/ReportStationRatingsResource.php b/app/Http/Resources/ReportStationRatingsResource.php index f28a74d..1a52c34 100644 --- a/app/Http/Resources/ReportStationRatingsResource.php +++ b/app/Http/Resources/ReportStationRatingsResource.php @@ -17,6 +17,7 @@ class ReportStationRatingsResource extends JsonResource $this->withoutWrapping(); return [ + 'rating_uuid' => $this->rating_uuid, 'date' => $this->created_at != null ? date('d-M-Y h:i A',strtotime($this->created_at)) : '', 'card_number' => ($this->loyaltyCard) ? $this->loyaltyCard->card_number : '', 'invoice' => isset($this->payment->trans_num)? $this->payment->trans_num : '', diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 675e262..5dff5fc 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -27,6 +27,7 @@ class AppServiceProvider extends ServiceProvider public function boot() { Schema::defaultStringLength(128); + Passport::loadKeysFrom(storage_path('oauth')); $this->registerPolicies(); // Passport::routes(); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index a18935b..5db8d9f 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -34,5 +34,8 @@ class AuthServiceProvider extends ServiceProvider Passport::refreshTokensExpireIn(Carbon::now()->addMonths(10)); Passport::enableImplicitGrant(); + + Passport::loadKeysFrom(storage_path('oauth')); + } } diff --git a/app/Providers/CustomPassportServiceProvider.php b/app/Providers/CustomPassportServiceProvider.php index 1f9b279..3b5eded 100644 --- a/app/Providers/CustomPassportServiceProvider.php +++ b/app/Providers/CustomPassportServiceProvider.php @@ -17,7 +17,7 @@ class CustomPassportServiceProvider extends PassportServiceProvider * * @return void */ - public function boot() + public function boot(): void { parent::boot(); } @@ -27,7 +27,7 @@ class CustomPassportServiceProvider extends PassportServiceProvider * * @return void */ - public function register() + public function register(): void { parent::register(); } @@ -37,7 +37,7 @@ class CustomPassportServiceProvider extends PassportServiceProvider * * @return void */ - protected function registerAuthorizationServer() + protected function registerAuthorizationServer(): void { $this->app->singleton(AuthorizationServer::class, function () { return tap($this->makeAuthorizationServer(), function ($server) { diff --git a/app/Services/LoyaltyCardService.php b/app/Services/LoyaltyCardService.php index fb70aeb..34d41df 100644 --- a/app/Services/LoyaltyCardService.php +++ b/app/Services/LoyaltyCardService.php @@ -41,6 +41,10 @@ class LoyaltyCardService implements LoyaltyCardResourceInterface $pagination = ListHelper::validatePagination($params['page_size'],$params['page']); $list = LoyaltyCard::with(['personalDetails','codeVehicleOwn','codeCivilStatus','codeGender','codeCardType']); + if (!is_null($params['locked'])) { + $list->where('is_locked', $params['locked']); + } + if($params['search'] != null) { // $list = $list->whereHas('personalDetails', function ($query) use ($params) { diff --git a/composer.json b/composer.json index 907e6cc..9035623 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ }, "require-dev": { "beyondcode/laravel-dump-server": "^2.0", - "fakerphp/faker": "*", + "fakerphp/faker": "^1.24", "filp/whoops": "^2.0", "mockery/mockery": "^1.0", "nunomaduro/collision": "^8.0", diff --git a/composer.lock b/composer.lock index 82a31c3..4925695 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fd8524023e7a69526ee6118304ac60d3", + "content-hash": "67d63186693e4cb8ee3d78df3abc17a0", "packages": [ { "name": "aws/aws-crt-php", @@ -9757,12 +9757,12 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.3.6" }, - "platform-dev": {}, + "platform-dev": [], "plugin-api-version": "2.6.0" } diff --git a/config/passport.php b/config/passport.php new file mode 100644 index 0000000..c3b41b3 --- /dev/null +++ b/config/passport.php @@ -0,0 +1,46 @@ + 'web', + + /* + |-------------------------------------------------------------------------- + | Encryption Keys + |-------------------------------------------------------------------------- + | + | Passport uses encryption keys while generating secure access tokens for + | your application. By default, the keys are stored as local files but + | can be set via environment variables when that is more convenient. + | + */ + + 'private_key' => env('PASSPORT_PRIVATE_KEY'), + + 'public_key' => env('PASSPORT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passport Database Connection + |-------------------------------------------------------------------------- + | + | By default, Passport's models will utilize your application's default + | database connection. If you wish to use a different connection you + | may specify the configured name of the database connection here. + | + */ + + 'connection' => env('PASSPORT_CONNECTION'), + +]; diff --git a/database/migrations/2024_06_01_000001_create_oauth_device_codes_table.php b/database/migrations/2024_06_01_000001_create_oauth_device_codes_table.php new file mode 100644 index 0000000..ea07831 --- /dev/null +++ b/database/migrations/2024_06_01_000001_create_oauth_device_codes_table.php @@ -0,0 +1,42 @@ +char('id', 80)->primary(); + $table->foreignId('user_id')->nullable()->index(); + $table->foreignUuid('client_id')->index(); + $table->char('user_code', 8)->unique(); + $table->text('scopes'); + $table->boolean('revoked'); + $table->dateTime('user_approved_at')->nullable(); + $table->dateTime('last_polled_at')->nullable(); + $table->dateTime('expires_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('oauth_device_codes'); + } + + /** + * Get the migration connection name. + */ + public function getConnection(): ?string + { + return $this->connection ?? config('passport.connection'); + } +}; diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 22340d9..29ec09a 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -11,7 +11,7 @@ class DatabaseSeeder extends Seeder */ public function run() { - // $this->call(MemberSeeder::class); + $this->call(MemberSeeder::class); $this->call(AdminUserSeeder::class); $this->call(CodeGenderSeeder::class); $this->call(StationTableSeeder::class); @@ -19,11 +19,11 @@ class DatabaseSeeder extends Seeder $this->call(CodeCivilStatusTableSeeder::class); $this->call(CodeVehicleOwnTableSeeder::class); $this->call(SystemPreferenceTableSeeder::class); - // $this->call(TopUpTableSeeder::class); - // $this->call(PaymentsTableSeeder::class); - // $this->call(RatingsTableSeeder::class); - // $this->call(PhotoSliderTableSeeder::class); - // $this->call(MobileAnalyticsTableSeeder::class); - // $this->call(TermsAndPolicyTableSeeder::class); + $this->call(TopUpTableSeeder::class); + $this->call(PaymentsTableSeeder::class); + $this->call(RatingsTableSeeder::class); + $this->call(PhotoSliderTableSeeder::class); + $this->call(MobileAnalyticsTableSeeder::class); + $this->call(TermsAndPolicyTableSeeder::class); } } diff --git a/database/seeds/MemberSeeder.php b/database/seeds/MemberSeeder.php index 1556482..deb1a23 100644 --- a/database/seeds/MemberSeeder.php +++ b/database/seeds/MemberSeeder.php @@ -23,7 +23,7 @@ class MemberSeeder extends Seeder $loyalty_card = array(); $users = array(); - for ($i=1; $i <= 200; $i++) + for ($i=1; $i <= 10; $i++) { $uuid = new UuidHelper; $pd_uuid = $uuid->generate_uuid1(); @@ -65,11 +65,11 @@ class MemberSeeder extends Seeder 'gender_id' => 1, 'vo_id' => 1, 'is_validated' => $valitated ? 1 : 0, - 'validation_dt' => $valitated ? $valitated : 0, - 'is_locked' => $i > 10 ? 1 : 0, + 'validation_dt' => $valitated ? $valitated : Null, + 'is_locked' => $i > 10 ? 1 : Null, 'lock_code' => $i > 10 ? '01' : '', - 'lock_dt' => $i > 10 ? date('Y-m-d H:i:s') : '', - 'created_at' => $registration, + 'lock_dt' => $i > 10 ? date('Y-m-d H:i:s') : Null, + 'created_at' => $registration, 'last_synchronized' => date('Y-m-d H:i:s'), ); diff --git a/id.PHP_EOL b/id.PHP_EOL new file mode 100644 index 0000000..ffc6a5f --- /dev/null +++ b/id.PHP_EOL @@ -0,0 +1 @@ +Client ID: .- diff --git a/routes/api.php b/routes/api.php index 0d5e29f..b064a2b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -15,7 +15,7 @@ use App\Http\Controllers\API\AdminController; | */ -// cms login +// cms login done Route::post('cms/login_username', 'API\UserController@cms_usernameLogin'); Route::post('cms/login_password', 'API\UserController@cms_login'); Route::post('cms/login_changePassword', 'API\UserController@cms_changePassword'); diff --git a/secret.PHP_EOL b/secret.PHP_EOL new file mode 100644 index 0000000..3a8271d --- /dev/null +++ b/secret.PHP_EOL @@ -0,0 +1 @@ +Client Secret: .- diff --git a/storage/oauth-private.key b/storage/oauth-private.key deleted file mode 100755 index 23fbd74..0000000 --- a/storage/oauth-private.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/storage/oauth-public.key b/storage/oauth-public.key deleted file mode 100755 index d17e8c4..0000000 --- a/storage/oauth-public.key +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzLI0c0PEyprKQ7Ukzk52 -zazpvFk8njjCztsg1EE0Ak2YpAPerSFaAh5HJacqd3CsTO4xdnPslMEOkGzCwpBH -V6F18cNnCH247eU5HbURIFyC7EKBOEBegXaaqSsJrP2K7XWCoTqKlmTEsWkBVe/Q -TEN74mBvQh7i+vO+18y8pNEK3cE91jHukGV02aeBRP8D945z47p3E7i85O1U8QKT -/sX1a26lsnUaptt3pG1cd8gkGbPgADOE57jjRVBFliT8oBAL2tcYnVHbaHp+GYqM -LpdHFoXy5IpmNZ4aI4Pib6bCUKb8NqzTffrTKHK/DKJVKzQ1PPp2kuugrHxBeytN -TjPpCmkMmhEno6olBXU6+MCRGjNey0ABOHkLbyXJ6b6OYCZk7HpUMZ4uJ4/FiDeL -uRG0NH7ccek9LD4zBy63R2UGpUb8MAmgL+SMWwEWs+zAYxk0gQDSUZpcAeHU+3uv -a/Qe/zUiyKbkX4iqC0oGqJLC+nnRplUnGKB5agEDjgbxeRbUdaEXXtF5e56nNhQq -BGS7aBJ/f0+yNQtQuZMX5f8+C0nZb9RVHD1XLsaLMKRVIZA/I9TeH+in9yNtfXKx -xxlleRhpER7MuW5Ods5ZtHsEDSf0TjXZu8GdHYF6MobfZObnw2+xTrVTkXo7NY3A -gweWPM7b0k/ZgiVRTpGeWL0CAwEAAQ== ------END PUBLIC KEY----- \ No newline at end of file