Commit iniziale

This commit is contained in:
2025-08-05 14:10:01 +02:00
commit 097b7e922d
505 changed files with 227792 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
<?php
namespace App\Http\Controllers;
use App\Models\anagrafica;
use App\Models\contatto;
use Illuminate\Http\Request;
use Google\Client;
Use Google\Service\PeopleService;
class AnagraficaController extends Controller
{
// GOOGLE CONTACTS PART
// private $google_client;
/* public function getToken()
{
$client = new Client();
$client->setApplicationName('gestionale.lavorain.cloud');
if(!is_null($client->getAccessToken())){}
elseif(!is_null(session('access_token'))) // is_null(Session::get('access_token', null))
{
$client->setAccessToken(session('access_token'));
}
else
{
$scope = array();
$scope[] = 'https://www.googleapis.com/auth/contacts';
// $client->
putenv('GOOGLE_APPLICATION_CREDENTIALS='.storage_path('app/google-calendar/service_key.json')); //this can be created with other ENV mode server side
$client->useApplicationDefaultCredentials();
$token = $client->getAccessToken();
session(['access_token' => $token]);
}
return $client;
}*/
public function getGoogleContacts()
{
$client = $this->getToken();
$service = new PeopleService($client);
$profile = $service->people_connections->listPeopleConnections('people/me', array('personFields' => 'names,emailAddresses,phoneNumbers'));
}
public function getToken()
{
$configJson =storage_path('app/google-calendar/service_key.json');
// $configJson =storage_path('app/google-calendar/people.json');
// define an application name
$applicationName = 'gestionale-di-famiglia';
// create the client
$client = new \Google_Client();
$client->setApplicationName($applicationName);
$client->setAuthConfig($configJson);
$client->setAccessType('offline'); // necessary for getting the refresh token
$client->setApprovalPrompt ('force'); // necessary for getting the refresh token
// scopes determine what google endpoints we can access. keep it simple for now.
$client->setScopes(
[
/*
\Google\Service\Oauth2::USERINFO_PROFILE,
\Google\Service\Oauth2::USERINFO_EMAIL,
\Google\Service\Oauth2::OPENID,
*/
\Google\Service\PeopleService::CONTACTS // allows reading of google drive metadata
]
);
$client->setIncludeGrantedScopes(true);
return $client;
}
public function newContact()
{
return view('anagrafica.form');
}
public function insContact(Request $request)
{
anagrafica::inserisci($request);
return view('anagrafica.list',['anagrafiche'=>anagrafica::getList()]);
}
public function schedaContact(Request $request)
{
$dati = anagrafica::getById($request['id']);
return view('anagrafica.scheda',['anagrafiche'=>$dati]);
}
public function listContact()
{
return view('anagrafica.list',['anagrafiche'=>anagrafica::getList()]);
}
public function modifica(Request $request)
{
return view('anagrafica.form',['anagrafiche'=>anagrafica::getById($request['id'])]);
}
public function getScheda(Request $request)
{
$id=$request['id'];
$anagrafica = anagrafica::getById($id);
$contatto=contatto::listContactsById($id);
return view('anagrafica.dettagli',['anagrafiche'=>$anagrafica,'contatti'=>$contatto['contatti'],'tipo'=>$contatto['tipo']]);
}
public function insOtherContact(Request $param){
$contatto=contatto::listContactsById($param['id']);
return view('anagrafica.altrocontatto',['id'=>$param['id'],'tipo'=>$contatto['tipo']]);
}
public function saveOtherContact(Request $param){
// return view('anagrafica.altrocontatto',[id=>$param['id']]);
contatto::saveNewContact($param);
$contatto=contatto::listContactsById($param['cnt_fk_anagraficaId']);
if($param['another'])
{
return view('anagrafica.altrocontatto',['tipo'=>$contatto['tipo'],'id'=>$param['cnt_fk_anagraficaId']]);
}else {
return redirect(Route('contatti'));
}
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Categorie;
class CategorieController extends Controller
{
public function listCategorie()
{
$categories = Categorie::all();
return response()->json($categories);
}
public function insCategorie(Request $request)
{
$category = new Categorie();
$category->cat_name = $request->cat_name;
$category->save();
return response()->json(['message' => 'Categoria inserita con successo'], 201);
}
public function updateCategorie(Request $request, $id)
{
$category = Categorie::findOrFail($id);
$category->cat_name = $request->cat_name;
$category->save();
return response()->json(['message' => 'Categoria aggiornata con successo']);
}
public function deleteCategorie($id)
{
$category = Categorie::findOrFail($id);
$category->delete();
return response()->json(['message' => 'Categoria eliminata con successo']);
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Conto;
class ContoController extends Controller
{
public function listConti()
{
$conti = Conto::all();
return response()->json($conti);
}
public function insConto(Request $request)
{
$conto = new Conto();
$conto->nomeConto = $request->nomeConto;
$conto->save();
return response()->json(['message' => 'Conto inserito con successo'], 201);
}
public function updateConto(Request $request, $id)
{
$conto = Conto::findOrFail($id);
$conto->nomeConto = $request->nomeConto;
$conto->save();
return response()->json(['message' => 'Conto aggiornato con successo']);
}
public function deleteConto($id)
{
$conto = Conto::findOrFail($id);
$conto->delete();
return response()->json(['message' => 'Conto eliminato con successo']);
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Movimenti;
class MovimentiController extends Controller
{
public function insMovimentiSpesa(Request $request)
{
Movimenti::insSpesa($request);
return response()->json(['message' => 'Spesa inserita con successo'], 201);
}
public function insMovimentiEntrata(Request $request)
{
Movimenti::insEntrata($request);
return response()->json(['message' => 'Entrata inserita con successo'], 201);
}
public function getList()
{
$movimenti = Movimenti::getList();
return response()->json($movimenti);
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AssociazioneController extends Controller
{
//
}

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ConfirmsPasswords;
class ConfirmPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Confirm Password Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password confirmations and
| uses a simple trait to include the behavior. You're free to explore
| this trait and override any functions that require customization.
|
*/
use ConfirmsPasswords;
/**
* Where to redirect users when the intended url fails.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('auth')->only('logout');
}
}

View File

@@ -0,0 +1,72 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\Models\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = '/home';
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\VerifiesEmails;
class VerificationController extends Controller
{
/*
|--------------------------------------------------------------------------
| Email Verification Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling email verification for any
| user that recently registered with the application. Emails may also
| be re-sent if the user didn't receive the original email message.
|
*/
use VerifiesEmails;
/**
* Where to redirect users after verification.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
}

View File

@@ -0,0 +1,137 @@
<?php
namespace App\Http\Controllers;
use App\Models\Accessori;
use App\Models\Auto;
use App\Models\Manutenzione;
use App\Models\Operazione;
use App\Models\Revisione;
use App\Models\Rifornimento;
use Illuminate\Http\Request;
class AutoController extends Controller
{
//
public function index()
{
// lista le auto inserite nel gestionale
return view('auto.list',['title'=>'Automobile', 'automobili'=>Auto::getAutoList()]);
}
public function newAuto()
{
// mostra il form di inserimento di una nuova Auto
return view('auto.form',['title'=>'Form Automobile']);
}
public function saveAuto(Request $request)
{
// Salva una nuova auto
Auto::saveAuto($request);
if ($request['another']=='on')
{
return redirect(route('auto_new'));
}
else
{
return redirect(route('auto_list'));
}
}
public function delAuto(Request $id)
{
Auto::delAuto($id);
return redirect(route('auto_list'));
}
public function getAutoDetails(request $id)
{
// Ritorna i dettagli dell'auto
/*return view('auto.detail',[
'dettagli' => Auto::getAutoById($id['id']),]);*/
return Operazione::getOperazioni($id['id']);
}
public function getTCOAuto(request $id)
{
// Ritorna la somma di tutti i costi sostenuti per l'auto
}
public function rifornimentoAuto(Request $id)
{
return view('auto.rifornimento',['id'=>$id['id'],'dettagli'=>Auto::getAutoById($id['id'])]);
}
public function manutenzioneAuto(Request $id)
{
return view('auto.manutenzione',['id'=>$id['id'],'dettagli'=>Auto::getAutoById($id['id'])]);
}
public function revisioneAuto(Request $id)
{
return view('auto.revisione',['id'=>$id['id'],'dettagli'=>Auto::getAutoById($id['id'])]);
}
public function accessoriAuto(Request $id)
{
return view('auto.accessori',['id'=>$id['id'],'dettagli'=>Auto::getAutoById($id['id'])]);
}
public function saveRifornimento(Request $request)
{
$id=Operazione::saveOperazione($request);
Rifornimento::saveRifornimento($id,$request);
return redirect(route('auto_list'));
}
public function saveManutenzione(Request $request)
{
$id=Operazione::saveOperazione($request);
Manutenzione::saveManutenzione($id,$request);
return redirect(route('auto_list'));
}
public function saveAccessori(Request $request)
{
$id=Operazione::saveOperazione($request);
Accessori::saveAccessori($id,$request);
return redirect(route('auto_list'));
}
public function saveRevisione(Request $request)
{
$id=Operazione::saveOperazione($request);
Revisione::saveRevisione($id,$request);
return redirect(route('auto_list'));
}
public function getOperazioni(Request $request)
{
$operazioni=Operazione::getOperazioni($request['id']);
// dd($operazioni);
}
public function exportPdfOperazioni(Request $id)
{
$pdf=Operazione::exportPdfOperazioni($id['id']);
}
public function getAutoById($id)
{
return json_encode(Auto::getAutoById($id));
}
public function udateAuto(Request $request)
{
Auto::updateAuto($request);
return redirect('/admin/auto');
}
}

View File

@@ -0,0 +1,16 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Avviso;
class AvvisoController extends Controller
{
//
public function saveAvviso(Request $request)
{
Avviso::newAvviso($request);
return redirect()->back();
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Categorie;
class CategorieController extends Controller
{
// Gestione delle categorie di movimento
// TODO: sistemare la gestione dei dati nel Model Categorie
public static function listCategorie(){
return view('conti.categorie.list',['categorie'=>Categorie::list()]);
}
public static function insCategorie(Request $request)
{
$validated=$request->validate([
'cat_name' => 'required',
]);
Categorie::inserisci($request);
return view('conti.categorie.list',['categorie'=>Categorie::list()]);
}
public function deleteCategorie(Request $request)
{
Categorie::deleteById($request['id']);
return redirect(route('categorie'));
}
public function updatePostCategorie(Request $request)
{
Categorie::updateNameById($request);
return redirect(route('categorie'));
}
public function apiList()
{
$categorie=Categorie::listCategorieAPI();
return json_encode($categorie);
}
public function updateCategorie($id)
{
$categorie = Categorie::getById($id);
return json_encode($categorie);
}
public function apiListSpesa()
{
$categorie=Categorie::listSpesa();
return json_encode($categorie);
}
public function apiListEntrata()
{
$categorie=Categorie::listEntrata();
return json_encode($categorie);
}
}

View File

@@ -0,0 +1,95 @@
<?php
namespace App\Http\Controllers;
use App\Models\CentralTenant;
use Illuminate\Http\Request;
use App\Models\Tenant;
use Illuminate\Support\Facades\Artisan; // Include the Artisan facade
class CentralTenantController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
// Ritorna la lista dei tenants attivi
return view('centraltenant.index', ['tenants' => CentralTenant::listTenants()]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//Ritorna la view del form per la creazione di un nuovo tenant
return view('centraltenant.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
$validated = $request->validate([
'tenant_name' => 'required | unique:tenants,id',
'fqdn_domain' => 'required | unique:domains,domain'
]);
$tenant1 = Tenant::create(['id' => $request->tenant_name]);
$tenant1->domains()->create(['domain' => $request->fqdn_domain]);
Artisan::call('tenants:migrate', ['--tenants' => $request->tenant_name]);
Artisan::call('tenants:seed', ['--tenants' => $request->tenant_name]);
/*Artisan::call('tenants:run storage:link', ['--tenants' => $request->tenant_name]);*/
return redirect()->route('home.index');
}
/**
* Display the specified resource.
*/
public function show(CentralTenant $centralTenant)
{
//
return view('centraltenant.show', ['tenant' => $centralTenant]);
}
/**
* Show the form for editing the specified resource.
*/
public function edit($home)
{
//
return view('centraltenant.edit', ['tenant' => \App\Models\CentralTenant::getTenant($home)]);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, CentralTenant $centralTenant)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($home)
{
// dd($home);
//$tenant1 = Tenant::create(['id' => $request->tenant_name]);
$tenant1 = Tenant::destroy(['id' => $home]);
return redirect()->route('home.index');
}
public function backupTenant($home)
{
$tenant = CentralTenant::backupTenant($home);
/*$tenant->backup();
return redirect()->route('home.index');
*/
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use Barryvdh\DomPDF\Facade\Pdf;
class CondominioController extends Controller
{
public function testPdf(){
$data=DB::table('categories')->get();
$pdf = PDF::setOptions(['dpi' => 150, 'defaultFont' => 'Helvetica'])->loadView('conti.categorie.list', ['categorie' => $data->toArray()]);
//return $pdf->download('invoice.pdf');
/*$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');*/
return $pdf->stream();
}
public function err403()
{
abort(403);
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\contatoreEnEl;
class ContatoreEnElController extends Controller
{
public static function listLettureEnel(){
$letture=ContatoreEnel::getList();
return view('letture.enel.list',['lettureEnel'=>$letture]);
}
public static function insLettureEnel(Request $request)
{
ContatoreEnel::inserisci($request);
$letture=ContatoreEnel::getList();
return view('letture.enel.list',['lettureEnel'=>$letture]);
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\contatoreGas;
class ContatoreGasController extends Controller
{
public static function listLettureGas(){
$letture=ContatoreGas::getList();
return view('components.chartGas',['lettureGas'=>$letture]);
}
public static function insLettureGas(Request $request)
{
ContatoreGas::inserisci($request);
$letture=ContatoreGas::getList();
return view('components.chartGas',['lettureGas'=>$letture]);
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContattoController extends Controller
{
//
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers;
use App\Models\Conto;
use Illuminate\Http\Request;
//use Illuminate\Database\Eloquent\Collection;
class ContoController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
$conti=Conto::all();
return view('conti.conto.index',compact('conti'));
}
public function apiListConto()
{
//
$conti=Conto::all();
return json_encode($conti);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
return view('conti.conto.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
$conto=Conto::create($request->all());
return redirect()->to('/admin/conti');
}
/**
* Display the specified resource.
*/
public function show(Conto $conti)
{
//
$conto=Conto::find($conti);
return view('conti.conto.show',compact('conto'));
/*
Rivedere il passaggio parametri e indicare anche le variabili $conto->saldo_anno_corrente $conto->saldo_anno_precedente $conto->saldo_anno_precedente_2
*/
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Conto $conti)
{
//
$conto=Conto::find($conti);
return json_encode($conto);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Conto $conti)
{
$validated= $request->validate([
'nomeConto'=>'required',
'Banca'=>'required',
//'IBAN'=>'required',
//'saldo_iniziale'=>'required',
//'note'=>'required',
]);
//
/*$conto = Conto::find($conti);
$conto->nomeConto=$request->nomeConto;
$conto->Banca=$request->Banca;
$conto->IBAN=$request->IBAN;
$conto->saldo_iniziale=$request->saldo_iniziale;
$conto->note=$request->note;
$conto->save();*/
Conto::whereId($conti->id)->update($request->except('_token','_method'));
return redirect()->to('/admin/conti');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Conto $conto)
{
//
$conti=Conto::find($conto);
$conti->delete();
return redirect()->route('conti.conto.index');
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Contratti;
use App\Models\GenDoc;
use Carbon\Carbon;
class ContrattiController extends Controller
{
//
public function contratti()
{
return view('contratti.lista',['data'=>Contratti::getAllContratto()]);
}
public function newContratto(Request $request)
{
// Contratti::storeContratto($request);
//dd($request);
if (isset($request['filename'])) {
$filename = $request->file('filename')->store('Contratti');
}else{
$filename=null;
}
Contratti::create([
'numero'=>$request['numero'],
'nome'=>$request['nome'],
'datainizio'=>date_format(date_create($request['datainizio']),'Y-m-d'),
'datatermine'=>date_format(date_create($request['datatermine']),'Y-m-d'),
'fornitore'=>$request['fornitore'],
'tipo'=>$request['tipo'],
'importo'=>$request['importo'],
'scadenzapagamento'=>date_format(date_create($request['scadenzapagamento']),'Y-m-d'),
'stato'=>$request['stato'],
'note'=>$request['note'],
'filename'=>$filename,
]);
return redirect()->back();
}
/* */
public function schedaContratto($id)
{
$contratto = Contratti::getContrattoById($id);
return view('contratti.detail',[
'contratto'=>$contratto,
'docs' => \App\Models\GenDoc::listDocument(1,$id)
]);
}
public function documentDelete(Request $id)
{
// return dd($id);
// $entity=1;
$contratto=GenDoc::find($id['id']);
if(file_exists('/storage/'.$contratto->filename))
{
unlink('storage/'.$contratto->filename);
}
GenDoc::find($id['id'])->delete();
return redirect('/admin/contratti/'.$id['entity_id']);
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers;
use App\Models\Documenti;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class DocumentiController extends Controller
{
//
public function storeFile(Request $req){
if ($req->hasFile('filename'))
{
Documenti::store($req);
return redirect(route('documenti',['id'=>$req->input('id'),]));
}
else
{
return 'Nessun File trovato';
}
}
public function fileForm(Request $request){
$documenti = Documenti::getList($request->input('entity_id'));
return view('conti.documenti.insert', [
'id'=>$request->input('entity_id'),
'documenti'=>$documenti
]);
}
public function newFolder(Request $req)
{
// crea una nuova caregoria per i documenti
Documenti::store($req);
return redirect(route('folders'));
}
public function listaDocumenti()
{
return view('documenti.lista',['data'=>Documenti::all()]);
}
}

View File

@@ -0,0 +1,97 @@
<?php
namespace App\Http\Controllers;
use App\Models\Event;
use Illuminate\Http\Request;
use Spatie\GoogleCalendar\Event as Events;
use Carbon\Carbon;
class FullCalenderController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index(Request $request)
{
if($request->ajax()) {
$data = Event::whereDate('start', '>=', $request->start)
->whereDate('end', '<=', $request->end)
->get(['id', 'title', 'start', 'end']);
return response()->json($data);
}
return view('calendario.fullcalendar');
}
/**
* Write code on Method
*
* @return response()
*/
public function ajax(Request $request)
{
switch ($request->type) {
case 'add':
$event = Event::create([
'title' => $request->title,
'description' => $request->description,
'start' => $request->start,
'end' => $request->end,
]);
return response()->json($event);
break;
case 'update':
$event = Event::find($request->id)->update([
'title' => $request->title,
'description' => $request->description,
'start' => $request->start,
'end' => $request->end,
]);
return response()->json($event);
break;
case 'delete':
$event = Event::find($request->id)->delete();
return response()->json($event);
break;
default:
# code...
break;
}
}
public function showDemo()
{
return view('calendario.fullcalendar');
}
public function saveEventToGoogle(Request $request){
$event = new Events;
$event->name = $request['title'];
$event->description=$request['descrizione'];
$tzStart = $request['DateStart'].'T'.$request['HourStart'].' +02:00';
$tzEnd = $request['DateEnd'].'T'.$request['HourEnd'].' +02:00';
$event->startDateTime = Carbon::parse($tzStart);
$event->endDateTime = Carbon::parse($tzEnd);
$event->save();
return view('calendario.fullcalendar');
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\GenDoc;
class GenDocController extends Controller
{
//
public function fileForm(Request $request){
$entity_id=$request->input('entity_id');
$entity=$request->input('entity');
if(!$request->input('entity_id'))
{
$entity_id=0;
}
$documenti = GenDoc::listDocument($entity,$entity_id);
return view('conti.documenti.gendoc', [
'id'=>$entity_id,
'entity'=>$entity,
'documenti'=>$documenti,
]);
}
public function storeFile(Request $request){
GenDoc::saveDocument($request);
return redirect()->back();
}
public function deleteFile(Request $request)
{
GenDoc::delDocument($request->id);
return redirect()->back();
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class GruppiController extends Controller
{
//
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\HomeAssistantAPI;
class HomeAssistantAPIController extends Controller
{
// Connessione RestAPI di HomeAssistant
public function getContatore()
{
$kwh = HomeAssistantAPI::getSensorState('sensor.contatore_casa');
return $kwh->state;
}
public function getStatoPompa()
{
$statoPompa = HomeAssistantAPI::getSensorState('switch.pompa_pozzo');
return $statoPompa->state;
//dd($statoPompa);
}
}

View File

@@ -0,0 +1,79 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
// return view('home');
return redirect('/admin');
}
public function backupTenant($tenantId=null) {
// 1. Identificazione del tenant
if (!isset($tenantId)){
$tenantId = tenant()->id;
}
$tenant = Tenant::find($tenantId);
if (!$tenant) {
return 'Tenant non trovato.';
}
// 2. Switch al tenant
tenancy()->initialize($tenant);
// 3. Generazione del nome del file zip
$fileName = $tenantId . '_' . date('YmdHms') . '.zip';
$zipPath = storage_path('app/' . $fileName);
// 4. Creazione dell'archivio zip
$zip = new ZipArchive;
if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
return 'Impossibile creare l\'archivio zip.';
}
// 5. Dump del database
$databaseName = config('database.connections.tenant.database'); // Assumi 'tenant' come connessione per i tenant
$dumpFile = storage_path('app/temp_dump.sql');
$command = "mysqldump -u " . config('database.connections.tenant.username') . " -p" . config('database.connections.tenant.password') . " " . $databaseName . " > " . $dumpFile;
exec($command);
$zip->addFile($dumpFile, 'database.sql');
// 6. Aggiunta della cartella storage
//$storagePath = storage_path('app/tenant/' .$tenantId); // Assumi una struttura di storage separata per tenant
$storagePath = storage_path();
$files = \File::allFiles($storagePath);
foreach ($files as $file) {
$relativePath = str_replace($storagePath . '/', '', $file->getPathname());
$zip->addFile($file->getPathname(), 'storage/' . $relativePath);
}
// 7. Chiusura dell'archivio zip
$zip->close();
// 8. Download del file
// dd($zipPath);
return response()->download($zipPath, $fileName, [
'Content-Type' => 'application/zip',
'Content-Disposition' => 'attachment; filename="' . $fileName . '"',
])->deleteFileAfterSend(true); // Cancella il file dopo il download
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers;
use App\Models\ImportRule;
use Illuminate\Http\Request;
class ImportRuleController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(ImportRule $importRule)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(ImportRule $importRule)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, ImportRule $importRule)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(ImportRule $importRule)
{
//
}
}

View File

@@ -0,0 +1,363 @@
<?php
namespace App\Http\Controllers;
use App\Models\Categorie;
use App\Models\Movimenti;
use App\Models\tag;
use App\Models\Task;
use App\Models\Avviso;
use App\Models\Conto;
// use App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Rap2hpoutre\FastExcel\FastExcel;
class MovimentiController extends Controller
{
// Gestione dei movimenti
public static function newMovimenti() {
$categorie=Categorie::list(); // TODO: da risolvere con jquery nella pagina blade conti.movimenti.list
$tags=tag::getList(); // TODO: da risolvere con jquery nella pagina blade conti.movimenti.list (spiegazione su https://library.webschool.com/lezione/guida-jquery-recuperare-dati-da-php-con-json-2564.html )
return view('conti.movimenti.new',[
'categorie'=>$categorie,
'tags'=>$tags,
]);
}
public static function listMovimenti(){
$categorie=Categorie::list();
$tags=tag::getList();
/* Query per visualizzare anche il totale dei documenti presenti per il record */
$movimenti=Movimenti::getList();
return view('conti.movimenti.list',[
'categorie'=>$categorie,
'movimenti'=>$movimenti,
'tags'=>$tags
]);
}
public static function dashboard()
{
/*$bilancio=Movimenti::getSaldo(date('Y'));*/
$entrate=Movimenti::getEntrate(date('Y'));
$uscite=Movimenti::getUscite(date('Y'));
$saldo=Movimenti::getSaldoTot();
$mieiTasks=Task::getTaskAssignedToUser(Auth::id());
// $TasksAssegnati=Task::getTaskAssignedByUser(Auth::id());
// $avvisi=Avviso::getAvvisi();
$avvisi=Avviso::getActualAvvisi();
return view('layouts.dashboard',[
'entrate'=>$entrate,
'uscite'=>$uscite,
'saldo'=>$saldo,
'mieitask' => $mieiTasks,
// 'assegnati' => $TasksAssegnati,
'avvisi'=>$avvisi,
]);
}
public static function insMovimentiSpesa(Request $request)
{
// dd($request);
$validated=$request->validate([
'mov_data'=>'required',
'mov_importo'=>'required | numeric' ,
]);
Movimenti::insSpesa($request);
$mov=Movimenti::getList();
$categorie=Categorie::listSpesa();
$tags=tag::getList();
return view('conti.movimenti.list',
[
'categorie'=> $categorie,
'movimenti'=> $mov,
'tags'=>$tags,
]);
/* return dd($mov);*/
}
public static function insMovimentiEntrata(Request $request)
{
$validated=$request->validate([
'mov_data'=>'required',
'mov_importo'=>'required | numeric' ,
]);
Movimenti::insEntrata($request);
$mov=Movimenti::getList();
$categorie=Categorie::listEntrata();
$tags=tag::getList();
return view('conti.movimenti.list',
[
'categorie'=> $categorie,
'movimenti'=> $mov,
'tags'=>$tags,
]);
/* return dd($mov);*/
}
public function exportMovimenti()
{
$movimenti = Movimenti::export();
foreach ($movimenti as $movimento)
{
$lista[]=[
'Data'=> date_format(date_create($movimento->Data),'d/m/Y'),
'Categoria'=>$movimento->Categoria,
'Tag'=>$movimento->Tag,
'Descrizione'=>$movimento->Descrizione,
'Importo'=>$movimento->Importo,
'Conto'=>$movimento->Conto,
];
}
return (new FastExcel($lista))->download('movimenti_al_'.date('d-m-Y').'.xls');
// return dd($movimenti);
}
public function resocontoMovimenti(Request $request)
{
if(!$request['Year'])
{
$year=date('Y');
}
else {
$year=$request['Year'];
}
if (!$request['Month'])
{
$month=date('m');
}
else {
$month=$request['Month'];
}
$reportSpesa = Movimenti::reportSpesa($year, $month);
$reportEntrate = Movimenti::reportEntrate($year,$month);
return view('components.charts',[
'dataSpesa'=>$reportSpesa,
'dataEntrate'=>$reportEntrate,
]);
}
public function updatePostMovimenti(Request $request)
{
Movimenti::updateMovimenti($request);
// return redirect()->back();
return view('conti.movimenti.list',
[
'movimenti'=> Movimenti::getList(),
]);
}
public function deleteMovimenti(Request $request)
{
Movimenti::deleteMovimento($request['id']);
return redirect('/admin/movimenti');
}
public function girocontoPost(Request $request)
{
Movimenti::giroconto($request);
return redirect('/admin/movimenti');
}
public function giroconto()
{
$categorie=Categorie::list();
return view('conti.giroconto.form',[
'categories'=>$categorie,
'contos'=>Conto::all(),
]);
}
public function listMovPerCateg(Request $request)
{
if($request['year'])
{
$anno=$request['year'];
}
else
{
$anno=date('Y');
}
$mov=Movimenti::listByCatMonth($request['month'], $request['cat'],$anno);
return view('conti.movimenti.list',
[
'movimenti'=> $mov,
]);
}
public function listMovByCat(Request $request)
{
$mov=Movimenti::listByCategory($request['cat']);
return view('conti.movimenti.list',
[
'movimenti'=> $mov,
]);
}
public function reportCategorieAnno($anno = 0)
{
if ($anno <= 1970)
{
$anno = date('Y');
}
$mesi=['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
$categorie=Categorie::list();
foreach ($categorie as $categoria)
{
$id=$categoria->id;
$ncategoria=$categoria->cat_name;
for ($i=1;$i<=12;$i++)
{
$movrow=DB::table('movimentis')
->whereMonth('mov_data','=',$i)
->whereYear('mov_data','=',$anno)
->where('mov_fk_categoria','=',$id)
->sum('mov_importo');
$coll[]=$movrow;
$collx[]=$movrow;
}
$totale[]=array_sum($collx);
unset($collx);
}
/*dd($totale);*/
$anni=Movimenti::getYearsFromMovimenti();
// dd($anni);
return view('conti.report.catanno',[
'categorie'=>$categorie,
'mesi'=>$mesi,
'matrice'=>array_chunk($coll, 12),
'totale'=>$totale,
'anno'=>$anno,
'sel_anni'=>$anni,
]);
}
public function reportCategorieAnnoXLS($anno = 0)
{
if ($anno <= 1970)
{
$anno = date('Y');
}
$intestazione=['Categoria','Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
$categorie=DB::table('categories')->orderBy('cat_name')->get();
foreach ($categorie as $categoria)
{
$id=$categoria->id;
$ncategoria=$categoria->cat_name;
for ($i=1;$i<=12;$i++)
{
$movrow=DB::table('movimentis')
->whereMonth('mov_data','=',$i)
->whereYear('mov_data','=',$anno)
->where('mov_fk_categoria','=',$id)
->sum('mov_importo');
$coll[] = $movrow;
}
$row[]=array_combine($intestazione,array_merge(array($ncategoria),$coll));
unset($coll);
}
return (new FastExcel($row))->download('report_al_'.date('d-m-Y').'.xls');
}
public function filterByTag(Request $tag)
{
$mov=Movimenti::getByTag($tag['tag']);
return view('conti.movimenti.list',
[
'movimenti'=> $mov,
]);
}
public function apiList()
{
$movments = Movimenti::getList();
return json_encode($movments);
}
private function dateFormat($type,$string)
{
if($type)
{
list($year,$month,$day) = explode('-',$string);
return $day.'/'.$month.'/'.$year;
} else {
list($day,$month,$year) =explode('/',$string);
return $year.'-'.$month.'-'.$day;
}
}
public function importEC_ING(Request $request)
{
if ($request->hasFile('filename'))
{
$filename=$request->file('filename')->store();
Movimenti::importEstrattoIng($filename);
return redirect(Route('movimenti'));
}
else {
return 'Nessun File trovato';
}
}
public function importEC_CR(Request $request)
{
if ($request->hasFile('filename'))
{
$filename=$request->file('filename')->store();
Movimenti::importEstrattoCR($filename);
return redirect(Route('movimenti'));
}
else {
return 'Nessun File trovato';
}
}
public function importFile()
{
return view('conti.import');
}
public function importFileCR()
{
return view('conti.importCR');
}
/* public function test()
{
Movimenti::getYearsFromMovimenti();
}*/
public function manageRedirect(Request $request)
{
return redirect('/admin/movimenti/reportbudget/'.$request['anno']);
}
public function updateMovimenti($id)
{
$mov=Movimenti::getMovimentoById($id);
return json_encode($mov);
}
}

View File

@@ -0,0 +1,115 @@
<?php
namespace App\Http\Controllers;
use App\Models\Progetti;
use App\Models\User;
use Illuminate\Http\Request;
use App\Models\RigaProgetto;
use App\Models\GenDoc;
use function GuzzleHttp\json_encode;
use Barryvdh\DomPDF\Facade\Pdf;
class ProgettiController extends Controller
{
//
public function listaProgetto()
{
/* $progetti=Progetti::getProgetti();
dd($progetti);*/
return view('progetti.list',[
'progetti'=>Progetti::getProgetti()
]);
}
public function nuovoProgetto()
{
return view('progetti.new',['coordinatori'=>User::getUsers()]);
}
public function getCoordinatori()
{
return json_encode(User::getUsers());
}
public function salvaProgetto(Request $request)
{
Progetti::saveProgetto($request);
return redirect(Route('progetti'));
}
public function deleteProgetto(Request $param) {
Progetti::delProgetto($param['id']);
return redirect(Route('progetti'));
}
public function dettaglioProgetto($id)
{
$progetto_id=$id;
$progetto = Progetti::getProgettoById($progetto_id);
$righe = RigaProgetto::getRigheProgetto($progetto_id);
$costo_tot=RigaProgetto::getCostoRighe($progetto_id);
return view('progetti.dettaglio',['dettaglio'=>$progetto, 'righe'=>$righe, 'tot'=>$costo_tot]);
//dd($righe);
}
public function chiudiProgetto(Request $id)
{
Progetti::chiudiProgetto($id['id']);
return redirect(Route('progetti'));
}
public function riapriProgetto(Request $id)
{
Progetti::riapriProgetto($id['id']);
return redirect(Route('progetti'));
}
public function stampaPDFProgetto(Request $id)
{
$progetto_id=$id['id'];
$progetto = Progetti::getProgettoById($progetto_id);
$righe = RigaProgetto::getRigheProgetto($progetto_id);
$costo_tot=RigaProgetto::getCostoRighe($progetto_id);
$pdf=Pdf::loadview('progetti.PDF.scheda',['dettaglio'=>$progetto,'righe'=>$righe, 'tot'=>$costo_tot]);
return $pdf->stream();
}
public function documentoProgetto(Request $request)
{
$documenti = GenDoc::listDocument(3,$request->input('entity_id'));
return view('conti.documenti.insert', [
'id'=>$request->input('entity_id'),
'entity'=>$request->input('entity'),
'documenti'=>$documenti
]);
}
public function modificaProgetto(Request $data)
{
// funzione di modifica del progetto (form inserimento modificato in js)
Progetti::where('id', $data['id'])
->update([
'nome' => $data['nome'],
'descrizione' => $data['descrizione'],
//'data_creazione'=>$data['data_creazione'],
'data_inizio'=>$data['data_inizio'],
'data_fine'=>$data['data_fine'],
'fk_user'=>$data['coordinatore'],
'budget'=>$data['budget'],
'stato'=>$data['stato'],
'note' =>$data['note'],
]);
return redirect()->back();
/* dd($data);*/
}
public function getProgettobyId(Request $id)
{
return json_encode(Progetti::getProgettoById($id['id']));
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\RigaProgetto;
class RigaProgettoController extends Controller
{
//
public function deleterow($id_row,$id)
{
$id_riga = $id_row;
//$id_progetto = $id_prog;
RigaProgetto::deleteRow($id_riga);
// Ritorna alla pagina dei dettagli del progetto
return redirect('/admin/progetti/detail/'.$id);
}
public function editRiga($id)
{
// modifica della riga inserita
//return redirect('/admin/progetti/editDetail');
$data=RigaProgetto::getRigaById($id);
return $data;
}
public function updateRiga(Request $data)
{
$id=$data['fk_id_progetto'];
RigaProgetto::updateRiga($data);
// $id_progetto=$data['fk_id_progetto'];
return redirect('/admin/progetti/detail/'.$id);
}
public function inserisciRiga(Request $args,$id)
{
RigaProgetto::saveRiga($args,$id);
return redirect('/admin/progetti/detail/'.$id);
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class RivistaController extends Controller
{
//
}

View File

@@ -0,0 +1,56 @@
<?php
namespace App\Http\Controllers;
use App\Models\tag;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TagController extends Controller
{
public static function listTags(){
$tags = tag::getList();
return view('conti.tags.list',['tags'=>$tags]);
}
public static function insTags(Request $request)
{
$validated=$request->validate([
'tag_name' => 'required',
]);
tag::inserisci($request);
$tags = tag::getList();
return view('conti.tags.list',['tags'=>$tags]);
}
public function calendartest()
{
return view('components.calendar');
}
public function updateTag($id)
{
$tags=tag::getById($id);
return json_encode($tags);
}
public function updatePostTag(Request $request)
{
$validated=$request->validate([
'cat_name' => 'required',
]);
tag::updateById($request);
return redirect(route('tags'));
}
public function apiList()
{
$tags=tag::all();
return json_encode($tags);
}
public function deleteTag($id){
tag::deleteTag($id);
return redirect(route('tags'));
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Task;
class TaskController extends Controller
{
//
public function listTask()
{
return Task::where('termine_il','>=', now())->get();
// debug
// return get_class_methods($this);
}
public function Task()
{
return view('tasks.list',['tasks'=>$this->listTask()]);
}
public function newTask(Request $data)
{
Task::create([
'titolo'=>$data['titolo'],
'descrizione'=>$data['descrizione'],
'assegnato_a'=>$data['assegnato_a'],
'creato_da'=>$data['creato_da'],
'termine_il'=>$data['termine_il'],
'creato_il'=>$data['creato_il'],
'chiuso_il'=>$data['chiuso_il'],
'stato'=>$data['stato'],
]);
return redirect()->back();
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers;
use App\Models\Todolist;
use Illuminate\Http\Request;
class TodolistController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(Todolist $todolist)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Todolist $todolist)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Todolist $todolist)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Todolist $todolist)
{
//
}
}

View File

@@ -0,0 +1,144 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
// use Junges\ACL\Models\Group;
// use Junges\ACL\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use App\Models\User;
class Utenti extends Controller
{
public function createRole($ruolo)
{
$role=Role::create(['name'=>$ruolo]);
return json_encode(Role::all()->pluck('name'));
}
function createPermission($permesso){
$permission=Permission::create(['name'=>$permesso]);
return json_encode(Permission::all()->pluck('name'));
}
function userClass() {
$user=new User();
return get_class_methods($user);
}
// post del create user
function createUser(Request $params){
User::addUser($params);
return redirect('/admin/users/new');
}
// mostra il form della creazione dell'utente
function addUser(){
$roles = Role::all();
$users = User::all();
return view('users.create',['ruoli'=>$roles,'users'=>$users]);
}
function listUser(){
$users = User::all();
return view('users.list',['users'=>$users]);
}
function getUsers(){
return User::getUsers();
}
function listRoles(){
$roles = Role::all();
return $roles;
}
function deleteUser($id) {
User::destroy($id);
return redirect('/admin/users/new');
}
function givePermissionToUser()
{
$users=User::all();
$permissions=Permission::all();
return view('users.assignperm',['users'=>$users,'permissions'=>$permissions]);
}
function assignPermission(Request $request)
{
//$user=User::getUserbyId($request['user']);
$user=User::findOrFail($request['user']);
foreach($request['permesso'] as $key => $value){
if($value=='true')
{
$key=str_replace('\'','',$key);
$user->givePermissionTo($key);
// $permission['allowed'][]=$key;
}
else
{
$key=str_replace('\'','',$key);
$user->revokePermissionTo($key);
// $permission['denied'][]=$key;
}
}
return redirect('/admin/users/givepermission');
}
function giveRoleToUser()
{
$users=User::all();
$roles=Role::all();
return view('users.assignrole',['users'=>$users,'roles'=>$roles]);
}
function assignRole(Request $request)
{
//$user=User::getUserbyId($request['user']);
$user=User::findOrFail($request['user']);
$user->assignRole($request['role']);
return redirect('/admin/users/giverole');
}
public function changePassword(Request $request)
{
$user = Auth::user();
$request->validate([
'current_password' => 'required|string|min:5',
'new_password' => 'required|string|min:8|confirmed',
]);
if (Hash::check($request->current_password, $user->password))
{
$user->password = Hash::make($request->new_password);
$user->save();
return redirect()->route('changePassword')->with('success','Password changed successfully!');
} else {
return redirect()->back()->withErrors(['current_password' => 'Current password does not match']);
}
}
public function login(Request $request)
{
// Crea un token unico di accesso per l'utente
$request->validate([
'email' => 'required|email',
'password' => 'required|string|min:3',
]);
$user=User::where('email',$request->email)->first();
if(!$user || !Hash::check($request->password, $user->password)){
return response()->json(['error'=>'The provided credentials are incorrect.'], 401);
}
$token=$user->createToken($user->name.'_Api-AuthToken')->plainTextToken;
return response()->json(['token'=>$token]);
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/api/login',
];
}