shell bypass 403
<?php
namespace App\Http\Controllers\addons\included;
use App\Http\Controllers\Controller;
use App\Models\Languages;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\File;
class LanguageController extends Controller
{
public function index(Request $request)
{
$getlanguages = Languages::where('is_available', '1')->get();
if ($request->code == "") {
foreach ($getlanguages as $firstlang) {
$currantLang = Languages::where('code', $firstlang->code)->first();
break;
}
} else {
$currantLang = Languages::where('code', $request->code)->first();
}
$dir = base_path() . '/resources/lang/' . $currantLang->code;
if (!is_dir($dir)) {
$dir = base_path() . '/resources/lang/en';
}
$arrLabel = json_decode(file_get_contents($dir . '/' . 'labels.json'));
$arrMessage = json_decode(file_get_contents($dir . '/' . 'messages.json'));
return view('admin.included.language.index', compact('getlanguages', 'currantLang', 'arrLabel', 'arrMessage'));
}
public function language(Request $request)
{
$getlanguages = Languages::where('is_available', '1')->get();
if ($request->code == "") {
foreach ($getlanguages as $firstlang) {
$currantLang = Languages::where('code', $firstlang->code)->first();
break;
}
} else {
$currantLang = Languages::where('code', $request->code)->first();
}
$dir = base_path() . '/resources/lang/' . $currantLang->code;
if (!is_dir($dir)) {
$dir = base_path() . '/resources/lang/en';
}
$arrLabel = json_decode(file_get_contents($dir . '/' . 'labels.json'));
$arrMessage = json_decode(file_get_contents($dir . '/' . 'messages.json'));
return view('admin.included.language.index', compact('getlanguages', 'currantLang', 'arrLabel', 'arrMessage'));
}
public function add()
{
return view('admin.included.language.add');
}
public function store(Request $request)
{
$path = base_path('resources/lang/' . $request->code);
if (!File::isDirectory($path)) {
File::makeDirectory($path, 0777, true, true);
}
File::copyDirectory(base_path() . '/resources/lang/en', base_path() . '/resources/lang/' . $request->code);
if ($request->default == 1) {
Languages::where('is_default', '1')->update(array('is_default' => 2));
$default = 1;
} else {
$default = 2;
}
$language = new Languages();
$language->code = $request->code;
$language->name = $request->name;
$language->layout = $request->layout;
$language->is_default = $default;
if ($request->has('image')) {
$flagimage = 'flag-' . uniqid() . "." . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(storage_path('app/public/admin-assets/images/language/'), $flagimage);
$language->image = $flagimage;
}
$language->is_available = 1;
$language->save();
return redirect('admin/language-settings')->with('success', trans('messages.success'));
}
public function status(Request $request)
{
$language = Languages::find($request->id);
$language->is_available = $request->status;
$language->save();
if ($language) {
return redirect()->back()->with('success', trans('messages.success'));
} else {
return redirect()->back()->with('error', trans('messages.wrong'));
}
}
public function storeLanguageData(Request $request)
{
$langFolder = base_path() . '/resources/lang/' . $request->currantLang;
if (!is_dir($langFolder)) {
mkdir($langFolder);
chmod($langFolder, 0777);
}
if (isset($request->file) == "label") {
if (isset($request->label) && !empty($request->label)) {
$content = "<?php return [";
$contentjson = "{";
foreach ($request->label as $key => $data) {
$content .= '"' . $key . '" => "' . str_replace('\\', '', addslashes($data)) . '",';
$contentjson .= '"' . $key . '":"' . $data . '",';
}
$content .= "];";
$contentjson .= "}";
file_put_contents($langFolder . "/labels.php", $content);
file_put_contents($langFolder . "/labels.json", str_replace(",}", "}", $contentjson));
}
}
if (isset($request->file) == "message") {
if (isset($request->message) && !empty($request->message)) {
$content = "<?php return [";
$contentjson = "{";
foreach ($request->message as $key => $data) {
$content .= '"' . $key . '" => "' . str_replace('\\', '', addslashes($data)) . '",';
$contentjson .= '"' . $key . '":"' . $data . '",';
}
$content .= "];";
$contentjson .= "}";
file_put_contents($langFolder . "/messages.php", $content);
file_put_contents($langFolder . "/messages.json", str_replace(",}", "}", $contentjson));
}
}
return redirect()->back()->with('success', trans('messages.success'));
}
public function layout(Request $request)
{
$language = Languages::find($request->id);
$language->layout = $request->status;
$language->save();
return redirect()->back()->with('success', trans('messages.success'));
}
public function edit($id)
{
$getlanguage = Languages::where('id', $id)->first();
return view('admin.included.language.edit', compact('getlanguage'));
}
public function update(Request $request, $id)
{
try {
$default = 2;
if ($request->default == 1) {
Languages::where('is_default', '1')->update(array('is_default' => 2));
$default = $request->default;
}
$language = Languages::where('id', $id)->first();
$language->layout = $request->layout;
$language->is_default = @$default;
if ($request->has('image')) {
$flagimage = 'flag-' . uniqid() . "." . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(env('ASSETSPATHURL') . 'admin-assets/images/language/', $flagimage);
$language->image = $flagimage;
}
$language->update();
return redirect('admin/language-settings')->with('success', trans('messages.success'));
} catch (\Throwable $th) {
return redirect('admin/language-settings')->with('error', trans('messages.wrong'));
}
}
public function delete(Request $request)
{
$Languages = Languages::where('id', $request->id)->first();
$updateLanguages = Languages::where('id', $request->id)->update(array('is_available' => $request->status));
if ($updateLanguages) {
if (file_exists(env('ASSETSPATHURL') . 'admin-assets/images/Languages/' . $Languages->image)) {
unlink(env('ASSETSPATHURL') . 'admin-assets/images/Languages/' . $Languages->image);
}
return redirect()->back()->with('success', trans('messages.success'));
} else {
return redirect()->back()->with('error', trans('messages.wrong'));
}
}
// Language change from header
public function change(Request $request)
{
$layout = Languages::select('name', 'layout', 'image')->where('code', $request->lang)->first();
App::setLocale($request->lang);
session()->put('locale', $request->lang);
session()->put('language', $layout->name);
session()->put('flag', $layout->image);
session()->put('direction', $layout->layout);
return redirect()->back();
}
}