public function getPermissions(User\UserInterface $user = null, $object = null, $permission = null)
	{
		// if no user is specified, default to the Auth one
		if(is_null($user))
		{
			$user = app('auth')->user();
		}
		
		if(is_null($object) && is_null($permission))
		{
			return $this->getPermissionsByUser($user);
		}
		
		// if a specific permission was defined on the requested object, look that up
		$permObject = null;
		if(!is_null($object) && !is_null($permission))
		{
			$permObject = $this->permission->findByPermissionAndObject($permission, $object);
		}
		
		$userPerms = $this->userObjectPermission->findAnyPermission($user, $object, $permObject);
		$groupPerms = $this->groupObjectPermission->findAnyPermission($user->getGroups(), $object, $permObject);
		
		return $userPerms->merge($groupPerms);
	}