CommController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. $code = rand(100000, 999999);
  36. $subject = config('v2board.app_name', 'V2Board') . __('Email verification code');
  37. SendEmailJob::dispatch([
  38. 'email' => $email,
  39. 'subject' => $subject,
  40. 'template_name' => 'verify',
  41. 'template_value' => [
  42. 'name' => config('v2board.app_name', 'V2Board'),
  43. 'code' => $code,
  44. 'url' => config('v2board.app_url')
  45. ]
  46. ]);
  47. Cache::put(CacheKey::get('EMAIL_VERIFY_CODE', $email), $code, 300);
  48. Cache::put(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email), time(), 60);
  49. return response([
  50. 'data' => true
  51. ]);
  52. }
  53. public function pv(Request $request)
  54. {
  55. $inviteCode = InviteCode::where('code', $request->input('invite_code'))->first();
  56. if ($inviteCode) {
  57. $inviteCode->pv = $inviteCode->pv + 1;
  58. $inviteCode->save();
  59. }
  60. return response([
  61. 'data' => true
  62. ]);
  63. }
  64. private function getEmailSuffix()
  65. {
  66. $suffix = config('v2board.email_whitelist_suffix', Dict::EMAIL_WHITELIST_SUFFIX_DEFAULT);
  67. if (!is_array($suffix)) {
  68. return preg_split('/,/', $suffix);
  69. }
  70. return $suffix;
  71. }
  72. }