2
0

EmailCertificationController.php 2.4 KB

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