修改 README 添加 微信公众号小程序登录功能

START
鹿和sa0ChunLuyu 2 years ago
parent 9e91564cdc
commit 158c08b441

@ -1,14 +1,12 @@
# 入魔入佛
入魔入佛是一个基于 Laravel 10、Vue 3 和 Layui-vue 的项目初始模板,灵感来自于 Linux 命令 `rm -rf`。该模板旨在帮助开发者快速搭建现代化的 Web 应用程序
入魔入佛是一个基于 Laravel 10、Vue 3 和 Element-Plus 的初始模板项目,灵感来自于 Linux 命令 `rm -rf`。该模板旨在帮助开发者快速搭建中后台+小程序应用
## 功能特点
- 使用 Laravel 10 提供强大的后端功能和安全性。
- 使用 Vue 3 构建现代化的前端用户界面。
- 使用 Layui-vue 提供美观、简洁的 UI 组件。
- 集成了常用的开发工具和插件,提高开发效率。
- 遵循最佳实践和编码规范,提供可维护和可扩展的代码结构。
- 使用 `Laravel 10` 提供强大的后端功能和安全性。
- 使用 `Vue 3` 构建现代化的前端用户界面。
- 使用 `Element-Plus` 作为UI组件库提供丰富的界面组件和样式。
## 快速开始
@ -70,3 +68,16 @@ cd api && php artisan serve --host 0.0.0.0
---
请注意,入魔入佛仅作为一个项目初始模板,您可以根据自己的需求进行修改和扩展。希望这个模板能够帮助您快速启动项目并提供良好的开发体验!
## 免责声明
本模板仅供合法目的使用,禁止使用本模板编写任何违法程序或进行非法活动。使用者必须遵守国家和地区的法律法规,不得利用本模板从事任何违法行为,包括但不限于:
* 侵犯他人的隐私权、知识产权或其他合法权益;
* 发布、传播或利用恶意软件、病毒、木马等危害网络安全的程序;
* 进行网络诈骗、网络攻击、网络钓鱼等违法活动;
* 利用本模板从事任何违法、违规的行为。
使用本模板所造成的一切后果由使用者自行承担,开发者不承担任何责任。本模板仅提供技术支持和开发工具,不对使用者使用本模板的目的、行为和后果承担任何责任。使用者在使用本模板时应自行评估风险,并承担由此产生的任何损失或损害。
请在使用本模板之前详细阅读并理解上述说明和免责声明。如果您不同意或无法遵守上述要求,请勿使用本模板。如果您对使用本模板的合法性有任何疑问,请咨询法律专业人士的意见。

@ -0,0 +1,68 @@
<?php
namespace App\Http\Controllers;
use App\Models\WeChat;
use Illuminate\Http\Request;
use Yo;
class WeChatController extends Controller
{
public function auth($app_id)
{
$code = request()->get('code');
$state = request()->get('state');
$we_chat = WeChat::where('app_id', $app_id)->where('type', 1)->first();
if (!$we_chat) return Yo::error_echo(100001, ['公众号']);
$url = $state . "code=$code";
Yo::echo(['url' => $url]);
header("Location: $url");
exit();
}
public function gzh_login($we_chat, $code)
{
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='
. $we_chat->app_id . '&secret='
. $we_chat->app_secret . '&code='
. $code . '&grant_type=authorization_code';
$info = file_get_contents($url);
return json_decode($info, true);
}
public function mp_login($we_chat, $code)
{
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='
. $we_chat->app_id
. '&secret=' . $we_chat->app_secret
. '&js_code=' . $code . '&grant_type=authorization_code';
$info = file_get_contents($url);
$json = json_decode($info);
return get_object_vars($json);
}
public function login($code, $app_id)
{
$we_chat = WeChat::where('app_id', $app_id)->first();
$login = false;
if (!$we_chat) return false;
switch ($we_chat->type) {
case 1:
$login = $this->gzh_login($we_chat, $code);
break;
case 2:
$login = $this->mp_login($we_chat, $code);
break;
}
return ['login' => !!$login];
}
public function login_test(Request $request)
{
$code = $request->post('code');
$app_id = $request->post('app_id');
return Yo::echo([
'info' => $this->login($code, $app_id)
]);
}
}

@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class WeChat extends Model
{
use HasFactory;
}

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('we_chats', function (Blueprint $table) {
$table->id();
$table->string('name', 50)->comment('名称');
$table->tinyInteger('type')->comment('1-公众号 2-小程序');
$table->string('app_id', 80)->comment('小程序ID')->index();
$table->string('app_secret', 100)->comment('小程序密钥')->index();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('we_chats');
}
};

@ -13,17 +13,9 @@ use Illuminate\Support\Facades\Route;
|
*/
$admin_path = 'Admin';
$zero_path = 'Zero';
$app_path = 'App';
Route::get("open/Gzh/auth/{app_id}", [\App\Http\Controllers\WeChatController::class, 'auth']);
Route::get("api/Test/Excel/excel_test", [\App\Http\Controllers\ExcelController::class, 'excel_test']);
Route::post("api/Test/Email/email_test", [\App\Http\Controllers\EmailController::class, 'email_test']);
Route::post("api/Test/WeChatPay/callback_test/{app_id}", [\App\Http\Controllers\WeChatPayController::class, 'callback_test']);
Route::post("api/Test/WeChatPay/pay_test", [\App\Http\Controllers\WeChatPayController::class, 'pay_test']);
Route::post("api/Test/WeChat/login_test", [\App\Http\Controllers\WeChatController::class, 'login_test']);
Route::post("api/Gateway/close", [\App\Http\Controllers\GatewayController::class, 'close']);
Route::post("api/$admin_path/Config/create", [\App\Http\Controllers\ConfigController::class, 'create']);
Route::post("api/$admin_path/Config/update", [\App\Http\Controllers\ConfigController::class, 'update']);
Route::post("api/$admin_path/Config/delete", [\App\Http\Controllers\ConfigController::class, 'delete']);
@ -58,7 +50,6 @@ Route::post("api/$admin_path/Admin/info", [\App\Http\Controllers\AdminController
Route::post("api/$admin_path/Admin/login", [\App\Http\Controllers\AdminController::class, 'login']);
Route::post("api/$admin_path/ImageCaptcha/create", [\App\Http\Controllers\ImageCaptchaController::class, 'create']);
Route::post("api/$admin_path/Config/get", [\App\Http\Controllers\ConfigController::class, 'get']);
Route::post("api/$zero_path/Config/get", [\App\Http\Controllers\ConfigController::class, 'get']);
Route::any('api/yo', \App\Http\Controllers\YoController::class);
Route::get('/', function () {
return view('welcome');

Loading…
Cancel
Save