dootask/app/Http/Controllers/Api/LicenseController.php
kuaifan 4ca7fc10d1 feat(license): 新增在线授权(App Store 账号自助签发 + 自动续期)
- OnlineLicense 模块:登录/试用/续期/释放/状态机,离线↔在线互斥(last-write-wins)
- LicenseController + 动态路由;容器内 supervisor 独立进程定时续期(不依赖 LARAVELS_TIMER)
- license.vue 双 Tab:在线授权 + 离线绑定二次确认,已绑定在线时离线页提示+按需绑定
- 进入授权页静默刷新;同步 ai-kb 在线授权知识库

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 08:22:26 +00:00

98 lines
2.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Http\Controllers\Api;
use App\Models\User;
use App\Module\Base;
use App\Module\OnlineLicense;
use Request;
/**
* 在线授权客户端(与 SystemController::license 的离线粘贴并存)。
*
* 动态路由routes/web.php
* api/license/login -> login()
* api/license/trial/send -> trial__send()
* api/license/trial -> trial()
* api/license/status -> status()
* api/license/refresh -> refresh()
* api/license/logout -> logout()
*/
class LicenseController extends AbstractController
{
/**
* 账号登录并签发在线授权
*/
public function login()
{
User::auth('admin');
$account = trim(Request::input('account'));
$password = trim(Request::input('password'));
if ($account === '' || $password === '') {
return Base::retError('请输入账号和密码');
}
$data = OnlineLicense::login($account, $password);
return Base::retSuccess('授权成功', $data);
}
/**
* 发送试用验证码
*/
public function trial__send()
{
User::auth('admin');
$account = trim(Request::input('account'));
$password = trim(Request::input('password'));
if ($account === '' || $password === '') {
return Base::retError('请输入账号和密码');
}
$email = OnlineLicense::trialSend($account, $password);
return Base::retSuccess('验证码已发送', ['email' => $email]);
}
/**
* 申请试用并签发
*/
public function trial()
{
User::auth('admin');
$account = trim(Request::input('account'));
$password = trim(Request::input('password'));
$code = trim(Request::input('code'));
if ($account === '' || $password === '' || $code === '') {
return Base::retError('请输入账号、密码和验证码');
}
$data = OnlineLicense::trial($account, $password, $code);
return Base::retSuccess('试用已开通', $data);
}
/**
* 当前在线授权状态
*/
public function status()
{
User::auth('admin');
return Base::retSuccess('success', OnlineLicense::status());
}
/**
* 进入授权页时的静默刷新:服务可达则更新授权数据,网络失败则不更新、不提示。
*/
public function refresh()
{
User::auth('admin');
OnlineLicense::refresh();
return Base::retSuccess('success', OnlineLicense::status());
}
/**
* 退出在线授权(释放座位 + 回落默认)
*/
public function logout()
{
User::auth('admin');
OnlineLicense::logout();
return Base::retSuccess('已退出在线授权');
}
}