添加安全密码修改接口
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\UserController;
|
||||
use App\Endpoint\Api\Http\Controllers\Account\WalletPasswordController;
|
||||
use App\Endpoint\Api\Http\Controllers\AdController;
|
||||
use App\Endpoint\Api\Http\Controllers\AfterSaleController;
|
||||
use App\Endpoint\Api\Http\Controllers\AliOssController;
|
||||
|
|
@ -82,6 +83,8 @@ Route::group([
|
|||
Route::put('me', [UserController::class, 'update']);
|
||||
// 修改密码
|
||||
Route::post('change-password', ChangePasswordController::class);
|
||||
//安全密码
|
||||
Route::post('wallet-password/reset', [WalletPasswordController::class, 'reset']);//重置或设置安全密码
|
||||
|
||||
//银行卡
|
||||
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');
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户的资产
|
||||
*/
|
||||
public function wallet()
|
||||
{
|
||||
return $this->hasOne(Wallet::class, 'user_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用用户
|
||||
*
|
||||
|
|
|
|||
|
|
@ -27,10 +27,12 @@ class Wallet extends Model
|
|||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'user_id',
|
||||
'balance',
|
||||
'total_expenses',
|
||||
'total_revenue',
|
||||
'withdrawable',
|
||||
'password', //安全密码
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -39,4 +41,32 @@ class Wallet extends Model
|
|||
protected $casts = [
|
||||
'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