6
0
Fork 0

添加安全密码修改接口

release
vine_liutk 2021-12-24 16:02:42 +08:00
parent 9db9c2cab7
commit 6db2226286
5 changed files with 113 additions and 0 deletions

View File

@ -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();
}
}

View File

@ -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']);

View File

@ -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');
}
/**
* 禁用用户
*

View File

@ -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;
}
}

View File

@ -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');
});
}
}