CommController.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Http\Controllers\V1\Passport;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\Passport\CommSendEmailVerify;
  5. use App\Jobs\SendEmailJob;
  6. use App\Models\InviteCode;
  7. use App\Utils\CacheKey;
  8. use App\Utils\Dict;
  9. use Illuminate\Http\Exceptions\HttpResponseException;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Cache;
  12. use Illuminate\Support\Facades\Mail;
  13. use ReCaptcha\ReCaptcha;
  14. class CommController extends Controller
  15. {
  16. private function isEmailVerify()
  17. {
  18. return response([
  19. 'data' => (int)config('v2board.email_verify', 0) ? 1 : 0
  20. ]);
  21. }
  22. public function sendEmailVerify(CommSendEmailVerify $request)
  23. {
  24. if ((int)config('v2board.recaptcha_enable', 0)) {
  25. $recaptcha = new ReCaptcha(config('v2board.recaptcha_key'));
  26. $recaptchaResp = $recaptcha->verify($request->input('recaptcha_data'));
  27. if (!$recaptchaResp->isSuccess()) {
  28. abort(500, __('Invalid code is incorrect'));
  29. }
  30. }
  31. $email = $request->input('email');
  32. if (Cache::get(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email))) {
  33. abort(500, __('Email verification code has been sent, please request again later'));
  34. }
  35. if (!User::where('email', $email)->first()) {
  36. return [
  37. 'data' => true
  38. ];
  39. }
  40. $code = rand(100000, 999999);
  41. $subject = config('v2board.app_name', 'V2Board') . __('Email verification code');
  42. SendEmailJob::dispatch([
  43. 'email' => $email,
  44. 'subject' => $subject,
  45. 'template_name' => 'verify',
  46. 'template_value' => [
  47. 'name' => config('v2board.app_name', 'V2Board'),
  48. 'code' => $code,
  49. 'url' => config('v2board.app_url')
  50. ]
  51. ]);
  52. Cache::put(CacheKey::get('EMAIL_VERIFY_CODE', $email), $code, 300);
  53. Cache::put(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email), time(), 60);
  54. return response([
  55. 'data' => true
  56. ]);
  57. }
  58. public function pv(Request $request)
  59. {
  60. $inviteCode = InviteCode::where('code', $request->input('invite_code'))->first();
  61. if ($inviteCode) {
  62. $inviteCode->pv = $inviteCode->pv + 1;
  63. $inviteCode->save();
  64. }
  65. return response([
  66. 'data' => true
  67. ]);
  68. }
  69. private function getEmailSuffix()
  70. {
  71. $suffix = config('v2board.email_whitelist_suffix', Dict::EMAIL_WHITELIST_SUFFIX_DEFAULT);
  72. if (!is_array($suffix)) {
  73. return preg_split('/,/', $suffix);
  74. }
  75. return $suffix;
  76. }
  77. }