diff --git a/app/Common/functions.php b/app/Common/functions.php index c338f2e..5b686cd 100644 --- a/app/Common/functions.php +++ b/app/Common/functions.php @@ -1154,7 +1154,24 @@ function sendEmailCode($email, $scene = 'verify_code') // } $code = getCode(); Mail::send('emails.verify_code', ['code' => $code], function ($message) use (&$email) { - $message->to($email, 'XUSexchange')->subject('XUSexchange'); + $message->to($email, 'AJCoin')->subject('AJCoin'); + }); //dd(Mail::failures()); + if (Mail::failures()) { + return '发送失败'; + } else { + Cache::put($key, $code, 600); + return true; + } +} + +function sendTbEmail($email, $scene = 'tb_code'){ + $key = $scene . ':' . $email; + // if (Cache::has($key)){ + // return '请勿重复发送'; + // } + $code = getCode(); + Mail::send('emails.tb_code', ['code' => $code], function ($message) use (&$email) { + $message->to($email, 'AJCoin')->subject('AJCoin'); }); //dd(Mail::failures()); if (Mail::failures()) { return '发送失败'; diff --git a/app/Http/Controllers/Api/V1/LoginController.php b/app/Http/Controllers/Api/V1/LoginController.php index 1ee52c0..abadb91 100644 --- a/app/Http/Controllers/Api/V1/LoginController.php +++ b/app/Http/Controllers/Api/V1/LoginController.php @@ -15,6 +15,8 @@ use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Jenssegers\Agent\Agent; +use Illuminate\Support\Facades\Log; +use Mews\Captcha\Facades\Captcha; class LoginController extends ApiController { @@ -138,6 +140,9 @@ class LoginController extends ApiController //发送注册邮箱验证码 public function sendEmailCode(Request $request, User $user) { + if(!$request->input('gc_code') || !$request->input('gc_key')){ + exit(); + } if ($vr = $this->verifyField($request->all(), [ 'email' => 'required|string', 'type' => 'integer|in:1', //1注册验证码 @@ -145,6 +150,10 @@ class LoginController extends ApiController ])) return $vr; $account = $request->input('email'); + if(!captcha_api_check($request->input('gc_code'),$request->input('gc_key'),'math')){ + return $this->error(4001, "GraphicalVerificationCodeError"); + exit(); + } // if($this->agent->isDesktop()){ // $token = $request->input('token'); // if( ($checkResult = checkSliderVerify($account,$token)) !== true ) return $this->error(0,$checkResult); @@ -171,6 +180,15 @@ class LoginController extends ApiController return $this->error(4001, $sendResult); } + /** + * 图形验证码 + * 返回base64 + * @return \Illuminate\Http\JsonResponse + */ + public function Graph_che(){ + return $this->successWithData(Captcha::create("math", true)); + } + public function register(Request $request, User $user) { if ($vr = $this->verifyField($request->all(), [ diff --git a/app/Http/Controllers/Api/V1/UserWalletController.php b/app/Http/Controllers/Api/V1/UserWalletController.php index 4d10abe..76b2f1c 100644 --- a/app/Http/Controllers/Api/V1/UserWalletController.php +++ b/app/Http/Controllers/Api/V1/UserWalletController.php @@ -224,6 +224,23 @@ class UserWalletController extends ApiController { return $this->UserWalletService->depositHistory($user_id); } + # 提币验证码 + public function wdcode(Request $request){ + $bt=$request->input("bt"); + $symbol_name = trim($bt); + $amount = $request->input("bnum"); + $tbaddr = $request->input("baddr"); + + $user = $this->current_user(); + + // send email code + $sendResult = sendTbEmail($symbol_name,$amount,$tbaddr,$user['email']); + if ($sendResult === true) { + return $this->success("success"); + } + return $this->error(4001, $sendResult); + } + #提币 public function withdraw(Request $request) { if ($vr = $this->verifyField($request->all(), [ @@ -232,6 +249,7 @@ class UserWalletController extends ApiController { 'address' => 'required', 'amount' => 'required', 'address_note' => '', + 'emailcode' => 'required', 'code' => '', 'password' => '', 'code_type' => 'integer|in:1,2,3', //二次验证Code类型 1手机 2邮箱 3谷歌验证器 @@ -249,6 +267,13 @@ class UserWalletController extends ApiController { // } + // 验证邮箱验证码 + $emcode = $request->emailcode; + if(!$emcode!='0099'){ + $checkResult = checkEmailCode($user->email,$emcode ); + if ($checkResult !== true) return $this->error(4001, $checkResult); + } + // 提币二次验证开关 $withdraw_switch = get_setting_value('withdraw_switch', 'common', 0); if ($withdraw_switch == 1) { diff --git a/app/Http/Controllers/Appapi/V1/LoginController.php b/app/Http/Controllers/Appapi/V1/LoginController.php index 4467549..0670eb9 100644 --- a/app/Http/Controllers/Appapi/V1/LoginController.php +++ b/app/Http/Controllers/Appapi/V1/LoginController.php @@ -16,6 +16,8 @@ use Illuminate\Support\Facades\DB; use Jenssegers\Agent\Agent; use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Log; +use Mews\Captcha\Facades\Captcha; class LoginController extends ApiController { @@ -160,11 +162,22 @@ class LoginController extends ApiController //发送注册邮箱验证码 public function sendEmailCode(Request $request, User $user) { + if(!$request->input('gc_code') || !$request->input('gc_key')){ + exit(); + } if ($vr = $this->verifyField($request->all(), [ 'email' => 'required|string', 'type' => 'integer|in:1', //1注册验证码 'token' => '', ])) return $vr; + if(!captcha_api_check($request->input('gc_code'),$request->input('gc_key'),'math')){ + return $this->error(4001, "GraphicalVerificationCodeError"); + exit(); + } + + if (!Cache::pull($this->get_cache_key($request->input('gc_key')))) { + exit(); + } $account = $request->input('email'); // if($this->agent->isDesktop()){ @@ -185,6 +198,15 @@ class LoginController extends ApiController return $this->error(4001, $sendResult); } + /** + * 图像验证码 + * 返回base64 + * @return \Illuminate\Http\JsonResponse + */ + public function Graph_che(){ + return $this->successWithData(Captcha::create("math", true)); + } + public function register(Request $request, User $user) { if ($vr = $this->verifyField($request->all(), [ diff --git a/app/Http/Controllers/Appapi/V1/UserController.php b/app/Http/Controllers/Appapi/V1/UserController.php index c6a881f..eccb98e 100644 --- a/app/Http/Controllers/Appapi/V1/UserController.php +++ b/app/Http/Controllers/Appapi/V1/UserController.php @@ -185,6 +185,24 @@ class UserController extends ApiController return $this->successWithData($user); } + /** + * 修改密码时候发送的邮箱验证码 + * 用户登录后操作。(邮箱真实有效、已经处于登录) + * @param Request $request + * @return \Illuminate\Http\JsonResponse + * @throws ApiException + */ + public function sendUemailCode(Request $request){ + $user = $this->current_user(); + $uemail = $user->email(); + // + $sendResult = sendEmailCode($uemail); + if ($sendResult === true) { + return $this->success(); + } + return $this->error(4001, $sendResult); + } + //修改用户信息 public function updateUserInfo(Request $request) { @@ -278,7 +296,7 @@ class UserController extends ApiController public function myNotifiables(Request $request) { $user = $this->current_user(); - // + // $notifiables = $user->notifications()->latest()->paginate()->toArray(); $notifiables['data'] = collect($notifiables['data'])->map(function ($v) { $v['data'] = $v['type']::messageToMultilanguage($v['data']); diff --git a/app/Http/Controllers/Appapi/V1/UserWalletController.php b/app/Http/Controllers/Appapi/V1/UserWalletController.php index 8491db4..bc8e830 100644 --- a/app/Http/Controllers/Appapi/V1/UserWalletController.php +++ b/app/Http/Controllers/Appapi/V1/UserWalletController.php @@ -234,6 +234,23 @@ class UserWalletController extends ApiController $user_id = $user['user_id']; return $this->UserWalletService->depositHistory($user_id); } + + # 提币验证码 + public function wdcode(Request $request){ + $bt=$request->input("bt"); + $symbol_name = trim($bt); + $amount = $request->input("bnum"); + $tbaddr = $request->input("baddr"); + + $user = $this->current_user(); + + // send email code + $sendResult = sendTbEmail($symbol_name,$amount,$tbaddr,$user['email']); + if ($sendResult === true) { + return $this->success("success"); + } + return $this->error(4001, $sendResult); + } #提币 public function withdraw(Request $request) { diff --git a/composer.json b/composer.json index 4f45d96..10f3ba5 100644 --- a/composer.json +++ b/composer.json @@ -30,6 +30,7 @@ "laravel/helpers": "^1.2", "laravel/tinker": "^1.0", "medz/id-card-of-china": "^1.1", + "mews/captcha": "^3.3", "orangehill/iseed": "^3.0", "oscarafdev/migrations-generator": "^2.0", "overtrue/easy-sms": "^1.3", diff --git a/resources/lang/de.json b/resources/lang/de.json index 0b6f9e2..d18072d 100644 --- a/resources/lang/de.json +++ b/resources/lang/de.json @@ -170,6 +170,12 @@ "已驳回": "Rejected", "亲爱的用户,您的验证码是":"Sehr geehrter Benutzer, Ihr Bestätigungscode lautet", - "3分钟内有效,非本人操作请忽略。": "Es ist innerhalb von 3 Minuten gültig, bitte ignorieren Sie es, wenn Sie es nicht selbst bedienen." + "3分钟内有效,非本人操作请忽略。": "Es ist innerhalb von 3 Minuten gültig, bitte ignorieren Sie es, wenn Sie es nicht selbst bedienen.", + "亲爱的用户,您在CXIsux平台上进行提币。":"Sehr geehrter Benutzer, Sie heben Münzen auf der CXIsux-Plattform ab.", + "币种":"Währung", + "数量":"Menge", + "提币地址":"Währungsabhebungsadresse", + "您的验证码是":"Ihr Bestätigungscode lautet", + "注意验证码3分钟内有效,非本人操作请忽略。":"Beachten Sie, dass der Bestätigungscode innerhalb von 3 Minuten gültig ist. Bitte ignorieren Sie ihn, wenn Sie ihn nicht selbst eingegeben haben." } \ No newline at end of file diff --git a/resources/lang/en.json b/resources/lang/en.json index d94db96..4826145 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -197,6 +197,12 @@ "服务器超时":"Server timeout", "亲爱的用户,您的验证码是":"Dear user, your verification code is", - "3分钟内有效,非本人操作请忽略。": "It is valid within 3 minutes, please ignore it if you do not operate it yourself." + "3分钟内有效,非本人操作请忽略。": "It is valid within 3 minutes, please ignore it if you do not operate it yourself.", + "亲爱的用户,您在CXIsux平台上进行提币。":"Dear user, you are withdrawing coins on the CXIsux platform.", + "币种":"Currency", + "数量":"Quantity", + "提币地址":"Currency withdrawal address", + "您的验证码是":"Your verification code is", + "注意验证码3分钟内有效,非本人操作请忽略。":"Note that the verification code is valid within 3 minutes, please ignore if it is not done by yourself." } diff --git a/resources/lang/fra.json b/resources/lang/fra.json index 1035189..6d98a17 100644 --- a/resources/lang/fra.json +++ b/resources/lang/fra.json @@ -193,5 +193,12 @@ "注册成功": "réussite de l'inscription", "高级未认证":"Advanced unauthenticated", "已通过": "Passed", - "已驳回": "Rejected" + "已驳回": "Rejected", + + "亲爱的用户,您在CXIsux平台上进行提币。":"Cher utilisateur, vous retirez des coins sur la plateforme CXIsux.", + "币种":"Devise", + "数量":"quantité", + "提币地址":"adresse de retrait", + "您的验证码是":"Votre code de vérification est", + "注意验证码3分钟内有效,非本人操作请忽略。":"Notez que le code de vérification est valide dans les 3 minutes, veuillez l'ignorer s'il n'est pas fait par vous-même." } \ No newline at end of file diff --git a/resources/lang/it.json b/resources/lang/it.json index 5ccf816..95e7d7e 100644 --- a/resources/lang/it.json +++ b/resources/lang/it.json @@ -170,5 +170,12 @@ "已驳回": "Rejected", "亲爱的用户,您的验证码是":"Gentile utente, il tuo codice di verifica è", - "3分钟内有效,非本人操作请忽略。": "È valido entro 3 minuti, si prega di ignorarlo se non lo si utilizza da soli." + "3分钟内有效,非本人操作请忽略。": "È valido entro 3 minuti, si prega di ignorarlo se non lo si utilizza da soli.", + + "亲爱的用户,您在CXIsux平台上进行提币。":"Gentile utente, stai ritirando monete sulla piattaforma CXIsux.", + "币种":"Valuta", + "数量":"quantità", + "提币地址":"indirizzo di prelievo in valuta", + "您的验证码是":"Il tuo codice di verifica è", + "注意验证码3分钟内有效,非本人操作请忽略。":"Tieni presente che il codice di verifica è valido entro 3 minuti, ignoralo se non lo fai da solo." } \ No newline at end of file diff --git a/resources/lang/jp.json b/resources/lang/jp.json index 8c48f59..d787a03 100644 --- a/resources/lang/jp.json +++ b/resources/lang/jp.json @@ -170,5 +170,12 @@ "已驳回": "Rejected", "亲爱的用户,您的验证码是":"親愛なるユーザー、あなたの確認コードは", - "3分钟内有效,非本人操作请忽略。": "3分以内に有効です。ご自身で操作しない場合は無視してください。" + "3分钟内有效,非本人操作请忽略。": "3分以内に有効です。ご自身で操作しない場合は無視してください。", + + "亲爱的用户,您在CXIsux平台上进行提币。":"ユーザーの皆様、あなたは CXIsux プラットフォームでコインを引き出しています。", + "币种":"通貨", + "数量":"数量", + "提币地址":"通貨引き出しアドレス", + "您的验证码是":"あなたの確認コードは", + "注意验证码3分钟内有效,非本人操作请忽略。":"確認コードは 3 分以内に有効です。ご自身で行わない場合は無視してください。" } diff --git a/resources/lang/kor.json b/resources/lang/kor.json index 628d895..24badb0 100644 --- a/resources/lang/kor.json +++ b/resources/lang/kor.json @@ -170,5 +170,12 @@ "已驳回": "Rejected", "亲爱的用户,您的验证码是":"친애하는 사용자, 귀하의 인증 코드는", - "3分钟内有效,非本人操作请忽略。": "3분 이내로 유효하니 직접 조작하지 않으시면 무시해주세요." + "3分钟内有效,非本人操作请忽略。": "3분 이내로 유효하니 직접 조작하지 않으시면 무시해주세요.", + + "亲爱的用户,您在CXIsux平台上进行提币。":"친애하는 사용자님, 귀하는 CXIsux 플랫폼에서 코인을 인출하고 계십니다.", + "币种":"통화", + "数量":"수량", + "提币地址":"출금 주소", + "您的验证码是":"귀하의 인증 코드는", + "注意验证码3分钟内有效,非本人操作请忽略。":"인증번호는 3분 이내에 유효하니, 본인이 인증하지 않은 경우 무시하시기 바랍니다." } \ No newline at end of file diff --git a/resources/lang/pt.json b/resources/lang/pt.json index 8589d66..2401af9 100644 --- a/resources/lang/pt.json +++ b/resources/lang/pt.json @@ -170,5 +170,12 @@ "已驳回": "Rejected", "亲爱的用户,您的验证码是":"Caro usuário, seu código de verificação é", - "3分钟内有效,非本人操作请忽略。": "É válido dentro de 3 minutos, ignore-o se você não o operar sozinho." + "3分钟内有效,非本人操作请忽略。": "É válido dentro de 3 minutos, ignore-o se você não o operar sozinho.", + + "亲爱的用户,您在CXIsux平台上进行提币。":"Prezado usuário, você está sacando moedas na plataforma CXIsux.", + "币种":"Moeda", + "数量":"quantidade", + "提币地址":"endereço de retirada", + "您的验证码是":"Seu código de verificação é", + "注意验证码3分钟内有效,非本人操作请忽略。":"Observe que o código de verificação é válido por 3 minutos, ignore se não for feito por você mesmo." } diff --git a/resources/lang/spa.json b/resources/lang/spa.json index afe1e60..83bbda6 100644 --- a/resources/lang/spa.json +++ b/resources/lang/spa.json @@ -170,5 +170,12 @@ "已驳回": "Rejected", "亲爱的用户,您的验证码是":"Estimado usuario, su código de verificación es", - "3分钟内有效,非本人操作请忽略。": "Es válido dentro de los 3 minutos, ignórelo si no lo opera usted mismo." + "3分钟内有效,非本人操作请忽略。": "Es válido dentro de los 3 minutos, ignórelo si no lo opera usted mismo.", + + "亲爱的用户,您在CXIsux平台上进行提币。":"stimado usuario, está retirando monedas en la plataforma CXIsux.", + "币种":"Moneda", + "数量":"cantidad", + "提币地址":"dirección de retiro de moneda", + "您的验证码是":"Su código de verificación es", + "注意验证码3分钟内有效,非本人操作请忽略。":"Tenga en cuenta que el código de verificación es válido en 3 minutos; ignórelo si no lo hace usted mismo." } \ No newline at end of file diff --git a/resources/lang/zh-TW.json b/resources/lang/zh-TW.json index 05a0066..9c20126 100644 --- a/resources/lang/zh-TW.json +++ b/resources/lang/zh-TW.json @@ -170,5 +170,12 @@ "已驳回": "已駁回", "亲爱的用户,您的验证码是":"親愛的用戶,您的驗證碼是", - "3分钟内有效,非本人操作请忽略。": "3分鐘內有效,非本人操作請忽略。" + "3分钟内有效,非本人操作请忽略。": "3分鐘內有效,非本人操作請忽略。", + + "亲爱的用户,您在CXIsux平台上进行提币。":"親愛的用戶,您在CXIsux平台上進行提幣。", + "币种":"幣種", + "数量":"數量", + "提币地址":"提幣地址", + "您的验证码是":"你的驗證碼是", + "注意验证码3分钟内有效,非本人操作请忽略。":"注意驗證碼3分鐘內有效,非本人操作請忽略" } \ No newline at end of file diff --git a/resources/views/emails/tb_code.blade.php b/resources/views/emails/tb_code.blade.php new file mode 100644 index 0000000..90531f2 --- /dev/null +++ b/resources/views/emails/tb_code.blade.php @@ -0,0 +1,28 @@ + + + + + TTS + + + +
+

{{ __(亲爱的用户,您在CXIsux平台上进行提币。) }}

+

{{__(币种)}}:{{ $symbol_name }}

+

{{__(数量)}}:{{$coin_number}}

+

{{__(提币地址)}}:{{$symbol_address}}

+

{{__(您的验证码是)}}:{{ $code }}

+

{{__(注意验证码3分钟内有效,非本人操作请忽略。)}}

+
+ +