mirror of
https://github.com/easychen/pushdeer.git
synced 2024-12-05 00:19:21 +08:00
添加SimpleToken的API实现和文档
This commit is contained in:
parent
e5d715e06d
commit
6927a94860
32
README.md
32
README.md
@ -419,6 +419,38 @@ type 为 image 时,text 中为要发送图片的URL。
|
||||
|-|-|-|
|
||||
|token|认证token|
|
||||
|
||||
#### Simple token
|
||||
> 为了方便客户端永久保持登入状态,我们提供了一个永不失效的Token,即 Simple token
|
||||
|
||||
##### 获取 Simple token
|
||||
通过 上文中的「获得当前用户的基本信息」接口(`POST /user/info`) 得到
|
||||
|
||||
##### 通过 Simple token 登入
|
||||
|
||||
`POST /login/simple_token`
|
||||
|
||||
|参数|说明|备注|
|
||||
|-|-|-|
|
||||
|stoken|Simple token|
|
||||
|
||||
登入成功返回认证token。
|
||||
|
||||
##### 重置 Simple token
|
||||
|
||||
`POST /simple_token/regen`
|
||||
|
||||
|参数|说明|备注|
|
||||
|-|-|-|
|
||||
|token|认证token|
|
||||
|
||||
##### 清空 Simple token
|
||||
|
||||
`POST /simple_token/remove`
|
||||
|
||||
|参数|说明|备注|
|
||||
|-|-|-|
|
||||
|token|认证token|
|
||||
|
||||
|
||||
[更详细的请求和返回值可以参考这里](doc/api/PushDeerOS.md)
|
||||
|
||||
|
@ -39,6 +39,40 @@ class PushDeerUserController extends Controller
|
||||
$the_user['level'] = 1;
|
||||
|
||||
$pd_user = PushDeerUser::create($the_user);
|
||||
$pd_user['simple_token'] = 'SP'.$pd_user['id'].'P'.md5(uniqid(rand(), true));
|
||||
$pd_user->save();
|
||||
}
|
||||
|
||||
// 将数据写到session
|
||||
session_start();
|
||||
$_SESSION['uid'] = $pd_user['id'];
|
||||
$_SESSION['name'] = $pd_user['name'];
|
||||
$_SESSION['email'] = $pd_user['email'];
|
||||
$_SESSION['level'] = $pd_user['level'];
|
||||
$_SESSION['simple_token'] = $pd_user['simple_token'];
|
||||
|
||||
session_regenerate_id(true);
|
||||
$token = session_id();
|
||||
return http_result(['token'=>$token]);
|
||||
}
|
||||
|
||||
return send_error('id_token解析错误', ErrorCode('ARGS'));
|
||||
}
|
||||
|
||||
public function loginBySimpleToken(Request $request)
|
||||
{
|
||||
$validated = $request->validate(
|
||||
[
|
||||
'stoken' => 'required|string',
|
||||
]
|
||||
);
|
||||
|
||||
if (!$pd_user = PushDeerUser::where('simple_token', $validated['stoken'])->get()->first()) {
|
||||
return send_error('stoken无效', ErrorCode('ARGS'));
|
||||
}
|
||||
|
||||
if ($pd_user['level']<1) {
|
||||
return send_error('账号已被禁用', ErrorCode('ARGS'));
|
||||
}
|
||||
|
||||
// 将数据写到session
|
||||
@ -53,7 +87,26 @@ class PushDeerUserController extends Controller
|
||||
return http_result(['token'=>$token]);
|
||||
}
|
||||
|
||||
return send_error('id_token解析错误', ErrorCode('ARGS'));
|
||||
public function simpleTokenRegen(Request $request)
|
||||
{
|
||||
// get user by session
|
||||
if (!$pd_user = PushDeerUser::where('id', $_SESSION['uid'])->get()->first()) {
|
||||
return send_error('用户不存在', ErrorCode('ARGS'));
|
||||
}
|
||||
$pd_user['simple_token'] = 'SP'.$pd_user['id'].'P'.md5(uniqid(rand(), true));
|
||||
$pd_user->save();
|
||||
return http_result(['stoken'=>$pd_user['simple_token']]);
|
||||
}
|
||||
|
||||
public function simpleTokenRemove(Request $request)
|
||||
{
|
||||
// get user by session
|
||||
if (!$pd_user = PushDeerUser::where('id', $_SESSION['uid'])->get()->first()) {
|
||||
return send_error('用户不存在', ErrorCode('ARGS'));
|
||||
}
|
||||
$pd_user['simple_token'] = '';
|
||||
$pd_user->save();
|
||||
return http_result(['stoken'=>$pd_user['simple_token']]);
|
||||
}
|
||||
|
||||
public function wecode2unionid(Request $request)
|
||||
@ -133,6 +186,8 @@ class PushDeerUserController extends Controller
|
||||
$the_user['level'] = 1;
|
||||
|
||||
$pd_user = PushDeerUser::create($the_user);
|
||||
$pd_user['simple_token'] = 'SP'.$pd_user['id'].'P'.md5(uniqid(rand(), true));
|
||||
$pd_user->save();
|
||||
}
|
||||
|
||||
// 将数据写到session
|
||||
@ -141,6 +196,7 @@ class PushDeerUserController extends Controller
|
||||
$_SESSION['name'] = $pd_user['name'];
|
||||
$_SESSION['email'] = $pd_user['email'];
|
||||
$_SESSION['level'] = $pd_user['level'];
|
||||
$_SESSION['simple_token'] = $pd_user['simple_token'];
|
||||
|
||||
session_regenerate_id(true);
|
||||
$token = session_id();
|
||||
@ -175,6 +231,8 @@ class PushDeerUserController extends Controller
|
||||
$the_user['level'] = 1;
|
||||
|
||||
$pd_user = PushDeerUser::create($the_user);
|
||||
$pd_user['simple_token'] = 'SP'.$pd_user['id'].'P'.md5(uniqid(rand(), true));
|
||||
$pd_user->save();
|
||||
}
|
||||
|
||||
// 将数据写到session
|
||||
@ -183,6 +241,7 @@ class PushDeerUserController extends Controller
|
||||
$_SESSION['name'] = $pd_user['name'];
|
||||
$_SESSION['email'] = $pd_user['email'];
|
||||
$_SESSION['level'] = $pd_user['level'];
|
||||
$_SESSION['simple_token'] = $pd_user['simple_token'];
|
||||
|
||||
session_regenerate_id(true);
|
||||
$token = session_id();
|
||||
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddSimpleTokenToUserTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('push_deer_users', function (Blueprint $table) {
|
||||
$table->string('simple_token')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('push_deer_users', function (Blueprint $table) {
|
||||
$table->dropColumn('simple_token');
|
||||
});
|
||||
}
|
||||
}
|
@ -23,6 +23,9 @@ use Illuminate\Support\Facades\Route;
|
||||
// 假登入,用于测试使用
|
||||
Route::any('/login/fake', 'App\Http\Controllers\PushDeerUserController@fakeLogin');
|
||||
|
||||
// 通过 simple_token 登入
|
||||
Route::any('/login/simple_token', 'App\Http\Controllers\PushDeerUserController@loginBySimpleToken');
|
||||
|
||||
// 通过 apple 返回的 idtoken 登入
|
||||
Route::post('/login/idtoken', 'App\Http\Controllers\PushDeerUserController@login');
|
||||
|
||||
@ -59,6 +62,11 @@ Route::middleware('auto.login')->group(function () {
|
||||
// 删除一个key
|
||||
Route::post('/key/remove', 'App\Http\Controllers\PushDeerKeyController@remove');
|
||||
|
||||
// simple_token
|
||||
Route::post('/simple_token/regen', 'App\Http\Controllers\PushDeerUserController@simpleTokenRegen');
|
||||
|
||||
Route::post('/simple_token/remove', 'App\Http\Controllers\PushDeerUserController@simpleTokenRemove');
|
||||
|
||||
// 消息列表
|
||||
Route::post('/message/list', 'App\Http\Controllers\PushDeerMessageController@list');
|
||||
// 删除消息
|
||||
|
Loading…
Reference in New Issue
Block a user