diff --git a/web/app/Http/Controllers/SensorController.php b/web/app/Http/Controllers/SensorController.php deleted file mode 100644 index 17318cea8f30ddfc09b843b3d0915d1bc3a7298f..0000000000000000000000000000000000000000 --- a/web/app/Http/Controllers/SensorController.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php - -namespace App\Http\Controllers; - -use Illuminate\Http\Request; -use App\Models\Sensors; - -class SensorController extends Controller -{ - public function index() - { - return Sensors::all(); - } - - public function show($id) - { - return Sensors::find($id); - } - - public function store(Request $request) - { - return Sensors::create($request->all()); - } - - public function update(Request $request, $id) - { - $sensor = Sensors::findOrFail($id); - $sensor->update($request->all()); - - return $sensor; - } - - public function delete(Request $request, $id) - { - $sensor = Sensors::findOrFail($id); - $sensor->delete(); - - return 204; - } - -} diff --git a/web/app/Models/Sensors.php b/web/app/Models/Sensors.php deleted file mode 100644 index d6e4b132632b8a6a3842ff7d4c8fcecbaf963e9f..0000000000000000000000000000000000000000 --- a/web/app/Models/Sensors.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -namespace App\Models; - -use Moloquent; - -class Sensors extends Moloquent -{ - protected $connection = 'mongodb'; - protected $collection = 'sensors'; - protected $fillable = ['id','content','token']; - protected $server; - - public function server($id) - { - $this->server = Server::find($id); - } -} \ No newline at end of file diff --git a/web/app/Models/Server.php b/web/app/Models/Server.php index b770f203d7265de7ff99d49859eff9cec0236daa..fbbd8981abcb38a751d1a118000d5285b56a14fd 100644 --- a/web/app/Models/Server.php +++ b/web/app/Models/Server.php @@ -6,10 +6,17 @@ use Illuminate\Database\Eloquent\Model; class Server extends Model { - protected $fillable = ['name']; + + protected $fillable = ['name', 'token']; public $sensors; - protected $primaryKey = 'id'; public $lastState; + + public function __construct(array $attributes = []) { + $attributes["token"] = str_random(32); + return parent::__construct($attributes); + } + + public function organization() { return $this->belongsTo('App\Models\Organizations'); diff --git a/web/composer.json b/web/composer.json index f06ab4bc5a29323ea24a30daa85d66c87795e8cf..dcb4cd3b8d39281bbab4ce34e730d720f42f3b0d 100644 --- a/web/composer.json +++ b/web/composer.json @@ -7,10 +7,8 @@ "require": { "php": ">=7.0.0", "fideloper/proxy": "~3.3", - "jenssegers/mongodb": "^3.3", "laravel/framework": "5.5.*", - "laravel/tinker": "~1.0", - "laravelcollective/html": "~5.0" + "laravel/tinker": "~1.0" }, "require-dev": { "filp/whoops": "~2.0", diff --git a/web/routes/api.php b/web/routes/api.php index f05991869540f0418b09f1e9b61aa4b0ba99a902..4a9b96a8a8a1e65a346d5f24d3102083dbc014a6 100644 --- a/web/routes/api.php +++ b/web/routes/api.php @@ -1,6 +1,8 @@ <?php use Illuminate\Http\Request; +use MongoDB\Client as Mongo; +use App\Models\Server; /* |-------------------------------------------------------------------------- @@ -13,12 +15,17 @@ use Illuminate\Http\Request; | */ -Route::middleware('auth:api')->get('/user', function (Request $request) { - return $request->user(); +Route::post('record/{server}', function(Request $request, Server $server) { + if ($server->token !== $request->get("token", "")) { + abort(403); + } + + $data = $request->all(); + $data["server_id"] = $server->id; + $data["time"] = time(); + + $collection = (new Mongo)->monitoring->records; + $collection->insertOne($data); + + return "ok"; }); -Route::get('sensors', 'SensorController@index'); -Route::get('sensors/{sensor}', 'SensorController@show'); -Route::post('sensors', 'SensorController@store'); -Route::put('sensors/{sensor}', 'SensorController@update'); -Route::delete('sensors/{article}', 'SensorController@delete'); -Route::get('register', 'ServerController@register'); \ No newline at end of file diff --git a/web/tests/Feature/ExampleTest.php b/web/tests/Feature/ExampleTest.php index f31e495ca33f922f129a5ac92a34c3b2b0a172e7..43ca05304368b25870c123de92f4b9c622421d88 100644 --- a/web/tests/Feature/ExampleTest.php +++ b/web/tests/Feature/ExampleTest.php @@ -2,11 +2,15 @@ namespace Tests\Feature; +use App\Models\Server; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { + + use RefreshDatabase; + /** * A basic test example. * @@ -14,8 +18,24 @@ class ExampleTest extends TestCase */ public function testBasicTest() { - $response = $this->get('/'); + $this->get('/')->assertStatus(200); + } + + public function testRecord() + { + $server = new Server(); + $server->name = "srv01"; + $server->save(); + + $this->post('/api/record/' . $server->id, [])->assertStatus(403); + $this->post('/api/record/' . $server->id, ["token" => "abc123"])->assertStatus(403); + + $data = [ + "token" => $server->token, + "version" => "0.1.2", + "uname" => "Linux whatever..." + ]; - $response->assertStatus(200); + $this->post('/api/record/' . $server->id, $data)->assertStatus(200); } }