77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Services\Dav;
 | 
						|
 | 
						|
use Sabre\DAV\PropPatch;
 | 
						|
use Sabre\DAVACL\PrincipalBackend\AbstractBackend;
 | 
						|
use App\Models\User;
 | 
						|
use Illuminate\Support\Facades\Log;
 | 
						|
 | 
						|
class LaravelSabrePrincipalBackend extends AbstractBackend
 | 
						|
{
 | 
						|
    public function getPrincipalsByPrefix($prefixPath)
 | 
						|
    {
 | 
						|
        return User::all()->map(function ($user) {
 | 
						|
            return [
 | 
						|
                'uri' => 'principals/' . $user->email,
 | 
						|
                '{DAV:}displayname' => $user->name,
 | 
						|
            ];
 | 
						|
        })->toArray();
 | 
						|
    }
 | 
						|
 | 
						|
    public function getPrincipalByPath($path)
 | 
						|
    {
 | 
						|
        \Log::info('getPrincipalByPath', ['path' => $path]);
 | 
						|
 | 
						|
        $email = basename($path);
 | 
						|
        $user = User::where('email', $email)->first();
 | 
						|
 | 
						|
        if ($user) {
 | 
						|
            return [
 | 
						|
                'uri' => 'principals/' . $user->email,
 | 
						|
                '{DAV:}displayname' => $user->name,
 | 
						|
            ];
 | 
						|
        }
 | 
						|
 | 
						|
        \Log::warning('No user found for principal path', ['key' => $key]);
 | 
						|
        return null;
 | 
						|
    }
 | 
						|
 | 
						|
    public function updatePrincipal($path, PropPatch $propPatch)
 | 
						|
    {
 | 
						|
        // Not implementing updates to principal properties
 | 
						|
        $propPatch->handle([], fn () => true);
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    public function searchPrincipals($prefixPath, array $searchProperties, $test = 'allof')
 | 
						|
    {
 | 
						|
        // No search functionality
 | 
						|
        return [];
 | 
						|
    }
 | 
						|
 | 
						|
    public function findByUri($uri, $principalPrefix)
 | 
						|
    {
 | 
						|
        // No group lookup support
 | 
						|
        return null;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getGroupMemberSet($principal)
 | 
						|
    {
 | 
						|
        // Not supporting group principals
 | 
						|
        return [];
 | 
						|
    }
 | 
						|
 | 
						|
    public function getGroupMembership($principal)
 | 
						|
    {
 | 
						|
        // Not supporting group memberships
 | 
						|
        return [];
 | 
						|
    }
 | 
						|
 | 
						|
    public function setGroupMemberSet($principal, array $members)
 | 
						|
    {
 | 
						|
        // Not supporting modifying groups
 | 
						|
        throw new \Sabre\DAV\Exception\MethodNotAllowed('Setting group members not supported.');
 | 
						|
    }
 | 
						|
}
 |