// +---------------------------------------------------------------------- namespace app\services\auth; use app\model\auth\Users; use app\model\Member; use app\model\auth\Permissions; use sent\tree\Tree; use think\facade\Env; class AuthService{ /** * @title 用户登录 * * @param [type] $request * @return void */ public function login($request){ $params = $request->post(); $map = []; foreach($params as $field => $value){ if(in_array($field, ['username', 'email', 'mobile']) && $field != 'password'){ $map[$field] = $value; } } $user = Users::where($map)->field(['uid','username', 'password', 'email', 'avatar', 'department_id', 'status'])->findOrEmpty(); if (!$user->isEmpty()) { if(!password_verify($params['password'], $user->password)){ $member = Member::where($map)->findOrEmpty(); if (!$member->isEmpty() && $member['password'] === md5($params['password'] . $member['salt'])) { $user->save(['password'=>password_hash($params['password'], PASSWORD_DEFAULT)]); }else{ throw new \think\Exception('密码不正确!', 100002); } } if($user->status != 1){ throw new \think\Exception('当前用户不可用', 100003); } return $user->append(['token']); }else{ $member = Member::where($map)->findOrEmpty(); if(!$member->isEmpty()){ $user = Users::create(['uid' => $member['uid'], 'username' => $member['username'], 'password' => password_hash($params['password'], PASSWORD_DEFAULT), 'nickname' => $member['nickname'], 'email' => $member['email'], 'department_id' => $member['department']]); }else{ throw new \think\Exception('当前用户不存在', 100001); } } } /** * @title 获取已授权菜单 * * @return void */ public function getAuthMenu(){ $order = "sort asc, id desc"; $map = []; if(request()->user['uid'] != Env::get('admin_root')){ $map[] = ['name', 'IN', request()->auth()['permission']]; } $map[] = ['type', '=', 'menu']; $map[] = ['hidden', '=', 0]; $list = Permissions::where($map)->order($order)->append(['meta'])->select() ->each(function($item){ $item->hidden = (int) $item['hidden']; $item->hiddenBreadcrumb = (int) $item['hiddenBreadcrumb']; })->toArray(); return (new Tree())->listToTree($list, 'id', 'parent_id', 'children'); } /** * @title 获取已授权菜单 * * @return void */ public function getAuthPermissions(){ $map = []; if(request()->user['uid'] != Env::get('admin_root')){ $map[] = ['name', 'IN', request()->auth()['permission']]; } $map[] = ['hidden', '=', 0]; $list = Permissions::where($map)->select(); $data = []; foreach($list as $item){ $data[] = $item['name']; }; return $data; } }