feat: HADO_DEV_USER substitutes X-Remote-User in local env
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BCrwHHnGCB5XH968Nxokqw
This commit is contained in:
@@ -41,6 +41,8 @@ CACHE_STORE=database
|
||||
# CACHE_PREFIX=
|
||||
|
||||
HADO_DEFAULT_TZ=America/Montevideo
|
||||
# Только dev (APP_ENV=local): логин вместо X-Remote-User, чтобы открыть инбокс без хаба
|
||||
HADO_DEV_USER=
|
||||
HADO_PRESENCE_TIMEOUT=2
|
||||
HADO_FALLBACK_DAY=30
|
||||
HADO_FALLBACK_HOUR=10
|
||||
|
||||
@@ -18,6 +18,10 @@ class RemoteUser
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
$login = trim((string) $request->header('X-Remote-User', ''));
|
||||
if ($login === '' && app()->environment('local')) {
|
||||
// Dev без хаба: HADO_DEV_USER подставляет пользователя. В проде не работает.
|
||||
$login = trim((string) config('hado.dev_user'));
|
||||
}
|
||||
if ($login === '') {
|
||||
return response()->json(['message' => 'Нет X-Remote-User: запрос должен идти через хаб'], 401);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
return [
|
||||
'default_tz' => env('HADO_DEFAULT_TZ', 'UTC'),
|
||||
// Только для APP_ENV=local: логин, который подставляется вместо X-Remote-User, если заголовка нет.
|
||||
'dev_user' => env('HADO_DEV_USER', ''),
|
||||
'presence_timeout' => (int) env('HADO_PRESENCE_TIMEOUT', 2),
|
||||
'presence_ttl' => 60,
|
||||
'fallback_day_minutes' => (int) env('HADO_FALLBACK_DAY', 30),
|
||||
|
||||
@@ -52,6 +52,21 @@ class MeApiTest extends TestCase
|
||||
public function test_requires_remote_user_header(): void
|
||||
{
|
||||
$this->getJson('/me')->assertStatus(401);
|
||||
|
||||
// dev_user срабатывает только в local
|
||||
config(['hado.dev_user' => 'dev']);
|
||||
$this->getJson('/me')->assertStatus(401);
|
||||
}
|
||||
|
||||
public function test_dev_user_substitutes_header_in_local_env_only(): void
|
||||
{
|
||||
config(['hado.dev_user' => 'dev']);
|
||||
$this->app->detectEnvironment(fn () => 'local');
|
||||
|
||||
$this->getJson('/me')->assertOk()->assertJsonPath('login', 'dev');
|
||||
|
||||
config(['hado.dev_user' => '']);
|
||||
$this->getJson('/me')->assertStatus(401);
|
||||
}
|
||||
|
||||
public function test_first_visit_creates_user_with_web_channel(): void
|
||||
|
||||
Reference in New Issue
Block a user