|
@@ -34,6 +34,16 @@ class AuthorityService
|
|
|
return Cache::tags($tag)->get($key);
|
|
return Cache::tags($tag)->get($key);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public function getUserAndroidAuthority()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!Auth::user())return new Collection();
|
|
|
|
|
+ $key = "authorities:android:user_".Auth::id();
|
|
|
|
|
+ $isAdmin = $this->checkAdminIdentity();
|
|
|
|
|
+ $tag = $isAdmin ? "authorities:admin" : "authorities:user";
|
|
|
|
|
+ if (!Cache::tags($tag)->has($key))Cache::tags($tag)->forever($key,$this->getUserAuthorityData($isAdmin,true));
|
|
|
|
|
+ return Cache::tags($tag)->get($key);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private function checkAdminIdentity():bool
|
|
private function checkAdminIdentity():bool
|
|
|
{
|
|
{
|
|
|
if (!Auth::user())return false;
|
|
if (!Auth::user())return false;
|
|
@@ -43,14 +53,17 @@ class AuthorityService
|
|
|
* 即时的权限数据
|
|
* 即时的权限数据
|
|
|
*
|
|
*
|
|
|
* @param bool $isAdmin
|
|
* @param bool $isAdmin
|
|
|
|
|
+ * @param bool $isAndroid
|
|
|
*
|
|
*
|
|
|
* @return Collection
|
|
* @return Collection
|
|
|
*/
|
|
*/
|
|
|
- public function getUserAuthorityData(bool $isAdmin = null):Collection
|
|
|
|
|
|
|
+ public function getUserAuthorityData(bool $isAdmin = null, bool $isAndroid = false):Collection
|
|
|
{
|
|
{
|
|
|
|
|
+ $query = Authority::query();
|
|
|
|
|
+ if ($isAndroid)$query->whereNotNull("method");
|
|
|
if ($isAdmin===null)$isAdmin = $this->checkAdminIdentity();
|
|
if ($isAdmin===null)$isAdmin = $this->checkAdminIdentity();
|
|
|
- if ($isAdmin) return Authority::query()->get();
|
|
|
|
|
- return Authority::query()->whereHas("roles",function (Builder $query){
|
|
|
|
|
|
|
+ if ($isAdmin) return $query->get();
|
|
|
|
|
+ return $query->whereHas("roles",function (Builder $query){
|
|
|
$query->whereHas("users",function (Builder $query){
|
|
$query->whereHas("users",function (Builder $query){
|
|
|
$query->where(DB::raw("users.id"),Auth::id());
|
|
$query->where(DB::raw("users.id"),Auth::id());
|
|
|
});
|
|
});
|