Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
L
Liman MYS - Çekirdek
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
liman
Liman MYS - Çekirdek
Commits
851c5669
Kaydet (Commit)
851c5669
authored
May 07, 2020
tarafından
Baran Sekin
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Removed old module hooks
üst
c41e46d8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
5 additions
and
331 deletions
+5
-331
MainController.php
app/Http/Controllers/Module/MainController.php
+0
-37
_routes.php
app/Http/Controllers/Module/_routes.php
+0
-24
Helpers.php
app/Http/Helpers.php
+1
-31
Module.php
app/Module.php
+0
-5
ModuleHook.php
app/ModuleHook.php
+0
-12
2020_04_17_093708_create_module_hooks_table.php
...igrations/2020_04_17_093708_create_module_hooks_table.php
+0
-40
index.blade.php
resources/views/modules/index.blade.php
+2
-175
console.php
routes/console.php
+2
-7
No files found.
app/Http/Controllers/Module/MainController.php
Dosyayı görüntüle @
851c5669
...
...
@@ -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
();
...
...
app/Http/Controllers/Module/_routes.php
Dosyayı görüntüle @
851c5669
<?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'
);
app/Http/Helpers.php
Dosyayı görüntüle @
851c5669
...
...
@@ -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
}
}
...
...
app/Module.php
Dosyayı görüntüle @
851c5669
...
...
@@ -9,9 +9,4 @@ class Module extends Model
use
UsesUuid
;
protected
$fillable
=
[
"name"
,
"enabled"
];
public
function
hooks
()
{
return
$this
->
hasMany
(
'App\ModuleHook'
);
}
}
app/ModuleHook.php
deleted
100644 → 0
Dosyayı görüntüle @
c41e46d8
<?php
namespace
App
;
use
Illuminate\Database\Eloquent\Model
;
class
ModuleHook
extends
Model
{
use
UsesUuid
;
protected
$fillable
=
[
"module_id"
,
"module_name"
,
"hook"
,
"enabled"
];
}
database/migrations/2020_04_17_093708_create_module_hooks_table.php
deleted
100644 → 0
Dosyayı görüntüle @
c41e46d8
<?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'
);
}
}
resources/views/modules/index.blade.php
Dosyayı görüntüle @
851c5669
...
...
@@ -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
routes/console.php
Dosyayı görüntüle @
851c5669
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment