2 files added
7 files modified
117 ■■■■ changed files
app/Http/Controllers/Profiles/ProfilesController.php 10 ●●●● patch | view | raw | blame | history
app/Http/Requests/SSOFormRequest.php 3 ●●●● patch | view | raw | blame | history
app/Vola/Services/FakeSSODatabase/FakeSSODatabaseHandler.php 34 ●●●●● patch | view | raw | blame | history
app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php 24 ●●●● patch | view | raw | blame | history
database/seeders/UsersTableSeeder.php 9 ●●●●● patch | view | raw | blame | history
resources/views/vodafone_fake_sso/response_templates/legacy/getWebcustomerInformation.blade.php 19 ●●●●● patch | view | raw | blame | history
resources/views/vodafone_fake_sso/response_templates/picasso/getWebcustomerInformation.blade.php 13 ●●●●● patch | view | raw | blame | history
routes/picasso.php 3 ●●●● patch | view | raw | blame | history
routes/sso.php 2 ●●●●● patch | view | raw | blame | history
app/Http/Controllers/Profiles/ProfilesController.php
@@ -10,7 +10,6 @@
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Ramsey\Uuid\Provider\Time\FixedTimeProvider;
class ProfilesController extends Controller
{
@@ -18,8 +17,11 @@
    public function __construct(Request $request)
    {
        $this->authorized = true;
        if (in_array($request->ip(),config('devtools.access_whitelist',[]))) {
            $this->authorized = true;
        } else {
            return response()->json(["status" => 401, "response" => "unauthorized"]);
        }
    }
    public function getFakeSSO(Request $request)
@@ -85,9 +87,11 @@
        $productsList = $databaseHandler->readProducts();
        return view('vodafone_fake_sso.show-write-view', [ 'productsList' => $productsList ]);
    }
    public function saveUser(SSOFormRequest $request) {
        $data = $request->all();
        $databaseHandler = new FakeSSODatabaseHandler;
        $databaseHandler->insertDataIntoTables($data);
        return view("vodafone_fake_sso.db-create-view");
    }
app/Http/Requests/SSOFormRequest.php
@@ -2,6 +2,7 @@
namespace App\Http\Requests;
use App\Rules\Base64String;
use Illuminate\Foundation\Http\FormRequest;
class SSOFormRequest extends FormRequest
@@ -24,7 +25,7 @@
    public function rules()
    {
        return [
            'EmailAddress' => 'required|email|not_regex:/<[^>]+?>/',
            'EmailAddress' => ['required', 'email', new ScriptCheck()],
            'Name' => 'required|not_regex:/<[^>]+?>/',
            'Surname' => 'required|not_regex:/<[^>]+?>/',
            'sim_1' => 'digits_between:10,10|not_regex:/<[^>]+?>/'
app/Vola/Services/FakeSSODatabase/FakeSSODatabaseHandler.php
@@ -1,4 +1,5 @@
<?php
namespace App\Vola\Services\FakeSSODatabase;
use App\Models\Msisdn;
@@ -6,34 +7,37 @@
use App\Models\VodafoneUser;
use Exception;
use Illuminate\Support\Facades\DB;
use PDOException;
class FakeSSODatabaseHandler {
class FakeSSODatabaseHandler
{
    public function insertDataIntoTables(array $data) {
        try{
            $userModel = VodafoneUser::create(['Name' => $data["Name"],
                                               'Surname' => $data["Surname"],
                                               'EmailAddress' => $data["EmailAddress"]]);
            $msisdnModel = Msisdn::create(['MSISDN' => $data["sim_1"],
                                           'IdPiano' => $data['IdPiano'],
                                           'LinkedUser' => $userModel->id]);
    public function insertDataIntoTables(array $data)
    {
        try {
            $userModel = VodafoneUser::create([
                'Name' => $data["Name"],
                'Surname' => $data["Surname"],
                'EmailAddress' => $data["EmailAddress"]
            ]);
            $msisdnModel = Msisdn::create([
                'MSISDN' => $data["sim_1"],
                'IdPiano' => $data['IdPiano'],
                'LinkedUser' => $userModel->id
            ]);
            foreach ($data["products_select"] as $index => $value) {
                $product = Products::find($value);
                $product->msisdn()->attach($msisdnModel->id);
            }
        }catch(PDOException $e) {
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }
    public function readProducts(): array {
    public function readProducts(): array
    {
        $productsList = Products::select("Name", "id")->get()?->toArray();
        return $productsList;
    }
app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php
@@ -2,6 +2,7 @@
namespace App\Vola\Services\VolaFakeHTTPResponder;
use App\Models\VodafoneUser;
use App\Vola\Classes\Utils;
use Cookie;
use GuzzleHttp\Promise\RejectedPromise;
@@ -15,9 +16,14 @@
    public array $data;
    private array $xmlResponses;
    protected string $pathTemplateFolderLegacy;
    protected string $pathTemplateFolderPicasso;
    public function __construct()
    {
        $this->xmlResponses = config('devtools.fake_sso_profiles');
        $this->pathTemplateFolderLegacy = 'vodafone_fake_sso.response_templates.legacy';
        $this->pathTemplateFolderPicasso = 'vodafone_fake_sso.response_templates.picasso';
    }
    public function getModelBasedResponses(Request $request): array
@@ -27,7 +33,10 @@
        if (isset($profile)) {
            $responseContent["data"] = 'test. funziono ma le logiche non sono state ancora implementate';
            $uriParts = explode("?", $request->url());
            $method = Str::afterLast($uriParts[0], "/");
            $responseContent["data"] = $this->fillXmlResponses($method, $profile, $picassoRequest);
            $responseContent["status"] = 200;
            \RequestLogger::logProcessedRequest($request, $responseContent, (($picassoRequest) ? 'Picasso' : 'SSO Legacy') );
            return $responseContent;
@@ -40,6 +49,15 @@
            ];
        }
    }
    public function fillXMLResponses(string $method, string $profile, bool $picasso): string
    {
        $user = VodafoneUser::where(['id' => $profile])->first();
        //arguments
        $viewFolder = ($picasso) ? $this->pathTemplateFolderPicasso : $this->pathTemplateFolderLegacy;
        $view = $viewFolder . "." . $method;
        return view($view, ['user' => $user])->render(); //views/response_templates/legacy/*.blade.php ?? *.xml
    }
    public function getResponses(Request $request, $selectedUser, $picasso = false): string|array
@@ -165,9 +183,9 @@
            case 'no-method-on-user':
                return 'This method response is not set for this user. Check this server database.';
            case 'no-method':
                return 'Couldnt detect requested method. Check your request url.';
                return 'Couldnt identify requested method. Check your request url.';
            default:
                return 'Couldnt detect proper response.';
                return 'Couldnt identify proper response.';
        }
    }
database/seeders/UsersTableSeeder.php
@@ -2,6 +2,7 @@
namespace Database\Seeders;
use App\Models\Msisdn;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
@@ -19,10 +20,18 @@
            'email' => 'davide.cucurnia@vola.it',
            'password' => bcrypt('Password01'),
        ]);
        // scrivo l'utente
        // scrivo le sim associate all'utente
        // PRESUMENDO CHE I PRODOTTI MENZIONATI ESISTANO GIA cerco i prodotti che dovrei associare alla sim
        // scrivo relazioni prodotti - sim
        DB::table('users')->insert([
            'username' => 'vola02',
            'email' => 'cristiano.mancini@vola.it',
            'password' => bcrypt('Password02'),
        ]);
        // scrivo l'utente
        // scrivo le sim associate all'utente
        // PRESUMENDO CHE I PRODOTTI MENZIONATI ESISTANO GIA cerco i prodotti che dovrei associare alla sim
        // scrivo relazioni prodotti - sim
    }
}
resources/views/vodafone_fake_sso/response_templates/legacy/getWebcustomerInformation.blade.php
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<getWebCustomerInformation>
    <EmailAddress>{{$user->EmailAddress}}</EmailAddress>
    <Sex></Sex>
    <Surname>DoppiaSim</Surname>
    <BirthProvinceName>LUCCA</BirthProvinceName>
    <BirthPlace>VIAREGGIO</BirthPlace>
    <Type_ID>2</Type_ID>
    <Birthdate>Fri Apr 16 00:00:00 MET 1971</Birthdate>
    <HomeProvinceName>LUCCA</HomeProvinceName>
    <Custcode>5.123123</Custcode>
    <ProfileIdentifier>BUSINESS_EMPLOYEE</ProfileIdentifier>
    <MicroBusiness>false</MicroBusiness>
    <HomePhone></HomePhone>
    <Address>VIA BERNARDINO</Address>
    <FiscalCode>MNCCST71D16L833U</FiscalCode>
    <Name>DoppiaSim</Name>
    <Username>DoppiaSim</Username>
</getWebCustomerInformation>
resources/views/vodafone_fake_sso/response_templates/picasso/getWebcustomerInformation.blade.php
New file
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<getWebCustomerInformation>
    <errorCode>0</errorCode>
    <Surname>DoppiaSim</Surname>
    <Name>DoppiaSim</Name>
    <Username>DoppiaSim</Username>
    <EmailAddress>davide.cucurnia@vola.it</EmailAddress>
    <BirthProvinceName>Non disponibile</BirthProvinceName>
    <HomeProvinceName>Non disponibile</HomeProvinceName>
    <Custcode>5.123123</Custcode>
    <MicroBusiness>false</MicroBusiness>
    <ProfileIdentifier>BUSINESS_EMPLOYEE</ProfileIdentifier>
</getWebCustomerInformation>'
routes/picasso.php
@@ -1,7 +1,6 @@
<?php
Route::group(['prefix' => 'picasso', 'middleware' => ['web']], function ()
{
Route::group(['prefix' => 'picasso', 'middleware' => ['web']], function () {
    Route::get('/auth/islogged', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
    Route::get('/services/getWebcustomerInformation', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
    Route::get('/services/getMsisdnList', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
routes/sso.php
@@ -2,6 +2,7 @@
Route::group(['prefix' => 'sso', 'middleware' => ['web']], function ()
{
    // metodi vecchi basati sulle stringhe xml giĆ  precompilate
    Route::get('/islogged', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
    Route::get('/getWebcustomerInformation', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
    Route::get('/getSelectedMSISDNDetails', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
@@ -9,6 +10,7 @@
    Route::get('/getMSISDNDetails', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
    Route::get('/getInfoActivationWSC', '\App\Http\Controllers\FakeResponder\FakeResponder@manageLegacyRequest');
    // metodi nuovi basati su db
    Route::get('/v2/islogged', '\App\Http\Controllers\FakeResponder\FakeResponder@modelBasedRequest');
    Route::get('/v2/getWebcustomerInformation', '\App\Http\Controllers\FakeResponder\FakeResponder@modelBasedRequest');
    Route::get('/v2/getSelectedMSISDNDetails', '\App\Http\Controllers\FakeResponder\FakeResponder@modelBasedRequest');