You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php
namespace App\Http\Controllers\Api;use App\Http\Controllers\Controller;use App\Models\Agent;use App\Models\User;use EasyWeChat\Factory;use EasyWeChat\Kernel\Exceptions\DecryptException;use Illuminate\Http\Request;use Illuminate\Support\Facades\Cache;
/** * 用户 * Class UserController * @package App\Http\Controllers\Api */class UserController extends Controller{ public function profile(Request $request) { $formData = $request->only(['iv', 'encryptedData']); $request->validate([ 'iv' => 'required', 'encryptedData' => 'required', ], [ '*.required' => '参数缺失' ]);
$agent = Agent::query()->find($this->agent_id); //代理商数据
$config = config('wechat.mini_program.default'); $config = array_merge($config, [ 'app_id' => $agent->appid, 'secret' => $agent->appsecret, ]);
$session = Cache::get('session_key_' . $this->user_id); if (!$session) { return $this->error('无效的session,请重新登录'); }
$app = Factory::miniProgram($config); try { $decryptedData = $app->encryptor->decryptData($session, $formData['iv'], $formData['encryptedData']); $user = User::find($this->user_id); if (!empty($decryptedData['nickName'])) { $user->nickname = $decryptedData['nickName']; } if (!empty($decryptedData['avatarUrl'])) { $user->avatar = $decryptedData['avatarUrl']; } if (!empty($decryptedData['purePhoneNumber'])) { $user->mobile = $decryptedData['purePhoneNumber']; } $user->save(); } catch (\Exception | DecryptException $e) { return $this->error($e->getMessage()); }
$user->token = request()->header('Authentication'); return $this->success($user); }}
|