mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 17:24:03 +00:00
[4.x] URL generation, request data identification improvements (#1357)
* UrlGenerator: set defaults based on config; request data: move config to config file+resolver * Claude code adjustments * improve request data tests, simplify complex test in UrlGeneratorBootstrapperTest * url generator test: test changing tenant parameter name * request data identification: add tenant_model_column configuration * defaultParameterNames -> passQueryParameter * move comment * minor refactor in PathIdentificationTest, expand CLAUDE.md to include early identification section * Fix COLOR_FLAG * improve test name Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * TenancyUrlGenerator: add a check for queryParameterName being null Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix code style (php-cs-fixer) --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
parent
f4cc99b317
commit
5f7fd38e5a
13 changed files with 440 additions and 126 deletions
|
|
@ -20,7 +20,9 @@ class RequestDataTenantResolver extends Contracts\CachedTenantResolver
|
|||
{
|
||||
$payload = (string) $args[0];
|
||||
|
||||
if ($payload && $tenant = tenancy()->find($payload, withRelations: true)) {
|
||||
$column = static::tenantModelColumn();
|
||||
|
||||
if ($payload && $tenant = tenancy()->find($payload, $column, withRelations: true)) {
|
||||
return $tenant;
|
||||
}
|
||||
|
||||
|
|
@ -29,8 +31,43 @@ class RequestDataTenantResolver extends Contracts\CachedTenantResolver
|
|||
|
||||
public function getPossibleCacheKeys(Tenant&Model $tenant): array
|
||||
{
|
||||
// todo@tests
|
||||
return [
|
||||
$this->formatCacheKey($tenant->getTenantKey()),
|
||||
$this->formatCacheKey(static::payloadValue($tenant)),
|
||||
];
|
||||
}
|
||||
|
||||
public static function payloadValue(Tenant $tenant): string
|
||||
{
|
||||
return $tenant->getAttribute(static::tenantModelColumn());
|
||||
}
|
||||
|
||||
public static function tenantModelColumn(): string
|
||||
{
|
||||
return config('tenancy.identification.resolvers.' . static::class . '.tenant_model_column') ?? tenancy()->model()->getTenantKeyName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the header used for identification, or null if header identification is disabled.
|
||||
*/
|
||||
public static function headerName(): string|null
|
||||
{
|
||||
return config('tenancy.identification.resolvers.' . static::class . '.header');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the query parameter used for identification, or null if query parameter identification is disabled.
|
||||
*/
|
||||
public static function queryParameterName(): string|null
|
||||
{
|
||||
return config('tenancy.identification.resolvers.' . static::class . '.query_parameter');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the cookie used for identification, or null if cookie identification is disabled.
|
||||
*/
|
||||
public static function cookieName(): string|null
|
||||
{
|
||||
return config('tenancy.identification.resolvers.' . static::class . '.cookie');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue