laravel-sms.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. return [
  3. /*
  4. |--------------------------------------------------------------------------
  5. | 内置路由的属性
  6. |--------------------------------------------------------------------------
  7. |
  8. | 如果是web应用建议`middleware`为`web`
  9. | 如果是api应用建议`middleware`为`api`
  10. |
  11. */
  12. 'routeAttributes' => [
  13. 'prefix' => 'laravel-sms',
  14. 'middleware' => 'web',
  15. ],
  16. /*
  17. |--------------------------------------------------------------------------
  18. | 请求间隔
  19. |--------------------------------------------------------------------------
  20. |
  21. | 单位:秒
  22. |
  23. */
  24. 'interval' => 60,
  25. /*
  26. |--------------------------------------------------------------------------
  27. | 数据验证管理
  28. |--------------------------------------------------------------------------
  29. |
  30. | 设置从客户端传来的需要验证的数据字段(`field`)
  31. |
  32. | - isMobile 是否为手机号字段
  33. | - enable 是否开启验证
  34. | - default 默认静态验证规则
  35. | - staticRules 静态验证规则
  36. |
  37. */
  38. 'validation' => [
  39. 'mobile' => [
  40. 'isMobile' => true,
  41. 'enable' => true,
  42. 'default' => 'mobile_required',
  43. 'staticRules' => [
  44. 'mobile_required' => 'required|zh_mobile',
  45. 'check_mobile_unique' => 'required|zh_mobile|unique:users,mobile',
  46. 'check_mobile_exists' => 'required|zh_mobile|exists:users',
  47. ],
  48. ],
  49. ],
  50. /*
  51. |--------------------------------------------------------------------------
  52. | 验证码管理
  53. |--------------------------------------------------------------------------
  54. |
  55. | - length 验证码长度
  56. | - validMinutes 验证码有效时间长度,单位为分钟
  57. | - repeatIfValid 如果原验证码还有效,是否重复使用原验证码
  58. | - maxAttempts 验证码最大尝试验证次数,超过该数值验证码自动失效,0或负数则不启用
  59. |
  60. */
  61. 'code' => [
  62. 'length' => 5,
  63. 'validMinutes' => 5,
  64. 'repeatIfValid' => false,
  65. 'maxAttempts' => 0,
  66. ],
  67. /*
  68. |--------------------------------------------------------------------------
  69. | 验证码短信通用内容
  70. |--------------------------------------------------------------------------
  71. |
  72. | 如需缓存配置,则需使用 `SmsManger::closure($closure)` 方法进行配置
  73. |
  74. */
  75. 'content' => \app\common\helpers\Serializer::serialize(function ($code, $minutes, $input) {
  76. return '【signature】您的验证码是' . $code . ',有效期为' . $minutes . '分钟,请尽快验证。';
  77. }),
  78. /*
  79. |--------------------------------------------------------------------------
  80. | 验证码短信模版
  81. |--------------------------------------------------------------------------
  82. |
  83. | 每项数据的值可以为以下三种之一:
  84. |
  85. | - 字符串/数字
  86. | 如: 'YunTongXun' => '短信模版id'
  87. |
  88. | - 数组
  89. | 如: 'Alidayu' => ['短信模版id', '语音模版id'],
  90. |
  91. | - 匿名函数
  92. | 如: 'YunTongXun' => function ($input, $type) {
  93. | return $input['isRegister'] ? 'registerTempId' : 'commonId';
  94. | }
  95. |
  96. | 如需缓存配置,则需使用 `SmsManger::closure($closure)` 方法对匿名函数进行配置
  97. |
  98. */
  99. 'templates' => [
  100. ],
  101. /*
  102. |--------------------------------------------------------------------------
  103. | 模版数据管理
  104. |--------------------------------------------------------------------------
  105. |
  106. | 每项数据的值可以为以下两种之一:
  107. |
  108. | - 基本数据类型
  109. | 如: 'minutes' => 5
  110. |
  111. | - 匿名函数(如果该函数不返回任何值,即表示不使用该项数据)
  112. | 如: 'serialNumber' => function ($code, $minutes, $input, $type) {
  113. | return $input['serialNumber'];
  114. | }
  115. | 如: 'hello' => function ($code, $minutes, $input, $type) {
  116. | //不返回任何值,那么hello将会从模版数据中移除 :)
  117. | }
  118. |
  119. | 如需缓存配置,则需使用 `SmsManger::closure($closure)` 方法对匿名函数进行配置
  120. |
  121. */
  122. 'data' => [
  123. 'code' => \app\common\helpers\Serializer::serialize(function ($code) {
  124. return $code;
  125. }),
  126. 'minutes' => \app\common\helpers\Serializer::serialize(function ($code, $minutes) {
  127. return $minutes;
  128. }),
  129. ],
  130. /*
  131. |--------------------------------------------------------------------------
  132. | 存储系统配置
  133. |--------------------------------------------------------------------------
  134. |
  135. | driver:
  136. | 存储方式,是一个实现了'Toplan\Sms\Storage'接口的类的类名,
  137. | 内置可选的值有'Toplan\Sms\SessionStorage'和'Toplan\Sms\CacheStorage',
  138. | 如果不填写driver,那么系统会自动根据内置路由的属性(routeAttributes)中middleware的配置值选择存储器driver:
  139. | - 如果中间件含有'web',会选择使用'Toplan\Sms\SessionStorage'
  140. | - 如果中间件含有'api',会选择使用'Toplan\Sms\CacheStorage'
  141. |
  142. | prefix:
  143. | 存储key的prefix
  144. |
  145. | 内置driver的个性化配置:
  146. | - 在laravel项目的'config/session.php'文件中可以对'Toplan\Sms\SessionStorage'进行更多个性化设置
  147. | - 在laravel项目的'config/cache.php'文件中可以对'Toplan\Sms\CacheStorage'进行更多个性化设置
  148. |
  149. */
  150. 'storage' => [
  151. 'driver' => '',
  152. 'prefix' => 'laravel_sms',
  153. ],
  154. /*
  155. |--------------------------------------------------------------------------
  156. | 是否数据库记录发送日志
  157. |--------------------------------------------------------------------------
  158. |
  159. | 若需开启此功能,需要先生成一个内置的'laravel_sms'表
  160. | 运行'php artisan migrate'命令可以自动生成
  161. |
  162. */
  163. 'dbLogs' => false,
  164. /*
  165. |--------------------------------------------------------------------------
  166. | 队列任务
  167. |--------------------------------------------------------------------------
  168. |
  169. */
  170. 'queueJob' => 'Toplan\Sms\SendReminderSms',
  171. /*
  172. |--------------------------------------------------------------------------
  173. | 验证码模块提示信息
  174. |--------------------------------------------------------------------------
  175. |
  176. */
  177. 'notifies' => [
  178. // 频繁请求无效的提示
  179. 'request_invalid' => '请求无效,请在%s秒后重试',
  180. // 验证码短信发送失败的提示
  181. 'sms_sent_failure' => '短信验证码发送失败,请稍后重试',
  182. // 语音验证码发送发送成功的提示
  183. 'voice_sent_failure' => '语音验证码请求失败,请稍后重试',
  184. // 验证码短信发送成功的提示
  185. 'sms_sent_success' => '短信验证码发送成功,请注意查收',
  186. // 语音验证码发送发送成功的提示
  187. 'voice_sent_success' => '语音验证码发送成功,请注意接听',
  188. ],
  189. ];