添加安全密码修改接口
parent
9db9c2cab7
commit
6db2226286
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Endpoint\Api\Http\Controllers\Account;
|
||||||
|
|
||||||
|
use App\Endpoint\Api\Http\Controllers\Controller;
|
||||||
|
use App\Exceptions\BizException;
|
||||||
|
use App\Models\Wallet;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
|
||||||
|
class WalletPasswordController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 设置安全密码
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function reset(Request $request)
|
||||||
|
{
|
||||||
|
$input = $request->validate([
|
||||||
|
'old_password' => ['bail', 'filled', 'string', 'min:6', 'max:6'],
|
||||||
|
'new_password' => ['bail', 'required', 'string', 'min:6', 'max:6'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$wallet = $request->user()->wallet;
|
||||||
|
|
||||||
|
//如果已经设置安全密码则比对
|
||||||
|
if ($wallet && $wallet->password && (!$wallet->verifyPassword(Arr::get($input, 'old_password', '')))) {
|
||||||
|
throw new BizException('安全密码不正确');
|
||||||
|
}
|
||||||
|
|
||||||
|
Wallet::updateOrCreate(
|
||||||
|
['user_id'=> $request->user()->id],
|
||||||
|
['password' => $input['new_password']],
|
||||||
|
);
|
||||||
|
|
||||||
|
return response()->noContent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
use App\Endpoint\Api\Http\Controllers\Account\ChangePasswordController;
|
use App\Endpoint\Api\Http\Controllers\Account\ChangePasswordController;
|
||||||
use App\Endpoint\Api\Http\Controllers\Account\UserController;
|
use App\Endpoint\Api\Http\Controllers\Account\UserController;
|
||||||
|
use App\Endpoint\Api\Http\Controllers\Account\WalletPasswordController;
|
||||||
use App\Endpoint\Api\Http\Controllers\AdController;
|
use App\Endpoint\Api\Http\Controllers\AdController;
|
||||||
use App\Endpoint\Api\Http\Controllers\AfterSaleController;
|
use App\Endpoint\Api\Http\Controllers\AfterSaleController;
|
||||||
use App\Endpoint\Api\Http\Controllers\AliOssController;
|
use App\Endpoint\Api\Http\Controllers\AliOssController;
|
||||||
|
|
@ -82,6 +83,8 @@ Route::group([
|
||||||
Route::put('me', [UserController::class, 'update']);
|
Route::put('me', [UserController::class, 'update']);
|
||||||
// 修改密码
|
// 修改密码
|
||||||
Route::post('change-password', ChangePasswordController::class);
|
Route::post('change-password', ChangePasswordController::class);
|
||||||
|
//安全密码
|
||||||
|
Route::post('wallet-password/reset', [WalletPasswordController::class, 'reset']);//重置或设置安全密码
|
||||||
|
|
||||||
//银行卡
|
//银行卡
|
||||||
Route::get('user-bank', [UserBankController::class, 'show']);
|
Route::get('user-bank', [UserBankController::class, 'show']);
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,14 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac
|
||||||
return $this->hasOne(UserBank::class, 'user_id');
|
return $this->hasOne(UserBank::class, 'user_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户的资产
|
||||||
|
*/
|
||||||
|
public function wallet()
|
||||||
|
{
|
||||||
|
return $this->hasOne(Wallet::class, 'user_id');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 禁用用户
|
* 禁用用户
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,12 @@ class Wallet extends Model
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
'user_id',
|
||||||
'balance',
|
'balance',
|
||||||
'total_expenses',
|
'total_expenses',
|
||||||
'total_revenue',
|
'total_revenue',
|
||||||
'withdrawable',
|
'withdrawable',
|
||||||
|
'password', //安全密码
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -39,4 +41,32 @@ class Wallet extends Model
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'withdrawable' => 'bool',
|
'withdrawable' => 'bool',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置此用户的安全密码
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setPasswordAttribute($value): void
|
||||||
|
{
|
||||||
|
if ((string) $value === '') {
|
||||||
|
$value = null;
|
||||||
|
} else {
|
||||||
|
$value = md5($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->attributes['password'] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确认给定的密码是否正确
|
||||||
|
*
|
||||||
|
* @param string $password
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function verifyPassword(string $password): bool
|
||||||
|
{
|
||||||
|
return $this->password && md5($password) === $this->password;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class AddPasswordToWalletsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('wallets', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
$table->string('password')->nullable()->comment('密码');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('wallets', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
$table->dropColumn('password');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue