initial commit

This commit is contained in:
Benjamin Nussbaum 2025-02-12 22:15:57 +01:00
parent 32d63c09e7
commit 01655b413e
37 changed files with 2564 additions and 283 deletions

81
routes/api.php Normal file
View file

@ -0,0 +1,81 @@
<?php
use App\Models\Device;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('/display', function (Request $request) {
$mac_address = $request->header('id');
$access_token = $request->header('access-token');
$device = Device::where('mac_address', $mac_address)
->where('api_key', $access_token)
->first();
if (! $device) {
return response()->json([
'message' => 'MAC Address not registered or invalid access token',
], 404);
}
$device->update([
'last_rssi_level' => $request->header('rssi'),
'last_battery_voltage' => $request->header('battery_voltage'),
'last_firmware_version' => $request->header('fw-version'),
]);
$image_path = collect(\Storage::disk('public')->files('/images/generated'))->first(fn ($file) => \Str::endsWith($file, '.bmp'));
$filename = basename($image_path);
return response()->json([
'status' => '0',
'image_url' => url('storage/'.$image_path),
'filename' => $filename,
'refresh_rate' => 900,
'reset_firmware' => false,
'update_firmware' => false,
'firmware_url' => null,
'special_function' => 'sleep',
]);
});
Route::get('/setup', function (Request $request) {
$mac_address = $request->header('id');
if (! $mac_address) {
return response()->json([
'message' => 'MAC Address not registered',
], 400);
}
$device = Device::where('mac_address', $mac_address)->first();
if (! $device) {
return response()->json([
'message' => 'MAC Address not registered',
], 404);
}
return response()->json([
'api_key' => $device->api_key,
'friendly_id' => $device->friendly_id,
'image_url' => url('storage/images/setup-logo.png'),
'message' => 'Welcome to TRMNL BYOS',
]);
});
Route::post('/log', function (Request $request) {
$logs = $request->json('log.logs_array', []);
foreach ($logs as $log) {
\Log::info('Device Log', $log);
}
return response()->json([
'status' => '0',
]);
});
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:sanctum');

View file

@ -5,8 +5,8 @@ use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
Route::middleware('guest')->group(function () {
Volt::route('register', 'pages.auth.register')
->name('register');
// Volt::route('register', 'pages.auth.register')
// ->name('register');
Volt::route('login', 'pages.auth.login')
->name('login');

View file

@ -12,4 +12,19 @@ Route::view('profile', 'profile')
->middleware(['auth'])
->name('profile');
Route::middleware(['auth:sanctum', 'verified'])->group(function () {
Route::get('/devices', function () {
return view('devices');
})->name('devices');
Route::get('/devices/{device}/configure', function (App\Models\Device $device) {
$current_image_uuid = auth()->user()->devices()->find($device->id)->current_screen_image;
$current_image_path = 'images/generated/'.$current_image_uuid.'.png';
return view('devices.configure', compact('device'), [
'image' => ($current_image_uuid) ? url($current_image_path) : null,
]);
})->name('devices.configure');
});
require __DIR__.'/auth.php';