// Remove non-specified domain if forced and we have a domain
if ($isFullUrl && $forceAppDomain) {
if (!empty($base) && strpos($path, $base) === 0) {
- $path = trim(substr($path, strlen($base) - 1));
+ $path = substr($path, strlen($base));
+ } else {
+ $explodedPath = explode('/', $path);
+ $path = implode('/', array_splice($explodedPath, 3));
}
- $explodedPath = explode('/', $path);
- $path = implode('/', array_splice($explodedPath, 3));
}
// Return normal url path if not specified in config
return url($path);
}
- return $base . '/' . $path;
+ return $base . '/' . ltrim($path, '/');
}
/**
<?php namespace Tests;
+use BookStack\Entities\Page;
use BookStack\Notifications\ConfirmEmail;
use BookStack\Auth\User;
use BookStack\Settings\SettingService;
->seeLink('Sign up');
}
+ public function test_login_redirects_to_initially_requested_url_correctly()
+ {
+ config()->set('app.url', 'http://localhost');
+ $page = Page::query()->first();
+
+ $this->visit($page->getUrl())
+ ->seePageUrlIs(baseUrl('/login'));
+ $this->login('admin@admin.com', 'password')
+ ->seePageUrlIs($page->getUrl());
+ }
+
/**
* Perform a login
* @param string $email
$result = baseUrl('http://example.com/bookstack/', true);
$this->assertEquals('http://example.com/bookstack/', $result);
}
+
+ public function test_base_url_force_domain_works_as_expected_with_full_url_given()
+ {
+ config()->set('app.url', 'http://example.com');
+ $result = baseUrl('http://examps.com/books/test/page/cat', true);
+ $this->assertEquals('http://example.com/books/test/page/cat', $result);
+ }
+
+ public function test_base_url_force_domain_works_when_app_domain_is_same_as_given_url()
+ {
+ config()->set('app.url', 'http://example.com');
+ $result = baseUrl('http://example.com/books/test/page/cat', true);
+ $this->assertEquals('http://example.com/books/test/page/cat', $result);
+ }
}
\ No newline at end of file