12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php namespace App\Http\Controllers\Admin;
- use App\Models\AdminUser;
- use App\Models\AdminRule;
- use App\Servers\Tencent\Sms;
- use Illuminate\Support\Facades\DB;
- /**
- * 管理后台登录控制器
- *
- * @author 刘相欣
- *
- * */
- class Login extends Admin {
- /**
- * 登录方法
- *
- * */
- public function index(AdminUser $AdminUser,AdminRule $AdminRule){
- if( request()->isMethod('post') ){
- // 接收数据
- $username = request('username','');
- // 接收数据
- $code = request('code','');
- // 验证
- if( !$username || !$code ) return json_send(['code'=>'error','msg'=>'用户名验证码必填']);
- // 查询用户
- $admin = $AdminUser->orWhere('username',$username)->orWhere('phone',$username)->first(['uid','username','phone','status','password','insert_time','update_time']);
- // 用户不存在
- if( !$admin || $admin['status'] ) return json_send(['code'=>'error','msg'=>'用户名不存在或已被停用']);
- // 比对密码
- if( md5($code) != $admin['password'] ) return json_send(['code'=>'error','msg'=>'密码错误或账号不存在']);
- $admin = $admin->toArray();
- // 获取数据
- $adminRule = $AdminRule::query()->where('admin_uid',$admin['uid'])->first();
- // 查询用户的组别
- $group = DB::table('auth_group_access')->where(['user_uid'=>$admin['uid']])->pluck('group_id')->toArray();
- // 权限小组
- $admin['group_id'] = $group;
- // 删除敏感数据-密码
- unset($admin['password']);
- // 存储登录状态
- session(['userAuth'=>$admin]);
- session(['userRule'=>$adminRule]);
- // 表单令牌
- return json_send(['code'=>'success','msg'=>'登录成功','path'=>url('admin')]);
- }
- // 加载模板
- return $this->fetch();
- }
- /**
- * 退出登录方法
- *
- * */
- public function out(){
- // 清除
- session()->flush();
- // 跳转
- return $this->error('退出成功',url('admin/login/index'));
- }
- /**
- * 发送验证码
- *
- * */
- public function send_code(Sms $Sms){
- if( request()->isMethod('post') ){
- // 接收数据
- $username = request('username','');
- // 如果有数据,并且短信验证码时间未过时
- if( !$username ) return json_send(['code'=>'error','msg'=>'用户名必填']);
- // 获取数据
- $session = session('validSmsCode');
- // 如果有数据,并且验证码创建的时间在一分钟之内
- if( $session && time() - $session['create_time'] < 60 ) return json_send(['code'=>'error','msg'=>'请稍后再试']);
- // 查询用户
- $admin = DB::table('admin')->orWhere('username',$username)->orWhere('phone',$username)->first(['uid','username','phone','status']);
- // 用户不存在
- if( !$admin || $admin['status']) return json_send(['code'=>'error','msg'=>'用户名不存在或已被停用']);
- // 生成验证码
- $code = strval(rand(100000,999999));
- // 调用验证码发送
- $result = $Sms->send($admin['phone'],$code);
- // 如果失败
- if( isset($result['error']) ) return json_send(['code'=>'error','msg'=>$result['error']]);
- // session数据
- $session = ['code'=>$code,'phone'=>$admin['phone'],'create_time'=>time()];
- // 存入session
- session(['validSmsCode'=>$session]);
- // 成功结果
- return json_send(['code'=>'success','msg'=>'发送成功']);
- }
- }
- }
|