id, true); self::set(self::ID_KEY, $user->id); // todo 用户角色:是否社区长,后续补齐流程 // if (!$role) { // $role = self::getRole($user); // } // // self::set('role', $role); $sData = self::get(); // dd($sData,self::$session_id); $data = [ 'user_id' => $user->id, 'role' => $role ]; if ($token) { $data['token'] = self::getSessionId(); // todo 单点登录 // $one = Config::getValueDefaultCache('login_only_one', false); self::saveUKeys(); // if ($one) { // self::deleteOnlyOne(); // } } return $data; } /** * 退出登录 * * @return void * @throws LogicException */ static public function logout() { self::set(self::ID_KEY, 0); } static public function setData($key, $value) { self::set($key, $value); } static public function getData($key, $value = null) { return self::get($key, $value); } /** * 获取角色 * * @param User $user * @return int */ static public function getRole(\App\Module\User\Models\User $user): RULE { return RULE::ROLE_USER; } /** * 删除其他 ,只剩最后一个 * * @param $uid * @return void * @throws LogicException */ static public function deleteOnlyOne($uid = null) { $uid = $uid ?? self::getUserId(); $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []); $last = array_pop($ukeys); foreach ($ukeys as $k => $v) { \Illuminate\Support\Facades\Cache::delete($v); } \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, [ $last ], static::$ttl); } /** * 保存用户 keys * * @return array * @throws LogicException */ static public function saveUKeys($uid = null) { $uid = $uid ?? self::getUserId(); $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []); $ukeys[] = self::getKey(); // dump($ukeys); // dump($uid,$ukeys); \Illuminate\Support\Facades\Cache::set('ukeys' . $uid, $ukeys, static::$ttl); return $ukeys; } /** * 获取用户Keys * * @return array * @throws LogicException */ public static function getUKeys($uid = null) { $uid = $uid ?? self::getUserId(); $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []); // dump($uid,$ukeys); return $ukeys; } /** * 删除 用户Keys * * @param $uid * @return void * @throws LogicException */ public static function removeUKeys($uid = null) { $uid = $uid ?? self::getUserId(); $ukeys = \Illuminate\Support\Facades\Cache::get('ukeys' . $uid, []); foreach ($ukeys as $k => $v) { \Illuminate\Support\Facades\Cache::delete($v); } \Illuminate\Support\Facades\Cache::delete('ukeys' . $uid); } static protected function getKey() { return static::$prefix . static::$session_id . date('W'). '_' .Version::VERSION; } }