Merge branch 'master' of https://gitlab.com/kluppsoftware/smart-energia-api
This commit is contained in:
commit
70dc2938da
@ -2,8 +2,19 @@
|
|||||||
|
|
||||||
namespace App\Exceptions;
|
namespace App\Exceptions;
|
||||||
|
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\App;
|
||||||
|
use Illuminate\Database\QueryException;
|
||||||
|
use Illuminate\Auth\AuthenticationException;
|
||||||
|
use Illuminate\Validation\ValidationException;
|
||||||
|
use Illuminate\Auth\Access\AuthorizationException;
|
||||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||||
use Throwable;
|
|
||||||
|
use Laravel\Sanctum\Exceptions\MissingAbilityException;
|
||||||
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
class Handler extends ExceptionHandler
|
class Handler extends ExceptionHandler
|
||||||
{
|
{
|
||||||
@ -36,6 +47,76 @@ class Handler extends ExceptionHandler
|
|||||||
'password_confirmation',
|
'password_confirmation',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
private function messageCustom(\Throwable $ex): array
|
||||||
|
{
|
||||||
|
|
||||||
|
$messageCustom = [];
|
||||||
|
|
||||||
|
$class_exceptions = [
|
||||||
|
AuthorizationException::class => fn ($e) => [
|
||||||
|
'Unauthorized',
|
||||||
|
Response::HTTP_UNAUTHORIZED
|
||||||
|
],
|
||||||
|
|
||||||
|
AuthenticationException::class => fn ($e) => [
|
||||||
|
'Unauthorized',
|
||||||
|
Response::HTTP_UNAUTHORIZED
|
||||||
|
],
|
||||||
|
|
||||||
|
ValidationException::class => fn (ValidationException $e) => [
|
||||||
|
$e->validator->getMessageBag()->getMessages(),
|
||||||
|
Response::HTTP_BAD_REQUEST
|
||||||
|
],
|
||||||
|
|
||||||
|
ModelNotFoundException::class => fn ($e) => [
|
||||||
|
'Not Found',
|
||||||
|
Response::HTTP_NOT_FOUND
|
||||||
|
],
|
||||||
|
|
||||||
|
NotFoundHttpException::class => fn ($e) => [
|
||||||
|
'Not Found',
|
||||||
|
Response::HTTP_NOT_FOUND
|
||||||
|
],
|
||||||
|
|
||||||
|
MethodNotAllowedHttpException::class => fn ($e) => [
|
||||||
|
'Method Not Allowed',
|
||||||
|
Response::HTTP_METHOD_NOT_ALLOWED
|
||||||
|
],
|
||||||
|
|
||||||
|
HttpException::class => fn (HttpException $e) => [
|
||||||
|
$e->getMessage(),
|
||||||
|
$e->getStatusCode(),
|
||||||
|
],
|
||||||
|
|
||||||
|
QueryException::class => fn (QueryException $e) => [
|
||||||
|
App::isLocal()
|
||||||
|
? ['Message' => $e->getMessage(), 'SQL' => $e->getSql(), 'Bindings' => $e->getBindings()]
|
||||||
|
: 'Internal server error',
|
||||||
|
Response::HTTP_INTERNAL_SERVER_ERROR
|
||||||
|
],
|
||||||
|
|
||||||
|
MissingAbilityException::class => fn($_) => [
|
||||||
|
'Unauthorized',
|
||||||
|
Response::HTTP_UNAUTHORIZED
|
||||||
|
]
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
$exception_message = $class_exceptions[get_class($ex)] ?? null;
|
||||||
|
|
||||||
|
if ($exception_message) {
|
||||||
|
$messageCustom = $exception_message($ex);
|
||||||
|
} else {
|
||||||
|
$messageCustom = [
|
||||||
|
App::isLocal() ? $ex->getMessage() : 'Internal server error',
|
||||||
|
Response::HTTP_INTERNAL_SERVER_ERROR
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $messageCustom;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the exception handling callbacks for the application.
|
* Register the exception handling callbacks for the application.
|
||||||
*
|
*
|
||||||
@ -43,8 +124,22 @@ class Handler extends ExceptionHandler
|
|||||||
*/
|
*/
|
||||||
public function register()
|
public function register()
|
||||||
{
|
{
|
||||||
$this->reportable(function (Throwable $e) {
|
$this->reportable(function (\Throwable $ex) {
|
||||||
//
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom render errors
|
||||||
|
*
|
||||||
|
* @param Illuminate\Http\Request $req
|
||||||
|
* @param \Throwable $ex
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function render($req, \Throwable $ex)
|
||||||
|
{
|
||||||
|
[$message, $status_code] = $this->messageCustom($ex);
|
||||||
|
|
||||||
|
return response()->json(['error' => $message], $status_code);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class ResetPasswordController extends Controller
|
|||||||
$user = User::with('roles')->firstWhere('email', $resetPasswordRequest->email);
|
$user = User::with('roles')->firstWhere('email', $resetPasswordRequest->email);
|
||||||
|
|
||||||
$user->update([
|
$user->update([
|
||||||
'password' => Hash::make($resetPasswordRequest->password)
|
'password' => $resetPasswordRequest->password
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->successResponse([
|
return $this->successResponse([
|
||||||
|
|||||||
@ -9,6 +9,7 @@ use Illuminate\Http\File;
|
|||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Http\UploadedFile;
|
use Illuminate\Http\UploadedFile;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
@ -66,7 +67,7 @@ class UsersWithSmartUsersImport implements ToCollection
|
|||||||
$client_id = $row->get(0);
|
$client_id = $row->get(0);
|
||||||
$name = $client->cliente;
|
$name = $client->cliente;
|
||||||
$email = \trim($row->get(1));
|
$email = \trim($row->get(1));
|
||||||
$password = Hash::make(Str::random(7));
|
$password = Str::random(7);
|
||||||
$profile_picture = \array_key_exists($client_id, $this->files_paths)
|
$profile_picture = \array_key_exists($client_id, $this->files_paths)
|
||||||
? $this->files_paths[$client_id]
|
? $this->files_paths[$client_id]
|
||||||
: '';
|
: '';
|
||||||
@ -84,7 +85,7 @@ class UsersWithSmartUsersImport implements ToCollection
|
|||||||
{
|
{
|
||||||
$client_id = $row->get(0);
|
$client_id = $row->get(0);
|
||||||
$name = $client->cliente;
|
$name = $client->cliente;
|
||||||
$password = Hash::make($row->get(2));
|
$password = $row->get(2);
|
||||||
$profile_picture = \array_key_exists($client_id, $this->files_paths)
|
$profile_picture = \array_key_exists($client_id, $this->files_paths)
|
||||||
? $this->files_paths[$client_id]
|
? $this->files_paths[$client_id]
|
||||||
: '';
|
: '';
|
||||||
@ -115,12 +116,14 @@ class UsersWithSmartUsersImport implements ToCollection
|
|||||||
$picture = new File($temp_file_path);
|
$picture = new File($temp_file_path);
|
||||||
$pathS3 = "avatars/{$picture->hashName()}";
|
$pathS3 = "avatars/{$picture->hashName()}";
|
||||||
|
|
||||||
Storage::disk('s3')->missing($pathS3) &&
|
App::isProduction() && Storage::disk('s3')->missing($pathS3) &&
|
||||||
Storage::disk('s3')->put($pathS3, $picture->getContent());
|
Storage::disk('s3')->put($pathS3, $picture->getContent());
|
||||||
|
|
||||||
$filename = \preg_replace("/\.[^\.]+$/", "", $filename);
|
$filename = \preg_replace("/\.[^\.]+$/", "", $filename);
|
||||||
|
|
||||||
$this->files_paths[$filename] = Storage::disk('s3')->url($pathS3);
|
$this->files_paths[$filename] = App::isProduction()
|
||||||
|
? Storage::disk('s3')->url($pathS3)
|
||||||
|
: url('test.png');
|
||||||
|
|
||||||
\unlink($temp_file_path);
|
\unlink($temp_file_path);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -4,15 +4,17 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use DateTimeInterface;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
|
||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
|
||||||
|
use OwenIt\Auditing\Auditable;
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
use OwenIt\Auditing\Contracts\Auditable as Auditing;
|
use OwenIt\Auditing\Contracts\Auditable as Auditing;
|
||||||
use OwenIt\Auditing\Auditable;
|
|
||||||
|
|
||||||
class User extends Authenticatable implements Auditing
|
class User extends Authenticatable implements Auditing
|
||||||
{
|
{
|
||||||
@ -44,7 +46,14 @@ class User extends Authenticatable implements Auditing
|
|||||||
'email_verified_at' => 'datetime',
|
'email_verified_at' => 'datetime',
|
||||||
];
|
];
|
||||||
|
|
||||||
protected function serializeDate(DateTimeInterface $date): string
|
public function password(): Attribute
|
||||||
|
{
|
||||||
|
return Attribute::make(
|
||||||
|
set: fn($value) => Hash::make($value)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function serializeDate(\DateTimeInterface $date): string
|
||||||
{
|
{
|
||||||
return $date->format('d/m/Y H:i:s');
|
return $date->format('d/m/Y H:i:s');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,3 +82,5 @@ Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Route::post('import', [\App\Http\Controllers\UserController::class, 'importUserControll']);
|
Route::post('import', [\App\Http\Controllers\UserController::class, 'importUserControll']);
|
||||||
|
|
||||||
|
Route::get('ok', fn() => 'ok');
|
||||||
@ -1,18 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Web Routes
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Here is where you can register web routes for your application. These
|
|
||||||
| routes are loaded by the RouteServiceProvider within a group which
|
|
||||||
| contains the "web" middleware group. Now create something great!
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
Route::get('/', function () {
|
|
||||||
return view('welcome');
|
|
||||||
});
|
|
||||||
Loading…
x
Reference in New Issue
Block a user