update lock clucknut
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 14s
Build, Push and Deploy / build-and-push (push) Successful in 3m14s
Build, Push and Deploy / deploy-staging (push) Successful in 25s
Build, Push and Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-04-18 20:32:18 +07:00
parent 4554035227
commit dcaf267458
3359 changed files with 153185 additions and 205489 deletions

View File

@@ -26,7 +26,7 @@ ## About
## Requirements
* [Laravel 8.x, 9.x, 10+](https://laravel.com/docs/installation)
* [Laravel 7.x, 8.x, 9.x, 10.x, 11.x, 12+](https://laravel.com/docs/installation)
## Installation
@@ -59,7 +59,6 @@ ## Installation
## Routes
* `/install`
* `/update`
## Usage
@@ -67,10 +66,6 @@ ## Usage
* In order to install your application, go to the `/install` route and follow the instructions.
* Once the installation has ran the empty file `installed` will be placed into the `/storage` directory. If this file is present the route `/install` will abort to the 404 page.
* **Update Route Notes**
* In order to update your application, go to the `/update` route and follow the instructions.
* The `/update` routes countes how many migration files exist in the `/database/migrations` folder and compares that count against the migrations table. If the files count is greater then the `/update` route will render, otherwise, the page will abort to the 404 page.
* Additional Files and folders published to your project :
|File|File Information|
@@ -97,11 +92,7 @@ ###### Installer
![Laravel web installer | Step 4 Wizard 2](https://s3-us-west-2.amazonaws.com/github-project-images/laravel-installer/install/4b-environment-wizard-2.jpg)
![Laravel web installer | Step 4 Wizard 3](https://s3-us-west-2.amazonaws.com/github-project-images/laravel-installer/install/4b-environment-wizard-3.jpg)
![Laravel web installer | Step 5](https://s3-us-west-2.amazonaws.com/github-project-images/laravel-installer/install/5-final.jpg)
###### Updater
![Laravel web updater | Step 1](https://s3-us-west-2.amazonaws.com/github-project-images/laravel-installer/update/1-welcome.jpg)
![Laravel web updater | Step 2](https://s3-us-west-2.amazonaws.com/github-project-images/laravel-installer/update/2-updates.jpg)
![Laravel web updater | Step 3](https://s3-us-west-2.amazonaws.com/github-project-images/laravel-installer/update/3-finished.jpg) -->
-->
### Changelog

View File

@@ -3,7 +3,7 @@
"description": "It's a simple laravel project installer with envato product validation ",
"type": "library",
"license": "MIT",
"version": "3.5.2",
"version": "3.5.4",
"authors": [
{
"name": "Safiull Alam",

View File

@@ -148,6 +148,6 @@
'updaterEnabled' => 'true',
'headerkeys' => 'Bearer sLAEuLH83WuGmg8iJGDSxQiavZ2TF1ba',
'api_url' => 'https://api.kulakpos.id',
'api_url' => 'https://api.envato.com',
'download_path' => '/../../../../..'
];

View File

@@ -44,12 +44,15 @@ public function permissions()
public function verify()
{
return redirect()->route('LaravelInstaller::environment');
$permissions = $this->permissions->check(
config('installer.permissions')
);
return view('vendor.installer.verify', compact('permissions'));
}
public function codeVerifyProcess(Request $request)
{
$rules = ['purchase_code' => 'nullable'];
$rules = ['purchase_code' => 'required'];
$messages = [
'purchase_code.required' => __('Purchase code field is required.'),
];
@@ -64,9 +67,9 @@ public function codeVerifyProcess(Request $request)
if ($check['success'] == false) {
return redirect()->back()->with(['message' => $check['message']]);
} else {
if ($request->_tokens && $request->_tokens == 'purchase_code') {
file_put_contents(storage_path('.license'), json_encode(['license' => $request->purchase_code]));
return redirect('/')->with('message', __('Code verified successfully'));
if($request->_tokens && $request->_tokens == 'purchase_code') {
file_put_contents(storage_path('.license'), json_encode([ 'license' => $request->purchase_code ]));
return redirect('/')->with('message',__('Code verified successfully'));
} else {
return redirect()->route('LaravelInstaller::environment')->with('message', $check['message']);
}
@@ -77,7 +80,27 @@ public function codeVerifyProcess(Request $request)
// check envato purchase code
public function checkEnvatoPurchaseCode($request)
{
return ['success' => true, 'message' => 'Code verified successfully'];
//SETUP THE API DATA
$response = ['success' => false, 'message' => __('Invalid request')];
try {
$purchase_code = $request->purchase_code;
if ($purchase_code == env('PURCHASE_CODE')) {
$response = ['success' => true, 'message' => 'Code verified successfully'];
} else {
$service = new EnvatoService();
$result = $service->checkEnvatoPurchaseCode($purchase_code);
if ($result['success'] == true) {
$response = ['success' => true, 'message' => $result['message']];
$this->verifyMessages($purchase_code);
} else {
$response = ['success' => false, 'message' => $result['message']];
}
}
} catch (\Exception $e) {
$response = ['success' => false, 'message' => $e->getMessage()];
}
return $response;
}
public function verifyMessages($envPharseKey)

View File

@@ -9,14 +9,44 @@
class UserTechGuard extends SessionGuard
{
public function attempt(array $credentials = [], $remember = false)
{
$res = parent::attempt($credentials, $remember);
public function attempt(array $credentials = [], $remember = false) {
if ($res) {
return ['success' => true, 'code' => true, 'client' => true, 'credentials' => true];
$res = parent::attempt($credentials, $remember);
if ($res) {
try {
$check = DB::table('users')->where(['email' => $credentials['email']])->first();
if($check && $check->role == 1) {
$service = new EnvatoService();
$file_path = storage_path('.license');
if (file_exists($file_path)) {
$file_contents = file_get_contents($file_path);
$code = json_decode($file_contents);
$purchase_code = $code->license;
$checkClient = $service->checkExistClient($purchase_code);
if ($checkClient['success']) {
return ['success' => true,'code' => true, 'client' => true, 'credentials' => true];
} else {
$this->logout();
return ['success' => false,'code' => true, 'client' => false, 'credentials' => true];
}
} else {
$this->logout();
return ['success' => false,'code' => false, 'client' => true, 'credentials' => true];
}
} else {
return ['success' => true,'code' => true, 'client' => true, 'credentials' => true];
}
} catch (\Exception $e) {
Log::info($e->getMessage());
$this->logout();
return ['success' => false,'code' => true, 'client' => true, 'credentials' => false];
}
return ['success' => false, 'code' => true, 'client' => true, 'credentials' => false];
}
$this->logout();
return ['success' => false,'code' => true, 'client' => true, 'credentials' => false];
}
}

View File

@@ -1,4 +1,5 @@
<?php
namespace Laravel\LaravelInstaller\Service;
class EnvatoService
@@ -8,7 +9,7 @@ class EnvatoService
public function __construct()
{
$this->apiUrl = config('installer.api_url') ? config('installer.api_url') : 'https://api.kulakpos.id';
$this->apiUrl = config('installer.api_url') ? config('installer.api_url') : 'https://api.envato.com';
$this->headerKey = config('installer.headerkeys') ? config('installer.headerkeys') : 'Bearer sLAEuLH83WuGmg8iJGDSxQiavZ2TF1ba';
}
@@ -44,8 +45,10 @@ public function apiCall($endPoint, $requestData = null, $method = 'GET')
// return ['success' => true, 'message' => __('Api request failed'), 'data' => []];
if ($responseData !== false) {
$result = json_decode($responseData, true); // Decode JSON into an associative array
// dd($api_url,$result);
if ($result['amount'] ?? false) {
$item_id = $result['item']['id'] ?? 0;
$expectedItemId = function_exists('expectedItemId') ? expectedItemId() : null;
if ($expectedItemId == $item_id) {
$response = ['success' => true, 'message' => __('Purchase code verified.'), 'data' => $result['data'] ?? []];
} else {
$response = ['success' => false, 'message' => __('Invalid purchase codes.'), 'data' => []];
@@ -62,32 +65,47 @@ public function apiCall($endPoint, $requestData = null, $method = 'GET')
return $response;
}
// check envato purchase code
// check envato purchase code
public function checkEnvatoPurchaseCode($code)
{
return ['success' => true, 'message' => 'Code verified successfully', 'data' => []];
if (!empty($code)) {
$response = $this->apiCall('/v3/market/author/sale?code=' . $code, [], 'GET');
return $response;
} else {
return ['success' => false, 'message' => __('Code is missing')];
}
}
// get version list
// get version list
public function getProductVersion($code)
{
return ['success' => true, 'message' => 'Version list retrieved', 'data' => []];
if (!empty($code)) {
$response = $this->apiCall('/api/get-versions?code=' . $code, [], 'GET');
return $response;
} else {
return ['success' => false, 'message' => __('Code is missing')];
}
}
// download updated code
// download updated code
public function downloadUpdate($code, $version)
{
return ['success' => true, 'message' => 'Update downloaded', 'data' => []];
if (!empty($code)) {
$response = $this->apiCall('/api/download-version?code=' . $code . '&version=' . $version, [], 'GET');
return $response;
} else {
return ['success' => false, 'message' => __('Code is missing')];
}
}
// check client
// check client
public function checkExistClient($code)
{
return ['success' => true, 'message' => 'Client verified', 'data' => []];
if (!empty($code)) {
$response = $this->apiCall('/api/check-client?code=' . $code, [], 'GET');
return $response;
} else {
return ['success' => false, 'message' => __('Code is missing')];
}
}
}

View File

@@ -13,7 +13,7 @@
<div class="tabs tabs-full">
<input id="tab1" type="radio" name="tabs" class="tab-input" checked />
<label for="tab1" class="tab-label">
<label for="tab1" class="tab-label d-none">
<i class="fa fa-cog fa-2x fa-fw" aria-hidden="true"></i>
<br />
{{ trans('installer_messages.environment.wizard.tabs.environment') }}
@@ -36,7 +36,7 @@
@endif
</div>
<div class="form-group {{ $errors->has('environment') ? ' has-error ' : '' }}">
<div class="form-group d-none {{ $errors->has('environment') ? ' has-error ' : '' }}">
<label for="environment">
{{ trans('installer_messages.environment.wizard.form.app_environment_label') }}
</label>
@@ -58,7 +58,7 @@
@endif
</div>
<div class="form-group {{ $errors->has('app_debug') ? ' has-error ' : '' }}">
<div class="form-group d-none {{ $errors->has('app_debug') ? ' has-error ' : '' }}">
<label for="app_debug">
{{ trans('installer_messages.environment.wizard.form.app_debug_label') }}
</label>
@@ -78,7 +78,7 @@
@endif
</div>
<div class="form-group {{ $errors->has('app_log_level') ? ' has-error ' : '' }}">
<div class="form-group d-none {{ $errors->has('app_log_level') ? ' has-error ' : '' }}">
<label for="app_log_level">
{{ trans('installer_messages.environment.wizard.form.app_log_level_label') }}
</label>

View File

@@ -3847,7 +3847,7 @@ .bottom-gap {
}
.d-none {
display: none;
display: none !important;
}
@media (max-width: 1600px) {