## Summary - move the Laravel application into `apps/platform` and keep the repository root for orchestration, docs, and tooling - update the local command model, Sail/Docker wiring, runtime paths, and ignore rules around the new platform location - add relocation quickstart/contracts plus focused smoke coverage for bootstrap, command model, routes, and runtime behavior ## Validation - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/PlatformRelocation` - integrated browser smoke validated `/up`, `/`, `/admin`, `/admin/choose-workspace`, and tenant route semantics for `200`, `403`, and `404` ## Remaining Rollout Checks - validate Dokploy build context and working-directory assumptions against the new `apps/platform` layout - confirm web, queue, and scheduler processes all start from the expected working directory in staging/production - verify no legacy volume mounts or asset-publish paths still point at the old root-level `public/` or `storage/` locations Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #213
53 lines
2.4 KiB
PHP
53 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Graph;
|
|
|
|
interface GraphClientInterface
|
|
{
|
|
/**
|
|
* List policies of a given type.
|
|
*
|
|
* Supported list query options (sanitized against the contract allowlists for the policy type):
|
|
* - `select`: `string|string[]` Optional `$select` fields. Accepts comma-separated string or list of fields.
|
|
* - `expand`: `string|string[]` Optional `$expand` expansions. Accepts comma-separated string or list of tokens.
|
|
* String input is split on top-level commas only (commas inside balanced parentheses are not separators).
|
|
* - `filter`: `string` Optional `$filter`.
|
|
* - `top`: `int` Optional `$top`.
|
|
* - `platform`: `string` Optional platform filter (contract-specific).
|
|
*
|
|
* Tenant/auth context options (typically resolved by `MicrosoftGraphOptionsResolver`):
|
|
* - `tenant`, `client_id`, `client_secret`, `scope`, `token_url`, `access_token`, `client_request_id`
|
|
*
|
|
* @param string $policyType Graph policy type identifier
|
|
* @param array{select?: string|string[], expand?: string|string[], filter?: string, top?: int, platform?: string, client_request_id?: string, tenant?: string, client_id?: string, client_secret?: string, scope?: string|string[], token_url?: string, access_token?: string} $options
|
|
*/
|
|
public function listPolicies(string $policyType, array $options = []): GraphResponse;
|
|
|
|
/**
|
|
* Fetch a single policy payload by type and identifier.
|
|
*/
|
|
public function getPolicy(string $policyType, string $policyId, array $options = []): GraphResponse;
|
|
|
|
/**
|
|
* Fetch basic organization metadata for connectivity validation.
|
|
*/
|
|
public function getOrganization(array $options = []): GraphResponse;
|
|
|
|
/**
|
|
* Apply or restore a policy payload.
|
|
*/
|
|
public function applyPolicy(string $policyType, string $policyId, array $payload, array $options = []): GraphResponse;
|
|
|
|
/**
|
|
* Get granted OAuth2 permissions for the service principal.
|
|
*/
|
|
public function getServicePrincipalPermissions(array $options = []): GraphResponse;
|
|
|
|
/**
|
|
* Execute an arbitrary Graph request (used for specialized operations like RBAC setup).
|
|
*
|
|
* Supported options: `query`, `json`, `tenant`, `client_id`, `client_secret`, `scope`, `token_url`, `access_token`.
|
|
*/
|
|
public function request(string $method, string $path, array $options = []): GraphResponse;
|
|
}
|