AuthController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: NODELOG
  5. * DateTime: 2017/3/8 14:30
  6. * Description:
  7. */
  8. namespace api\modules\v1\controllers;
  9. use api\common\behaviors\QueryParamAuth;
  10. use api\common\controllers\Controller;
  11. use api\common\models\User;
  12. use api\modules\v1\models\LoginForm;
  13. use common\enums\CodeEnum;
  14. use common\helpers\wx\Application;
  15. use common\helpers\wx\mini\PhoneNumber;
  16. use Yii;
  17. use yii\helpers\ArrayHelper;
  18. use yii\web\ServerErrorHttpException;
  19. class AuthController extends Controller
  20. {
  21. public function behaviors()
  22. {
  23. return ArrayHelper::merge(parent::behaviors(), [
  24. [
  25. 'class' => QueryParamAuth::className(),
  26. 'tokenParam' => 'token',
  27. 'optional' => ['login', 'login-by-id']
  28. ]
  29. ]);
  30. }
  31. /**
  32. * @api {post} /v1/auth/login 微信登录
  33. * @apiGroup 授权
  34. * @apiVersion 1.0.0
  35. *
  36. * @apiDescription 微信小程序微信授权自动注册登录
  37. *
  38. * @apiSuccess {Number} errcode 状态码,0:请求成功
  39. * @apiSuccess {String} errmsg 提示信息
  40. * @apiSuccess {Object} data 用户信息
  41. * @apiSuccess {String} token 授权访问token
  42. *
  43. * @apiError {Number} errcode 状态码,500:请求失败
  44. * @apiError {String} errmsg 提示信息
  45. *
  46. * @apiSuccessExample {json} 成功响应:
  47. * {"errcode":0,"errmsg":"ok","data":{},"token":''}
  48. *
  49. * @apiErrorExample {json} 失败响应:
  50. * {"errcode":500,"errmsg":"请求失败"}
  51. *
  52. * @author nodelog
  53. */
  54. public function actionLogin()
  55. {
  56. $model = new LoginForm();
  57. $model->load(request()->post(), '');
  58. if ($model->login()) {
  59. /**
  60. * @var User $user
  61. */
  62. $user = \Yii::$app->user->identity;
  63. // if (empty($user->token) || $user->expired_at < time()) {
  64. $user->generateAccessToken(request()->headers->get('token'));
  65. $user->save(false);
  66. // }
  67. return ['data' => User::findOne($user->id)];
  68. } else {
  69. return ['errcode' => CodeEnum::CODE_ERROR, 'errmsg' => '登录失败' . current($model->getErrors())[0]];
  70. }
  71. }
  72. /**
  73. * @api {post} /v1/auth/logout 退出登录
  74. * @apiGroup 授权
  75. * @apiName logout
  76. * @apiVersion 1.0.0
  77. *
  78. * @apiDescription 清除登录状态
  79. *
  80. * @apiParam {Integer} token 授权访问token.
  81. *
  82. * @apiSuccess {Number} errcode 状态码,0:请求成功
  83. * @apiSuccess {String} errmsg 提示信息
  84. *
  85. * @apiError {Number} errcode 状态码,500:请求失败
  86. * @apiError {String} errmsg 提示信息
  87. *
  88. * @apiSuccessExample {json} 成功响应:
  89. * {"errcode":0,"errmsg":"ok"}
  90. *
  91. * @apiErrorExample {json} 失败响应:
  92. * {"errcode":500,"errmsg":"请求失败"}
  93. *
  94. */
  95. public function actionLogout()
  96. {
  97. if (\Yii::$app->user->logout()) {
  98. return [];
  99. }
  100. }
  101. }