CommController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Http\Controllers\Passport;
  3. use App\Http\Requests\Passport\CommSendEmailVerify;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Controller;
  6. use Illuminate\Http\Exceptions\HttpResponseException;
  7. use Illuminate\Support\Facades\Mail;
  8. use App\Utils\Helper;
  9. use Illuminate\Support\Facades\Cache;
  10. use App\Jobs\SendEmailJob;
  11. use App\Models\InviteCode;
  12. use App\Utils\Dict;
  13. use App\Utils\CacheKey;
  14. class CommController extends Controller
  15. {
  16. public function config()
  17. {
  18. return response([
  19. 'data' => [
  20. 'isEmailVerify' => (int)config('v2board.email_verify', 0) ? 1 : 0,
  21. 'isInviteForce' => (int)config('v2board.invite_force', 0) ? 1 : 0,
  22. 'emailWhitelistSuffix' => (int)config('v2board.email_whitelist_enable', 0)
  23. ? $this->getEmailSuffix()
  24. : 0
  25. ]
  26. ]);
  27. }
  28. private function isEmailVerify()
  29. {
  30. return response([
  31. 'data' => (int)config('v2board.email_verify', 0) ? 1 : 0
  32. ]);
  33. }
  34. public function sendEmailVerify(CommSendEmailVerify $request)
  35. {
  36. $email = $request->input('email');
  37. if (Cache::get(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email))) {
  38. abort(500, '验证码已发送,请过一会再请求');
  39. }
  40. $code = rand(100000, 999999);
  41. $subject = config('v2board.app_name', 'V2Board') . '邮箱验证码';
  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. }