소스 검색

Weenier utc项目部署 06231

wesmiler 3 년 전
부모
커밋
6bde1afd8b
2개의 변경된 파일176개의 추가작업 그리고 74개의 파일을 삭제
  1. 176 0
      app/Services/Common/LoginService.php
  2. 0 74
      app/Services/LoginLogService.php

+ 176 - 0
app/Services/Common/LoginService.php

@@ -0,0 +1,176 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services\Common;
+
+use App\Helpers\Jwt;
+use App\Models\ActionLogModel;
+use App\Models\UserModel;
+use App\Services\BaseService;
+use Carbon\Carbon;
+use Illuminate\Support\Facades\Session;
+use Illuminate\Support\Facades\Validator;
+use Gregwar\Captcha\CaptchaBuilder;
+use Gregwar\Captcha\PhraseBuilder;
+use Ramsey\Uuid\Uuid;
+
+/**
+ * 登录服务类
+ * @author laravel开发员
+ * @since 2020/11/10
+ * Class LoginService
+ * @package App\Services\Common
+ */
+class LoginService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author laravel开发员
+     * @since 2020/11/10
+     * LoginService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new UserModel();
+    }
+
+    /**
+     * 获取验证码
+     * @author laravel开发员
+     * @since 2020/11/10
+     */
+    public function captcha()
+    {
+        $phrase = new PhraseBuilder;
+        // 设置验证码位数
+        $code = $phrase->build(4);
+        // 生成验证码图片的Builder对象,配置相应属性
+        $builder = new CaptchaBuilder($code, $phrase);
+        // 设置背景颜色25,25,112
+        $builder->setBackgroundColor(255, 255, 255);
+        // 设置倾斜角度
+        $builder->setMaxAngle(25);
+        // 设置验证码后面最大行数
+        $builder->setMaxBehindLines(10);
+        // 设置验证码前面最大行数
+        $builder->setMaxFrontLines(10);
+        // 设置验证码颜色
+        $builder->setTextColor(230, 81, 175);
+        // 可以设置图片宽高及字体
+        $builder->build($width = 165, $height = 45, $font = null);
+        // 获取验证码的内容
+        $phrase = $builder->getPhrase();
+        // 把内容存入 cache,10分钟后过期
+        $key = Uuid::uuid1()->toString();
+        $this->model->setCache($key, $phrase, Carbon::now()->addMinutes(10));
+        // 组装接口数据
+        $data = [
+            'key' => $key,
+            'captcha' => $builder->inline(),
+        ];
+        return message("操作成功", true, $data);
+    }
+
+    /**
+     * 系统登录
+     * @return mixed
+     * @since 2020/11/10
+     * @author laravel开发员
+     */
+    public function login()
+    {
+        // 参数
+        $param = request()->all();
+        // 用户名
+        $username = trim($param['username']);
+        // 密码
+        $password = trim($param['password']);
+        // 验证规则
+        $rules = [
+            'username' => 'required|min:2|max:20',
+            'password' => 'required|min:6|max:20',
+            'captcha' => ['required'],
+        ];
+        // 规则描述
+        $messages = [
+            'required' => ':attribute为必填项',
+            'min' => ':attribute长度不符合要求',
+            'captcha.required' => '验证码不能为空',
+        ];
+        // 验证
+        $validator = Validator::make($param, $rules, $messages, [
+            'username' => '用户名称',
+            'password' => '登录密码'
+        ]);
+        if ($validator->fails()) {
+            $errors = $validator->errors()->getMessages();
+            foreach ($errors as $key => $value) {
+                return message($value[0], false);
+            }
+        }
+        // 验证码校验
+        $key = trim($param['key']);
+        $captcha = $this->model->getCache($key);
+        if (strtolower($captcha) != strtolower($param['captcha'])) {
+            return message("请输入正确的验证码", false);
+        }
+
+        // 用户验证
+        $info = $this->model->getOne([
+            ['username', '=', $username],
+        ]);
+
+        if (!$info) {
+            return message('您的登录用户名不存在', false);
+        }
+        // 密码校验
+        $password = get_password($password . $username);
+        if ($password != $info['password']) {
+            return message("您的登录密码不正确", false);
+        }
+        // 使用状态校验
+        if ($info['status'] != 1) {
+            return message("您的帐号已被禁用", false);
+        }
+
+        // 设置日志标题
+        ActionLogModel::setTitle("登录系统");
+        ActionLogModel::record();
+
+        // JWT生成token
+        $jwt = new Jwt();
+        $token = $jwt->getToken($info['id']);
+
+        // 结果返回
+        $result = [
+            'access_token' => $token,
+        ];
+        return message('登录成功', true, $result);
+    }
+
+    /**
+     * 退出系统
+     * @return array
+     * @since 2020/11/12
+     * @author laravel开发员
+     */
+    public function logout()
+    {
+        // 清空SESSION值
+        session()->put("userId", null);
+        // 记录退出日志
+        ActionLogModel::setTitle("注销系统");
+        // 创建退出日志
+        ActionLogModel::record();
+        return message();
+    }
+
+}

+ 0 - 74
app/Services/LoginLogService.php

@@ -1,74 +0,0 @@
-<?php
-// +----------------------------------------------------------------------
-// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
-// +----------------------------------------------------------------------
-// | 版权所有 2017~2021 LARAVEL研发中心
-// +----------------------------------------------------------------------
-// | 官方网站: http://www.laravel.cn
-// +----------------------------------------------------------------------
-// | Author: laravel开发员 <laravel.qq.com>
-// +----------------------------------------------------------------------
-
-namespace App\Services;
-
-use App\Models\ActionLogModel;
-
-/**
- * 登录日志-服务类
- * @author laravel开发员
- * @since 2020/11/12
- * Class LoginLogService
- * @package App\Services
- */
-class LoginLogService extends BaseService
-{
-    /**
-     *
-     * @author laravel开发员
-     * @since 2020/11/12
-     * LoginLogService constructor.
-     */
-    public function __construct()
-    {
-        $this->model = new ActionLogModel();
-    }
-
-    /**
-     *
-     * @return array
-     * @since 2020/11/12
-     * @author laravel开发员
-     */
-    public function getList()
-    {
-        // 查询条件
-        $param = request()->all();
-
-        // 查询条件
-        $query = $this->model->where(function ($query) {
-            $query->where('title', 'like', '%登录系统%')
-                ->orWhere('title', 'like', '%注销系统%');
-        });
-        // 用户账号
-        $username = getter($param, "username");
-        if ($username) {
-            $query = $query->where("username", "=", $username);
-        }
-
-        //获取数据总数
-        $count = $query->count();
-
-        // 获取数据列表
-        $offset = (PAGE - 1) * PERPAGE;
-        $result = $query->orderByDesc("id")->offset($offset)->limit(PERPAGE)->get()->toArray();
-        //返回结果
-        $message = array(
-            "msg" => '操作成功',
-            "code" => 0,
-            "data" => $result,
-            "count" => $count,
-        );
-        return $message;
-    }
-
-}