Kaydet (Commit) 851c5669 authored tarafından Baran Sekin's avatar Baran Sekin

Removed old module hooks

üst c41e46d8
......@@ -5,7 +5,6 @@ namespace App\Http\Controllers\Module;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Module;
use App\ModuleHook;
class MainController extends Controller
{
......@@ -16,48 +15,12 @@ class MainController extends Controller
$module->enabled_text = $module->enabled
? "Aktif"
: "İzin Verilmemiş";
$module->hook_count = $module->hooks->count();
});
return view('modules.index', [
"modules" => $modules,
]);
}
public function getHooks()
{
$module = Module::findOrFail(request("module_id"));
$hooks = $module->hooks;
$hooks->map(function ($hook) {
$hook->enabled_text = $hook->enabled ? "Aktif" : "İzin Verilmemiş";
});
return view('l.table', [
"id" => "moduleHooks",
"value" => $hooks,
"title" => ["Adı", "Durumu", "*hidden*", "*hidden*"],
"display" => [
"hook",
"enabled_text",
"id:module_hook_id",
"enabled:enabled",
],
]);
}
public function modifyHookStatus()
{
$idList = json_decode(request('target_ids'));
$flag = ModuleHook::whereIn("id", $idList)->update([
"enabled" => request('target_status') == "allow" ? true : false,
]);
if ($flag) {
return respond("Tetikleyiciler güncellendi.");
} else {
return respond("Bir hata oluştu.$flag", 201);
}
}
public function modifyModuleStatus()
{
$module = Module::findOrFail(request('module_id'))->first();
......
<?php
Route::get('/modules', 'Module\MainController@index')->name('modules_index');
Route::post('/modules/hooks', 'Module\MainController@getHooks')->name(
'module_hooks'
);
Route::post(
'/modules/hooks/update',
'Module\MainController@modifyHookStatus'
)->name('module_hooks_update');
Route::post(
'/modules/update',
'Module\MainController@modifyModuleStatus'
)->name('module_update');
Route::post(
'/modules/getSettings',
'Module\MainController@getModuleSettings'
)->name('module_settings_get');
Route::post(
'/modules/saveSettings',
'Module\MainController@saveModuleSettings'
)->name('module_settings_save');
......@@ -469,37 +469,7 @@ if (!function_exists('hook')) {
*/
function hook($name, $data = [])
{
$hooks = App\ModuleHook::where([
'hook' => $name,
'enabled' => true,
])->get();
array_key_exists("user", $data) ? ($data["user"] = user()) : null;
array_key_exists("extension", $data)
? ($data["extension"] = extension())
: null;
array_key_exists("server", $data) ? ($data["server"] = server()) : null;
$data = base64_encode(json_encode($data));
$modellist = [];
foreach ($hooks as $hook) {
if (!array_key_exists($hook->module_name, $modellist)) {
$foo = Module::where("name", $hook->module_name)->first();
if (!$foo) {
continue;
}
$modellist[$hook->module_name] = $foo->enabled;
unset($foo);
}
if ($modellist[$hook->module_name] == false) {
continue;
}
$command =
"/liman/modules/" . $hook->module_name . "/main $name $data";
shell_exec("bash -c '$command & disown' &");
}
// Will be implemented
}
}
......
......@@ -9,9 +9,4 @@ class Module extends Model
use UsesUuid;
protected $fillable = ["name", "enabled"];
public function hooks()
{
return $this->hasMany('App\ModuleHook');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ModuleHook extends Model
{
use UsesUuid;
protected $fillable = ["module_id", "module_name", "hook", "enabled"];
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateModuleHooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('module_hooks', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->uuid('module_id');
$table->string('hook');
$table->string('module_name');
$table->boolean('enabled')->default(true);
$table
->foreign("module_id")
->references("id")
->on("modules")
->onDelete("cascade");
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('module_hooks');
}
}
......@@ -16,184 +16,12 @@
@include('table',[
"value" => $modules,
"title" => [
"Adı" , "Durumu", "Tetikleyici Sayısı", "*hidden*", "*hidden*"
"Adı" , "Durumu", "*hidden*", "*hidden*"
],
"display" => [
"name" , "enabled_text", "hook_count", "id:module_id", "enabled:enabled"
"name" , "enabled_text", "id:module_id", "enabled:enabled"
],
/*"menu" => [
"Verileri Düzenle" => [
"target" => "getModuleSettings",
"icon" => " context-menu-icon-edit"
],
"Yetkileri Düzenle" => [
"target" => "details",
"icon" => "fas fa-user-secret"
]
]*/
])
</div>
</div>
@component('modal-component',[
"id" => "moduleDetails",
"title" => "Modül Yetkileri"
])
<div>
<div class="float-right">
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-success active" id="moduleEnableButton" onclick="toggleStatusOfModule(true)">
<input type="radio" value="enabled">{{__("Aktif")}}
</label>
<label class="btn btn-light" id="moduleDisableButton" onclick="toggleStatusOfModule(false)">
<input type="radio" value="disabled">{{__("Devre Dışı")}}
</label>
</div>
</div>
</div><br>
<div class="row">
<div class="col-md-12">
<p>{{__("Tetikleyiciler Liman MYS içerisindeki belli başlı olayların modüllere iletilmesi ile görevlidir.Örneğin bir modül eğer bir anahtar yöntemi oluşturmak ile görevli ise, bunun için anahtar doğrulama tetiğine ihtiyaç duyar.")}}</p>
<p>{{__("Tetikleyicileri aşağıdan kısıtlayabilirsiniz, fakat bu durumda modül çalışmayabilir.")}}</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
{{__("Seçili Tetikleyicilere : ")}}
<button class="btn btn-sm btn-primary" onclick="modifyStatusOfHooks('allow')">{{__("İzin Ver")}}</button>
<button class="btn btn-sm btn-secondary" onclick="modifyStatusOfHooks('deny')">{{__("İznini Sil")}}</button>
</div>
</div><br>
<div id="moduleHooksWrapper"></div>
@endcomponent
@component('modal-component',[
"id" => "moduleVariables",
"title" => "Modül Verileri"
])
<form onsubmit="return saveModuleSettings(this)">
<div id="moduleVariablesWrapper"></div>
<button type="submit" class="btn btn-primary">{{__("Kaydet")}}</button>
</form>
@endcomponent
<script>
let lastElement = null;
function details(element = null){
if(element == null){
element = lastElement;
}else{
lastElement = element;
}
let module_id = element.querySelector('#module_id').innerHTML;
toggleModuleStatusButtons(element.querySelector("#enabled").innerHTML == 1 ? true : false);
showSwal("Yükleniyor...",'info');
let form = new FormData();
form.append('module_id',module_id);
request("{{route('module_hooks')}}", form, function(success){
$("#moduleHooksWrapper").html(success);
$("#moduleHooks").DataTable(dataTablePresets('multiple'));
Swal.close();
}, function(error){
let json = JSON.parse(error);
showSwal(json.message,'error',2000);
});
$("#moduleDetails").modal('show');
}
function modifyStatusOfHooks(target){
let form = new FormData();
let items = [];
let table = $("#moduleHooks").DataTable();
table.rows( { selected: true } ).data().each(function(element){
items.push(element[3]);
});
if(items.length == 0){
return showSwal("Lütfen önce bir seçim yapınız.",'error',2000);
}
showSwal("Güncelleniyor...",'info');
form.append('target_ids',JSON.stringify(items));
form.append('target_status',target);
request("{{route('module_hooks_update')}}",form,function(success){
let json = JSON.parse(success);
showSwal(json.message,'success',2000);
setTimeout(() => {
details();
}, 1500);
},function(error){
let json = JSON.parse(error);
showSwal(json.message,'error',2000);
});
}
function toggleStatusOfModule(targetStatus){
toggleModuleStatusButtons(targetStatus);
showSwal("Kaydediliyor...",'info');
let form = new FormData();
form.append('module_id',lastElement.querySelector('#module_id').innerHTML);
form.append('moduleStatus',targetStatus ? "true" : "false");
request("{{route('module_update')}}",form,function(success){
let json = JSON.parse(success);
showSwal(json.message,'success',2000);
},function(error){
let json = JSON.parse(error);
showSwal(json.message,'error',2000);
});
}
function toggleModuleStatusButtons(status){
if(status){
$("#moduleEnableButton").attr("class","btn btn-success active");
$("#moduleDisableButton").attr("class","btn btn-light");
lastElement.querySelector("#enabled").innerHTML = 1;
lastElement.querySelector("#enabled_text").innerHTML = "Aktif";
}else{
$("#moduleDisableButton").attr("class","btn btn-danger active");
$("#moduleEnableButton").attr("class","btn btn-light");
lastElement.querySelector("#enabled").innerHTML = 0;
lastElement.querySelector("#enabled_text").innerHTML = "İzin Verilmemiş";
}
}
function getModuleSettings(element){
showSwal("Yükleniyor...",'info');
lastElement = element;
let form = new FormData();
form.append('module_id',element.querySelector('#module_id').innerHTML);
request("{{route('module_settings_get')}}",form,function(success){
let json = JSON.parse(success);
$("#moduleVariablesWrapper").html(json.message.view);
$("#moduleVariablesWrapper input").each(function(){
let current = $(this);
current.val(json.message.data[current.attr("name")]);
});
$("#moduleVariables").modal('show');
Swal.close();
},function(error){
let json = JSON.parse(error);
showSwal(json.message,'error',2000);
});
}
function saveModuleSettings(formHTML){
let form = new FormData();
showSwal("Kaydediliyor...",'info');
form.append('module_id',lastElement.querySelector('#module_id').innerHTML);
$(formHTML).find("input").each(function(){
let element = $(this);
form.append("mod-" + element.attr("name"), element.val());
});
return request("{{route('module_settings_save')}}",form,function(success){
let json = JSON.parse(success);
showSwal(json.message,'success');
setTimeout(() => {
getModuleSettings(lastElement);
}, 1500);
},function(error){
let json = JSON.parse(error);
showSwal(json.message,'error',2000);
});
}
</script>
@endsection
\ No newline at end of file
......@@ -2,10 +2,7 @@
use App\User;
use App\Module;
use App\ModuleHook;
use App\AdminNotification;
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash;
Artisan::command('administrator', function () {
......@@ -103,7 +100,7 @@ Artisan::command('module:add {module_name}', function ($module_name) {
}
$module = Module::create(["name" => $module_name, "enabled" => true]);
$notification = new AdminNotification([
"title" => "Yeni Modül Eklendi",
"type" => "new_module",
......@@ -111,9 +108,7 @@ Artisan::command('module:add {module_name}', function ($module_name) {
"level" => 3,
]);
$notification->save();
$this->info(
"Modul basariyla yuklendi."
);
$this->info("Modul basariyla yuklendi.");
})->describe("New module add");
Artisan::command('module:remove {module_name}', function ($module_name) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment