Common.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace app\api\controller;
  3. use ba\Captcha;
  4. use ba\Random;
  5. use app\common\facade\Token;
  6. use app\common\controller\Api;
  7. class Common extends Api
  8. {
  9. public function captcha()
  10. {
  11. $captchaId = $this->request->request('id');
  12. $config = array(
  13. 'codeSet' => '123456789', // 验证码字符集合
  14. 'fontSize' => 22, // 验证码字体大小(px)
  15. 'useCurve' => false, // 是否画混淆曲线
  16. 'useNoise' => true, // 是否添加杂点
  17. 'length' => 4, // 验证码位数
  18. 'bg' => array(255, 255, 255), // 背景颜色
  19. );
  20. $captcha = new Captcha($config);
  21. return $captcha->entry($captchaId);
  22. }
  23. public function refreshToken()
  24. {
  25. $refreshToken = $this->request->post('refresh_token');
  26. $refreshToken = Token::get($refreshToken, false);
  27. if (!$refreshToken || $refreshToken['expiretime'] < time()) {
  28. $this->error(__('Login expired, please login again.'));
  29. }
  30. $newToken = Random::uuid();
  31. if ($refreshToken['type'] == 'admin-refresh') {
  32. $baToken = $this->request->server('HTTP_BATOKEN', $this->request->request('batoken', ''));
  33. if (!$baToken) {
  34. $this->error(__('Invalid token'));
  35. }
  36. Token::delete($baToken);
  37. Token::set($newToken, 'admin', $refreshToken['user_id'], 86400);
  38. } elseif ($refreshToken['type'] == 'user-refresh') {
  39. $baUserToken = $this->request->server('HTTP_BA_USER_TOKEN', $this->request->request('ba-user-token', ''));
  40. if (!$baUserToken) {
  41. $this->error(__('Invalid token'));
  42. }
  43. Token::delete($baUserToken);
  44. Token::set($newToken, 'user', $refreshToken['user_id'], 86400);
  45. }
  46. $this->success('', [
  47. 'type' => $refreshToken['type'],
  48. 'token' => $newToken
  49. ]);
  50. }
  51. }