EmailCertificationController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Log;
  5. use Illuminate\Support\Str;
  6. use Illuminate\Support\Facades\Mail;
  7. use Illuminate\Support\Facades\Cache;
  8. use App\Models\Invite;
  9. use App\Models\UserInfo;
  10. use App\Http\Resources\InviteResource;
  11. use App\Mail\EmailCertif;
  12. class EmailCertificationController extends Controller
  13. {
  14. /**
  15. * Display a listing of the resource.
  16. *
  17. * @return \Illuminate\Http\Response
  18. */
  19. public function index()
  20. {
  21. //
  22. }
  23. /**
  24. * Store a newly created resource in storage.
  25. *
  26. * @param \Illuminate\Http\Request $request
  27. * @return \Illuminate\Http\Response
  28. */
  29. public function store(Request $request)
  30. {
  31. //查询是否重复
  32. if (UserInfo::where('email', $request->input('email'))->exists()) {
  33. return $this->error('email.exists', 'err.email.exists', 200);
  34. }
  35. $sender = config("mint.admin.root_uuid");
  36. $uuid = Str::uuid();
  37. $invite = Invite::firstOrNew(
  38. ['email' => $request->input('email')],
  39. ['id' => $uuid]
  40. );
  41. $invite->user_uid = $sender;
  42. $invite->status = 'invited';
  43. $invite->save();
  44. try {
  45. Mail::to($request->input('email'))
  46. ->send(new EmailCertif(
  47. $invite->id,
  48. $request->input('subject', 'sign up wikipali'),
  49. $request->input('lang'),
  50. ));
  51. } catch (\Exception $e) {
  52. Log::error('send email fail', [
  53. 'message' => $e->getMessage(),
  54. 'trace' => $e->getTraceAsString(),
  55. ]);
  56. return $this->error('send email fail', $e->getMessage(), 200);
  57. }
  58. return $this->ok(new InviteResource($invite));
  59. }
  60. /**
  61. * Display the specified resource.
  62. *
  63. * @param string $id
  64. * @return \Illuminate\Http\Response
  65. */
  66. public function show(string $id)
  67. {
  68. //
  69. $code = Cache::get("/email/certification/" . $id);
  70. if (empty($code)) {
  71. return $this->error('Certification is avalide', 200, 200);
  72. }
  73. return $this->ok($code);
  74. }
  75. /**
  76. * Update the specified resource in storage.
  77. *
  78. * @param \Illuminate\Http\Request $request
  79. * @param int $id
  80. * @return \Illuminate\Http\Response
  81. */
  82. public function update(Request $request, $id)
  83. {
  84. //
  85. }
  86. /**
  87. * Remove the specified resource from storage.
  88. *
  89. * @param int $id
  90. * @return \Illuminate\Http\Response
  91. */
  92. public function destroy($id)
  93. {
  94. //
  95. }
  96. }