mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-25 09:42:10 +08:00
Users API: Fixed sending invite when using form requests
- Cast send_invite value in cases where it might not have been a boolean, which occurs on non-JSON requests. - Added test to cover. - Updated API docs to mention and shown boolean usage.
This commit is contained in:
parent
4896c4047f
commit
56d07f1909
|
@ -90,7 +90,7 @@ class UserApiController extends ApiController
|
||||||
public function create(Request $request)
|
public function create(Request $request)
|
||||||
{
|
{
|
||||||
$data = $this->validate($request, $this->rules()['create']);
|
$data = $this->validate($request, $this->rules()['create']);
|
||||||
$sendInvite = ($data['send_invite'] ?? false) === true;
|
$sendInvite = boolval($data['send_invite'] ?? false) === true;
|
||||||
|
|
||||||
$user = null;
|
$user = null;
|
||||||
DB::transaction(function () use ($data, $sendInvite, &$user) {
|
DB::transaction(function () use ($data, $sendInvite, &$user) {
|
||||||
|
|
|
@ -66,6 +66,12 @@
|
||||||
</em>
|
</em>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>
|
||||||
|
* Form requests can accept boolean (<code>true</code>/<code>false</code>) values via a <code>1</code> or <code>0</code>.
|
||||||
|
</em>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Regardless of format chosen, ensure you set a <code>Content-Type</code> header on requests so that the system can correctly parse your request data.
|
Regardless of format chosen, ensure you set a <code>Content-Type</code> header on requests so that the system can correctly parse your request data.
|
||||||
The API is primarily designed to be interfaced using JSON, since responses are always in JSON format, hence examples in this documentation will be shown as JSON.
|
The API is primarily designed to be interfaced using JSON, since responses are always in JSON format, hence examples in this documentation will be shown as JSON.
|
||||||
|
@ -82,17 +88,19 @@
|
||||||
|
|
||||||
<pre><code class="language-json">{
|
<pre><code class="language-json">{
|
||||||
"name": "My new item",
|
"name": "My new item",
|
||||||
|
"locked": true,
|
||||||
"books": [105, 263],
|
"books": [105, 263],
|
||||||
"tags": [{"name": "Tag Name", "value": "Tag Value"}],
|
"tags": [{"name": "Tag Name", "value": "Tag Value"}],
|
||||||
}</code></pre>
|
}</code></pre>
|
||||||
|
|
||||||
<p><strong>x-www-form-urlencoded</strong></p>
|
<p><strong>x-www-form-urlencoded</strong></p>
|
||||||
|
|
||||||
<pre><code class="language-text">name=My%20new%20item&books%5B0%5D=105&books%5B1%5D=263&tags%5B0%5D%5Bname%5D=Tag%20Name&tags%5B0%5D%5Bvalue%5D=Tag%20Value</code></pre>
|
<pre><code class="language-text">name=My%20new%20item&locked=1&books%5B0%5D=105&books%5B1%5D=263&tags%5B0%5D%5Bname%5D=Tag%20Name&tags%5B0%5D%5Bvalue%5D=Tag%20Value</code></pre>
|
||||||
|
|
||||||
<p><strong>x-www-form-urlencoded (Decoded for readability)</strong></p>
|
<p><strong>x-www-form-urlencoded (Decoded for readability)</strong></p>
|
||||||
|
|
||||||
<pre><code class="language-text">name=My new item
|
<pre><code class="language-text">name=My new item
|
||||||
|
locked=1
|
||||||
books[0]=105
|
books[0]=105
|
||||||
books[1]=263
|
books[1]=263
|
||||||
tags[0][name]=Tag Name
|
tags[0][name]=Tag Name
|
||||||
|
|
|
@ -143,6 +143,23 @@ class UsersApiTest extends TestCase
|
||||||
Notification::assertSentTo($user, UserInviteNotification::class);
|
Notification::assertSentTo($user, UserInviteNotification::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_create_with_send_invite_works_with_value_of_1()
|
||||||
|
{
|
||||||
|
$this->actingAsApiAdmin();
|
||||||
|
Notification::fake();
|
||||||
|
|
||||||
|
$resp = $this->postJson($this->baseEndpoint, [
|
||||||
|
'name' => 'Benny Boris',
|
||||||
|
'email' => 'bboris@example.com',
|
||||||
|
'send_invite' => '1', // Submissions via x-www-form-urlencoded/form-data may use 1 instead of boolean
|
||||||
|
]);
|
||||||
|
|
||||||
|
$resp->assertStatus(200);
|
||||||
|
/** @var User $user */
|
||||||
|
$user = User::query()->where('email', '=', 'bboris@example.com')->first();
|
||||||
|
Notification::assertSentTo($user, UserInviteNotification::class);
|
||||||
|
}
|
||||||
|
|
||||||
public function test_create_name_and_email_validation()
|
public function test_create_name_and_email_validation()
|
||||||
{
|
{
|
||||||
$this->actingAsApiAdmin();
|
$this->actingAsApiAdmin();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user