Checkemail.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * 账户绑定
  4. */
  5. namespace app\api\controller\v1;
  6. use app\common\library\Mail;
  7. use app\common\model\Members;
  8. use think\Controller;
  9. use think\Db;
  10. use think\Session;
  11. class Checkemail extends Controller
  12. {
  13. protected $memberModel;
  14. public function _initialize()
  15. {
  16. parent::_initialize();
  17. $this->memberModel = new Members;
  18. }
  19. /**
  20. * 验证邮箱链接地址
  21. */
  22. public function checkEmail()
  23. {
  24. $token = input('t', '', 'trim');
  25. $username = input('username', '', 'trim');
  26. if (empty($token)) {
  27. $this->error('邮箱验证地址错误', '');
  28. }
  29. if (empty($username)) {
  30. $this->error('邮箱验证地址错误', '');
  31. }
  32. //验证token
  33. $res = (new Mail())->checkMailToken($username, $token);
  34. if (!$res['status']) {
  35. $this->error($res['msg']);
  36. }
  37. $data = $res['data'];
  38. if (!$userinfo = Members::where(['username' => $username])->find()) {
  39. $this->error('非法用户', '');
  40. }
  41. //3.验证是否重复绑定
  42. if (isset($userinfo['email']) && ($data['mail'] == $userinfo['email'])) {
  43. $this->error('邮箱地址跟原来邮箱地址一样,不要重复绑定', '');
  44. }
  45. //4.更新数据 记录日志
  46. if ($res = Members::where(['username' => $username])->update(['email' => $data['mail']])) {
  47. Db::table('cy_member_history')->insert([
  48. 'userid' => $userinfo['id'], //todo
  49. 'password' => '',
  50. 'mobile' => $data['mail'],
  51. 'ip' => request()->ip(),
  52. 'create_time' => time(),
  53. ]);
  54. //删除解绑密码状态
  55. if (Session::has('reset_email')) {
  56. Session::delete('reset_email');
  57. }
  58. (new Mail)->clearKeyByUsername($username);
  59. return $this->success('邮箱绑定成功','');
  60. }
  61. return $this->error('邮箱绑定失败','');
  62. }
  63. /**
  64. * 解绑邮箱
  65. * @throws \app\api\controller\HttpResponseException
  66. */
  67. public function unBindEmail()
  68. {
  69. // //删除解绑密码状态
  70. // if (!Session::has('reset_email')) {
  71. // return $this->error('参数错误', url('v1.userCenter/account'));
  72. // }
  73. $token = input('t', '', 'trim');
  74. $username = input('username', '', 'trim');
  75. if (empty($token)) {
  76. $this->error('邮箱验证地址错误', '');
  77. }
  78. if (empty($username)) {
  79. $this->error('邮箱验证地址错误', '');
  80. }
  81. //验证token
  82. $res = (new Mail())->checkMailToken($username, $token);
  83. if (!$res['status']) {
  84. $this->error($res['msg'], '');
  85. }
  86. if (!$userinfo = Members::where(['username' => $username])->find()) {
  87. $this->error('非法用户', '');
  88. }
  89. //4.更新数据 记录日志
  90. if ($res = Members::where(['username' => $username])->update(['email' => ''])) {
  91. Db::table('cy_member_history')->insert([
  92. 'userid' => $userinfo['id'], //todo
  93. 'password' => '',
  94. 'email' => 'unbind',
  95. 'ip' => request()->ip(),
  96. 'create_time' => time(),
  97. ]);
  98. // //删除解绑密码状态
  99. // if (Session::has('reset_email')) {
  100. // Session::delete('reset_email');
  101. // }
  102. (new Mail)->clearKeyByUsername($username);
  103. return $this->success('邮箱解绑成功,请到个人中心绑定新邮箱', '');
  104. }
  105. return $this->error('邮箱解绑失败', '');
  106. }
  107. }