Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117461781
D5658.1774839493.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
50 KB
Referenced Files
None
Subscribers
None
D5658.1774839493.diff
View Options
diff --git a/src/app/Http/Controllers/API/V4/CompanionAppsController.php b/src/app/Http/Controllers/API/V4/CompanionAppsController.php
--- a/src/app/Http/Controllers/API/V4/CompanionAppsController.php
+++ b/src/app/Http/Controllers/API/V4/CompanionAppsController.php
@@ -54,8 +54,6 @@
*/
public function store(Request $request): JsonResponse
{
- $user = $this->guard()->user();
-
$v = Validator::make(
$request->all(),
[
@@ -64,12 +62,12 @@
);
if ($v->fails()) {
- return response()->json(['status' => 'error', 'errors' => $v->errors()], 422);
+ return response()->json(['status' => 'error', /* @var array */ 'errors' => $v->errors()], 422);
}
$app = CompanionApp::create([
'name' => $request->name,
- 'user_id' => $user->id,
+ 'user_id' => $this->guard()->user()->id,
]);
return response()->json([
@@ -98,7 +96,7 @@
);
if ($v->fails()) {
- return response()->json(['status' => 'error', 'errors' => $v->errors()], 422);
+ return response()->json(['status' => 'error', /* @var array */ 'errors' => $v->errors()], 422);
}
$notificationToken = $request->notificationToken;
@@ -184,7 +182,7 @@
*
* @param string $id Companion app identifier
*/
- public function show($id): CompanionAppResource|JsonResponse
+ public function show($id): JsonResponse
{
$result = CompanionApp::find($id);
if (!$result) {
@@ -196,7 +194,7 @@
return $this->errorResponse(403);
}
- return new CompanionAppResource($result);
+ return (new CompanionAppResource($result))->response();
}
/**
diff --git a/src/app/Http/Controllers/API/V4/MeetController.php b/src/app/Http/Controllers/API/V4/MeetController.php
--- a/src/app/Http/Controllers/API/V4/MeetController.php
+++ b/src/app/Http/Controllers/API/V4/MeetController.php
@@ -3,7 +3,9 @@
namespace App\Http\Controllers\API\V4;
use App\Http\Controllers\Controller;
+use App\Http\Resources\RoomSessionResource;
use App\Meet\Room;
+use Dedoc\Scramble\Attributes\BodyParameter;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
@@ -12,11 +14,18 @@
class MeetController extends Controller
{
/**
- * Join the room session. Each room has one owner, and the room isn't open until the owner
+ * Join the room session.
+ *
+ * Each room has one owner, and the room isn't open until the owner
* joins (and effectively creates the session).
*
* @param string $id Room identifier (name)
*/
+ #[BodyParameter('password', description: 'Room password', type: 'string')]
+ #[BodyParameter('requestId', description: 'Unique client identifier', type: 'string')]
+ #[BodyParameter('picture', description: 'User image', type: 'string')]
+ #[BodyParameter('nickname', description: 'User nickname', type: 'string')]
+ #[BodyParameter('canPublish', description: 'Client has media device(s)', type: 'bool')]
public function joinRoom($id): JsonResponse
{
$room = Room::where('name', $id)->first();
@@ -27,21 +36,27 @@
}
$user = Auth::guard()->user();
- $isOwner = $user && (
+ $init = !empty(request()->input('init'));
+ $settings = $room->getSettings(['locked', 'nomedia', 'password']);
+ $password = (string) $settings['password'];
+
+ $response = new RoomSessionResource($settings);
+ $response->isOwner = $user && (
$user->id == $wallet->owner->id || $room->permissions()->where('user', $user->email)->exists()
);
- $init = !empty(request()->input('init'));
// There's no existing session
if (!$room->hasSession()) {
// Participants can't join the room until the session is created by the owner
- if (!$isOwner) {
- return $this->errorResponse(422, self::trans('meet.session-not-found'), ['code' => 323]);
+ if (!$response->isOwner) {
+ $response->code = 323;
+ return $response->response()->setStatusCode(422);
}
// The room owner can create the session on request
if (!$init) {
- return $this->errorResponse(422, self::trans('meet.session-not-found'), ['code' => 324]);
+ $response->code = 324;
+ return $response->response()->setStatusCode(422);
}
$session = $room->createSession();
@@ -51,49 +66,37 @@
}
}
- $settings = $room->getSettings(['locked', 'nomedia', 'password']);
- $password = (string) $settings['password'];
-
- $config = [
- 'locked' => $settings['locked'] === 'true',
- 'nomedia' => $settings['nomedia'] === 'true',
- 'password' => $isOwner ? $password : '',
- 'requires_password' => !$isOwner && strlen($password),
- ];
-
- $response = ['config' => $config];
-
// Validate room password
- if (!$isOwner && strlen($password)) {
+ if (!$response->isOwner && strlen($password)) {
$request_password = request()->input('password');
if ($request_password !== $password) {
- $response['code'] = 325;
- return $this->errorResponse(422, self::trans('meet.session-password-error'), $response);
+ $response->code = 325;
+ return $response->response()->setStatusCode(422);
}
}
// Handle locked room
- if (!$isOwner && $config['locked']) {
+ if (!$response->isOwner && $settings['locked']) {
$nickname = request()->input('nickname');
$picture = request()->input('picture');
$requestId = request()->input('requestId');
$request = $requestId ? $room->requestGet($requestId) : null;
- $error = self::trans('meet.session-room-locked-error');
-
// Request already has been processed (not accepted yet, but it could be denied)
if (empty($request['status']) || $request['status'] != Room::REQUEST_ACCEPTED) {
if (!$request) {
if (empty($nickname) || empty($requestId) || !preg_match('/^[a-z0-9]{8,32}$/i', $requestId)) {
- return $this->errorResponse(422, $error, $response + ['code' => 326]);
+ $response->code = 326;
+ return $response->response()->setStatusCode(422);
}
if (empty($picture)) {
$svg = file_get_contents(resource_path('images/user.svg'));
$picture = 'data:image/svg+xml;base64,' . base64_encode($svg);
} elseif (!preg_match('|^data:image/png;base64,[a-zA-Z0-9=+/]+$|', $picture)) {
- return $this->errorResponse(422, $error, $response + ['code' => 326]);
+ $response->code = 326;
+ return $response->response()->setStatusCode(422);
}
// TODO: Resize when big/make safe the user picture?
@@ -102,43 +105,39 @@
if (!$room->requestSave($requestId, $request)) {
// FIXME: should we use error code 500?
- return $this->errorResponse(422, $error, $response + ['code' => 326]);
+ $response->code = 326;
+ return $response->response()->setStatusCode(422);
}
// Send the request (signal) to all moderators
- $result = $room->signal('joinRequest', $request, Room::ROLE_MODERATOR);
+ $room->signal('joinRequest', $request, Room::ROLE_MODERATOR);
}
- return $this->errorResponse(422, $error, $response + ['code' => 327]);
+ $response->code = 327;
+ return $response->response()->setStatusCode(422);
}
}
- // Initialize connection tokens
- if ($init) {
- // Choose the connection role
- $canPublish = !empty(request()->input('canPublish')) && (empty($config['nomedia']) || $isOwner);
- $role = $canPublish ? Room::ROLE_PUBLISHER : Room::ROLE_SUBSCRIBER;
- if ($isOwner) {
- $role |= Room::ROLE_MODERATOR;
- $role |= Room::ROLE_OWNER;
- }
+ if (!$init) {
+ $response->code = 322;
+ return $response->response()->setStatusCode(422);
+ }
- // Create session token for the current user/connection
- $response = $room->getSessionToken($role);
+ // Choose the connection role
+ $canPublish = !empty(request()->input('canPublish')) && (empty($settings['nomedia']) || $response->isOwner);
+ $response->role = $canPublish ? Room::ROLE_PUBLISHER : Room::ROLE_SUBSCRIBER;
+ if ($response->isOwner) {
+ $response->role |= Room::ROLE_MODERATOR | Room::ROLE_OWNER;
+ }
- if (empty($response)) {
- return $this->errorResponse(500, self::trans('meet.session-join-error'));
- }
+ // Create session token for the current user/connection
+ $response->token = $room->getSessionToken($response->role);
- $response_code = 200;
- $response['role'] = $role;
- $response['config'] = $config;
- } else {
- $response_code = 422;
- $response['code'] = 322;
+ if (empty($response->token)) {
+ return $this->errorResponse(500, self::trans('meet.session-join-error'));
}
- return response()->json($response, $response_code);
+ return $response->response();
}
/**
diff --git a/src/app/Http/Controllers/API/V4/RoomsController.php b/src/app/Http/Controllers/API/V4/RoomsController.php
--- a/src/app/Http/Controllers/API/V4/RoomsController.php
+++ b/src/app/Http/Controllers/API/V4/RoomsController.php
@@ -2,10 +2,12 @@
namespace App\Http\Controllers\API\V4;
-use App\Entitlement;
use App\Http\Controllers\RelationController;
+use App\Http\Resources\RoomInfoResource;
+use App\Http\Resources\RoomResource;
use App\Meet\Room;
use App\Permission;
+use Dedoc\Scramble\Attributes\BodyParameter;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@@ -28,7 +30,7 @@
/**
* Delete a room
*
- * @param string $id Room identifier
+ * @param int|string $id Room identifier (or name)
*/
public function destroy($id): JsonResponse
{
@@ -65,19 +67,16 @@
$room->assignToWallet($user->wallets()->first());
}
- $rooms = $user->rooms(true)
- ->union($shared)
- ->orderBy('name')
- ->get()
- ->map(function ($room) {
- return $this->objectToClient($room);
- });
+ $rooms = $user->rooms(true)->union($shared)->orderBy('name')->get();
$result = [
- // @var array List of rooms
- 'list' => $rooms,
+ 'status' => 'success',
+ // List of rooms
+ 'list' => RoomResource::collection($rooms),
// @var int Number of entries in the list
'count' => count($rooms),
+ // @var bool Indicates that there are more entries available
+ 'hasMore' => false,
];
return response()->json($result);
@@ -105,7 +104,7 @@
$errors = $room->setConfig($request);
if (!empty($errors)) {
- return response()->json(['status' => 'error', 'errors' => $errors], 422);
+ return response()->json(['status' => 'error', /* @var array */ 'errors' => $errors], 422);
}
return response()->json([
@@ -117,7 +116,7 @@
/**
* Get room information.
*
- * @param string $id Room identifier
+ * @param string $id Room identifier (or name)
*/
public function show($id): JsonResponse
{
@@ -126,41 +125,16 @@
return $this->errorResponse($room);
}
- $wallet = $room->wallet();
- $user = $this->guard()->user();
-
- $response = $this->objectToClient($room, true);
-
- unset($response['session_id']);
-
- $response['config'] = $room->getConfig();
-
- // Room sharees can't manage/see room ACL
- if ($permission) {
- unset($response['config']['acl']);
- }
-
- $response['skus'] = Entitlement::objectEntitlementsSummary($room);
- $response['wallet'] = $wallet->toArray();
+ $resource = new RoomInfoResource($room);
+ $resource->permission = $permission;
- if ($wallet->discount) {
- $response['wallet']['discount'] = $wallet->discount->discount;
- $response['wallet']['discount_description'] = $wallet->discount->description;
- }
-
- $isOwner = $user->canDelete($room);
- $response['canUpdate'] = $isOwner || $room->permissions()->where('user', $user->email)->exists();
- $response['canDelete'] = $isOwner && $user->wallet()->isController($user);
- $response['canShare'] = $isOwner && $room->hasSKU('group-room');
- $response['isOwner'] = $isOwner;
-
- return response()->json($response);
+ return $resource->response();
}
/**
* Get a list of SKUs available to the room.
*
- * @param int $id Room identifier
+ * @param int $id Room identifier (or name)
*/
public function skus($id): JsonResponse
{
@@ -173,10 +147,11 @@
}
/**
- * Create a new room.
+ * Create a room.
*
* @param Request $request the API request
*/
+ #[BodyParameter('skus', description: 'Enabled SKUs', type: 'array')]
public function store(Request $request): JsonResponse
{
$user = $this->guard()->user();
@@ -187,11 +162,12 @@
}
$v = Validator::make($request->all(), [
+ // Room description
'description' => 'nullable|string|max:191',
]);
if ($v->fails()) {
- return response()->json(['status' => 'error', 'errors' => $v->errors()], 422);
+ return response()->json(['status' => 'error', /* @var array */ 'errors' => $v->errors()], 422);
}
DB::beginTransaction();
@@ -220,6 +196,7 @@
* @param Request $request the API request
* @param string $id Room identifier
*/
+ #[BodyParameter('skus', description: 'Enabled SKUs', type: 'array')]
public function update(Request $request, $id): JsonResponse
{
$room = $this->inputRoom($id, Permission::ADMIN);
@@ -228,6 +205,7 @@
}
$v = Validator::make($request->all(), [
+ // Room description
'description' => 'nullable|string|max:191',
]);
@@ -242,7 +220,7 @@
SkusController::updateEntitlements($room, $request->skus);
- if (!$room->hasSKU('group-room')) {
+ if (!$room->hasSku('group-room')) {
$room->setSetting('acl', null);
}
diff --git a/src/app/Http/Resources/DeviceInfoResource.php b/src/app/Http/Resources/DeviceInfoResource.php
--- a/src/app/Http/Resources/DeviceInfoResource.php
+++ b/src/app/Http/Resources/DeviceInfoResource.php
@@ -19,7 +19,10 @@
public function toArray(Request $request): array
{
return [
- // Device registration date-time
+ /*
+ * @var string Device registration date-time
+ * @format date-time
+ */
'created_at' => (string) $this->resource->created_at,
];
}
diff --git a/src/app/Http/Resources/DomainInfoResource.php b/src/app/Http/Resources/DomainInfoResource.php
--- a/src/app/Http/Resources/DomainInfoResource.php
+++ b/src/app/Http/Resources/DomainInfoResource.php
@@ -21,12 +21,6 @@
// @var int Domain status
'status' => $this->resource->status,
- // Domain creation date-time
- 'created_at' => (string) $this->resource->created_at,
- // Domain modification date-time
- 'updated_at' => (string) $this->resource->updated_at,
- // @var string|null Domain deletion date-time
- 'deleted_at' => (string) $this->resource->deleted_at,
// Domain DNS hash
'hash_text' => $this->resource->hash(Domain::HASH_TEXT),
diff --git a/src/app/Http/Resources/DomainResource.php b/src/app/Http/Resources/DomainResource.php
--- a/src/app/Http/Resources/DomainResource.php
+++ b/src/app/Http/Resources/DomainResource.php
@@ -28,6 +28,19 @@
// Domain type
'type' => $this->resource->type,
+ $this->mergeWhen(self::isAdmin(), [
+ /*
+ * @var string Domain creation date-time
+ * @format date-time
+ */
+ 'created_at' => (string) $this->resource->created_at,
+ /*
+ * @var string Domain deletion date-time
+ * @format date-time
+ */
+ 'deleted_at' => (string) $this->resource->deleted_at,
+ ]),
+
// @var bool Is domain active?
'isActive' => $state['isActive'] ?? false,
// @var bool Is domain deleted?
diff --git a/src/app/Http/Resources/GroupInfoResource.php b/src/app/Http/Resources/GroupInfoResource.php
--- a/src/app/Http/Resources/GroupInfoResource.php
+++ b/src/app/Http/Resources/GroupInfoResource.php
@@ -21,12 +21,6 @@
// @var int Group status
'status' => $this->resource->status,
- // Group creation date-time
- 'created_at' => (string) $this->resource->created_at,
- // Group modification date-time
- 'updated_at' => (string) $this->resource->updated_at,
- // @var string|null Group deletion date-time
- 'deleted_at' => (string) $this->resource->deleted_at,
// @var array<string, mixed> Group configuration, e.g. spf whitelist
'config' => $this->resource->getConfig(),
diff --git a/src/app/Http/Resources/GroupResource.php b/src/app/Http/Resources/GroupResource.php
--- a/src/app/Http/Resources/GroupResource.php
+++ b/src/app/Http/Resources/GroupResource.php
@@ -28,6 +28,19 @@
// Group name
'name' => $this->resource->name,
+ $this->mergeWhen(self::isAdmin(), [
+ /*
+ * @var string Group creation date-time
+ * @format date-time
+ */
+ 'created_at' => (string) $this->resource->created_at,
+ /*
+ * @var string Group deletion date-time
+ * @format date-time
+ */
+ 'deleted_at' => (string) $this->resource->deleted_at,
+ ]),
+
// @var bool Is group active?
'isActive' => $state['isActive'] ?? false,
// @var bool Is group deleted?
diff --git a/src/app/Http/Resources/ResourceInfoResource.php b/src/app/Http/Resources/ResourceInfoResource.php
--- a/src/app/Http/Resources/ResourceInfoResource.php
+++ b/src/app/Http/Resources/ResourceInfoResource.php
@@ -21,12 +21,6 @@
// @var int Resource status
'status' => $this->resource->status,
- // Resource creation date-time
- 'created_at' => (string) $this->resource->created_at,
- // Resource modification date-time
- 'updated_at' => (string) $this->resource->updated_at,
- // @var string|null Resource deletion date-time
- 'deleted_at' => (string) $this->resource->deleted_at,
// @var array<string, mixed> Resource configuration
'config' => $this->resource->getConfig(),
diff --git a/src/app/Http/Resources/ResourceResource.php b/src/app/Http/Resources/ResourceResource.php
--- a/src/app/Http/Resources/ResourceResource.php
+++ b/src/app/Http/Resources/ResourceResource.php
@@ -28,6 +28,19 @@
// Resource name
'name' => $this->resource->name,
+ $this->mergeWhen(self::isAdmin(), [
+ /*
+ * @var string Resource creation date-time
+ * @format date-time
+ */
+ 'created_at' => (string) $this->resource->created_at,
+ /*
+ * @var string Resource deletion date-time
+ * @format date-time
+ */
+ 'deleted_at' => (string) $this->resource->deleted_at,
+ ]),
+
// @var bool Is resource active?
'isActive' => $state['isActive'] ?? false,
// @var bool Is resource deleted?
diff --git a/src/app/Http/Resources/RoomInfoResource.php b/src/app/Http/Resources/RoomInfoResource.php
new file mode 100644
--- /dev/null
+++ b/src/app/Http/Resources/RoomInfoResource.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace App\Http\Resources;
+
+use App\Meet\Room;
+use App\Permission;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+
+/**
+ * Room information response
+ */
+class RoomInfoResource extends RoomResource
+{
+ // Current user permission
+ public ?Permission $permission = null;
+
+ /**
+ * Transform the resource into an array.
+ */
+ public function toArray(Request $request): array
+ {
+ $user = Auth::guard()->user();
+ $isOwner = $user->canDelete($this->resource);
+ $config = $this->resource->getConfig();
+
+ // Room sharees can't manage/see room ACL
+ if ($this->permission) {
+ unset($config['acl']);
+ }
+
+ return [
+ $this->merge(parent::toArray($request)),
+
+ // @var array<string, mixed> Room configuration
+ 'config' => $config,
+
+ // @var bool Can the user update the room?
+ 'canUpdate' => $isOwner || $this->resource->permissions()->where('user', $user->email)->exists(),
+
+ // @var bool Can the user delete the room?
+ 'canDelete' => $isOwner && $user->wallet()->isController($user),
+
+ // @var bool Can the user share the room?
+ 'canShare' => $isOwner && $this->resource->hasSku('group-room'),
+
+ // @var bool Is the user an owner of this room?
+ 'isOwner' => $isOwner,
+
+ // Entitlements/Wallet information
+ $this->merge(self::objectEntitlements($this->resource)),
+ ];
+ }
+}
diff --git a/src/app/Http/Resources/RoomResource.php b/src/app/Http/Resources/RoomResource.php
new file mode 100644
--- /dev/null
+++ b/src/app/Http/Resources/RoomResource.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace App\Http\Resources;
+
+use App\Http\Controllers\RelationController;
+use App\Meet\Room;
+use Illuminate\Http\Request;
+
+/**
+ * Room response
+ *
+ * @mixin Room
+ */
+class RoomResource extends ApiResource
+{
+ /**
+ * Transform the resource into an array.
+ */
+ public function toArray(Request $request): array
+ {
+ $state = RelationController::objectState($this->resource);
+
+ return [
+ // Room identifier
+ 'id' => $this->resource->id,
+ // Room name
+ 'name' => $this->resource->name,
+ // Room description
+ 'description' => $this->resource->description,
+
+ $this->mergeWhen(self::isAdmin(), [
+ /*
+ * @var string Room creation date-time
+ * @format date-time
+ */
+ 'created_at' => (string) $this->resource->created_at,
+ /*
+ * @var string Room deletion date-time
+ * @format date-time
+ */
+ 'deleted_at' => (string) $this->resource->deleted_at,
+ ]),
+
+ // @var bool Is room deleted?
+ 'isDeleted' => $state['isDeleted'] ?? false,
+ // @var bool Readiness state
+ 'isReady' => $state['isReady'],
+ ];
+ }
+}
diff --git a/src/app/Http/Resources/RoomSessionResource.php b/src/app/Http/Resources/RoomSessionResource.php
new file mode 100644
--- /dev/null
+++ b/src/app/Http/Resources/RoomSessionResource.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace App\Http\Resources;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Http\Request;
+
+/**
+ * Meet room session response
+ */
+class RoomSessionResource extends ApiResource
+{
+ public ?int $code = null;
+ public bool $isOwner = false;
+ public ?string $token = null;
+ public ?int $role = null;
+
+ /**
+ * Transform the resource into an array.
+ */
+ public function toArray(Request $request): array
+ {
+ return [
+ // @var int Response status code
+ 'code' => $this->when(isset($this->code), $this->code),
+ // @var string Response message
+ 'message' => $this->when(isset($this->code), $this->message($this->code)),
+ // @var string Response status
+ 'status' => $this->code ? 'error' : 'success',
+ // Room configuration
+ 'config' => [
+ // @var bool Whether the room is locked
+ 'locked' => $this->resource['locked'] === 'true',
+ // @var bool Whether use of media is disabled in the room
+ 'nomedia' => $this->resource['nomedia'] === 'true',
+ // @var string Room password
+ 'password' => $this->isOwner ? (string) $this->resource['password'] : '',
+ // @var bool Whether the password is required or not
+ 'requires_password' => !$this->isOwner && strlen((string) $this->resource['password']),
+ ],
+ // @var int User role in the room
+ 'role' => $this->when(isset($this->role), $this->role),
+ // @var string Session token
+ 'token' => $this->when(isset($this->token), $this->token),
+ ];
+ }
+
+ /**
+ * Get a status message for the status code
+ */
+ private function message($code): ?string
+ {
+ switch ((int) $code) {
+ case 323:
+ case 324:
+ return Controller::trans('meet.session-not-found');
+ case 325:
+ return Controller::trans('meet.session-password-error');
+ case 326:
+ case 327:
+ return Controller::trans('meet.session-room-locked-error');
+ }
+
+ return null;
+ }
+}
diff --git a/src/app/Http/Resources/SharedFolderInfoResource.php b/src/app/Http/Resources/SharedFolderInfoResource.php
--- a/src/app/Http/Resources/SharedFolderInfoResource.php
+++ b/src/app/Http/Resources/SharedFolderInfoResource.php
@@ -20,12 +20,6 @@
// @var int Folder status
'status' => $this->resource->status,
- // Folder creation date-time
- 'created_at' => (string) $this->resource->created_at,
- // Folder modification date-time
- 'updated_at' => (string) $this->resource->updated_at,
- // @var string|null Folder deletion date-time
- 'deleted_at' => (string) $this->resource->deleted_at,
// @var array Folder aliases (email addresses)
'aliases' => $this->resource->aliases()->pluck('alias')->all(),
diff --git a/src/app/Http/Resources/SharedFolderResource.php b/src/app/Http/Resources/SharedFolderResource.php
--- a/src/app/Http/Resources/SharedFolderResource.php
+++ b/src/app/Http/Resources/SharedFolderResource.php
@@ -30,6 +30,19 @@
// Folder type
'type' => $this->resource->type,
+ $this->mergeWhen(self::isAdmin(), [
+ /*
+ * @var string Folder creation date-time
+ * @format date-time
+ */
+ 'created_at' => (string) $this->resource->created_at,
+ /*
+ * @var string Folder deletion date-time
+ * @format date-time
+ */
+ 'deleted_at' => (string) $this->resource->deleted_at,
+ ]),
+
// @var bool Is folder active?
'isActive' => $state['isActive'] ?? false,
// @var bool Is folder deleted?
diff --git a/src/app/Http/Resources/UserResource.php b/src/app/Http/Resources/UserResource.php
--- a/src/app/Http/Resources/UserResource.php
+++ b/src/app/Http/Resources/UserResource.php
@@ -29,9 +29,15 @@
'status' => $this->resource->status,
$this->mergeWhen(self::isAdmin(), [
- // User creation date-time
+ /*
+ * @var string User creation date-time
+ * @format date-time
+ */
'created_at' => (string) $this->resource->created_at,
- // User deletion date-time
+ /*
+ * @var string User deletion date-time
+ * @format date-time
+ */
'deleted_at' => (string) $this->resource->deleted_at,
]),
diff --git a/src/app/Http/Resources/WalletMandateResource.php b/src/app/Http/Resources/WalletMandateResource.php
--- a/src/app/Http/Resources/WalletMandateResource.php
+++ b/src/app/Http/Resources/WalletMandateResource.php
@@ -29,10 +29,10 @@
'isPending' => $this->resource['isPending'] ?? false,
// @var bool Is the mandate existing and valid?
'isValid' => $this->resource['isValid'] ?? false,
- // @var string|null Payment method name
+ // @var string|null Payment method description
'method' => $this->resource['method'] ?? null,
// @var string|null Payment method identifier
- 'methodId' => $this->resource['method'] ?? null,
+ 'methodId' => $this->resource['methodId'] ?? null,
];
}
}
diff --git a/src/app/Meet/Room.php b/src/app/Meet/Room.php
--- a/src/app/Meet/Room.php
+++ b/src/app/Meet/Room.php
@@ -97,11 +97,11 @@
*
* @param int $role User role (see self::ROLE_* constants)
*
- * @return array|null Token data on success, NULL otherwise
+ * @return string|null Session token on success, NULL otherwise
*
* @throws \Exception if session does not exist
*/
- public function getSessionToken($role = self::ROLE_SUBSCRIBER): ?array
+ public function getSessionToken($role = self::ROLE_SUBSCRIBER): ?string
{
if (!$this->session_id) {
throw new \Exception("The room session does not exist");
@@ -115,10 +115,7 @@
$response = $this->client()->post($url, $post);
if ($response->status() == 200) {
- return [
- 'token' => $response->json('token'),
- 'role' => $role,
- ];
+ return $response->json('token');
}
$this->logError("Failed to create the meet peer connection", $response);
diff --git a/src/app/Traits/Meet/RoomConfigTrait.php b/src/app/Traits/Meet/RoomConfigTrait.php
--- a/src/app/Traits/Meet/RoomConfigTrait.php
+++ b/src/app/Traits/Meet/RoomConfigTrait.php
@@ -43,7 +43,7 @@
} elseif ($key == 'locked' || $key == 'nomedia') {
$this->setSetting($key, $value ? 'true' : null);
} elseif ($key == 'acl') {
- if (!empty($value) && !$this->hasSKU('group-room')) {
+ if (!empty($value) && !$this->hasSku('group-room')) {
$errors[$key] = \trans('validation.invalid-config-parameter');
continue;
}
diff --git a/src/package-lock.json b/src/package-lock.json
--- a/src/package-lock.json
+++ b/src/package-lock.json
@@ -2255,6 +2255,29 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@lukeed/csprng": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz",
+ "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@lukeed/uuid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@lukeed/uuid/-/uuid-2.0.1.tgz",
+ "integrity": "sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@lukeed/csprng": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -2468,6 +2491,14 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/events-alias": {
+ "name": "@types/events",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
+ "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/express": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
@@ -2611,17 +2642,6 @@
"undici-types": "~5.26.4"
}
},
- "node_modules/@types/node-fetch": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz",
- "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "form-data": "^4.0.0"
- }
- },
"node_modules/@types/node-forge": {
"version": "1.3.11",
"resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
@@ -2632,14 +2652,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/npm-events-package": {
- "name": "@types/events",
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
- "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/parse-json": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
@@ -3329,16 +3341,16 @@
}
},
"node_modules/awaitqueue": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/awaitqueue/-/awaitqueue-3.2.0.tgz",
- "integrity": "sha512-yFka1VP9+ucU7n3wGerwZ9OzrdxluWl6qngiOlSe+nQyn6PtrR2BQt6HEoShI6sjo1sXAYQHQlUtPXzXSYAJfA==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/awaitqueue/-/awaitqueue-3.3.0.tgz",
+ "integrity": "sha512-zLxDhzQbzHmOyvxi7g3OlfR7jLrcmElStPxfLPpJkrFSDm71RSrY/MvsDA8Btlx8X1nOHUzGhQvc6bdUjL2f2w==",
"dev": true,
"license": "ISC",
"dependencies": {
- "debug": "^4.4.0"
+ "debug": "^4.4.3"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"funding": {
"type": "opencollective",
@@ -3346,9 +3358,9 @@
}
},
"node_modules/awaitqueue/node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4805,27 +4817,6 @@
"npm": "1.2.8000 || >= 1.4.16"
}
},
- "node_modules/detect-europe-js": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/detect-europe-js/-/detect-europe-js-0.1.2.tgz",
- "integrity": "sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/faisalman"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ua-parser-js"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/faisalman"
- }
- ],
- "license": "MIT"
- },
"node_modules/detect-node": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
@@ -5624,6 +5615,17 @@
"node": ">=0.8.x"
}
},
+ "node_modules/events-alias": {
+ "name": "events",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
"node_modules/evp_bytestokey": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
@@ -5724,16 +5726,16 @@
"license": "MIT"
},
"node_modules/fake-mediastreamtrack": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fake-mediastreamtrack/-/fake-mediastreamtrack-2.1.0.tgz",
- "integrity": "sha512-A/xmNJtQxtwTQEZqYGE1SDbcA2rIm93TJtGnoaLqG+iL6JB7HdfoTzDZCSmmg3TvqE/xDbkcN0Mswv1rYjF0jw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/fake-mediastreamtrack/-/fake-mediastreamtrack-2.2.1.tgz",
+ "integrity": "sha512-SITLc7UTDirSdgLGORrlmqjWLJtbtfIz/xO7DwVbJH3f0ds+NQok4ccl/WEzz49NSgiUlXf2wDW0+y5C+TO6EA==",
"dev": true,
"license": "ISC",
"dependencies": {
- "uuid": "^11.1.0"
+ "@lukeed/uuid": "^2.0.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
}
},
"node_modules/fast-deep-equal": {
@@ -6349,16 +6351,16 @@
"license": "MIT"
},
"node_modules/h264-profile-level-id": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/h264-profile-level-id/-/h264-profile-level-id-2.2.0.tgz",
- "integrity": "sha512-CwCzxvUWuOvJ0zI8Ltysq+7BBQ9kCoP2FnfYg5ZLLY3pZ2YfH+o6IqP9Eu8XHWqJM2JlmHMHfAApiQ5IDWSRQA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/h264-profile-level-id/-/h264-profile-level-id-2.3.1.tgz",
+ "integrity": "sha512-x2P85PdoRsjCQE7sZjmQQDEf61vTTxOSPNFyqevXaiiq6DzvLVnd0VBq/C7wplrYEqTXvMW5CLIDUMBekNN4Vw==",
"dev": true,
"license": "ISC",
"dependencies": {
- "debug": "^4.4.0"
+ "debug": "^4.4.3"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"funding": {
"type": "opencollective",
@@ -6366,9 +6368,9 @@
}
},
"node_modules/h264-profile-level-id/node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7114,27 +7116,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-standalone-pwa": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-standalone-pwa/-/is-standalone-pwa-0.1.1.tgz",
- "integrity": "sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/faisalman"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ua-parser-js"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/faisalman"
- }
- ],
- "license": "MIT"
- },
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@@ -7803,25 +7784,24 @@
}
},
"node_modules/mediasoup-client": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/mediasoup-client/-/mediasoup-client-3.11.0.tgz",
- "integrity": "sha512-MVKngePWhZ6AjHbHGvIf67XSJa3fEP5cvz2bCflfbY+6cGaM51oJIuYj73C4S3y+QRsrHJhPHYRz8swnovTH5g==",
+ "version": "3.16.7",
+ "resolved": "https://registry.npmjs.org/mediasoup-client/-/mediasoup-client-3.16.7.tgz",
+ "integrity": "sha512-MvuflyRMtdcR/+7Km18o4FdKfVb4GF5zdDFoIDx9dRtCH+K5jAU1n7LAs/Pl7ejIVC1BEWIalIH5Q31JdomtBQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"@types/debug": "^4.1.12",
- "@types/npm-events-package": "npm:@types/events@^3.0.3",
- "awaitqueue": "^3.2.0",
- "debug": "^4.4.1",
- "fake-mediastreamtrack": "^2.1.0",
- "h264-profile-level-id": "^2.2.0",
- "npm-events-package": "npm:events@^3.3.0",
+ "@types/events-alias": "npm:@types/events@^3.0.3",
+ "awaitqueue": "^3.3.0",
+ "debug": "^4.4.3",
+ "events-alias": "npm:events@^3.3.0",
+ "fake-mediastreamtrack": "^2.2.1",
+ "h264-profile-level-id": "^2.3.1",
"sdp-transform": "^2.15.0",
- "supports-color": "^10.0.0",
- "ua-parser-js": "^2.0.3"
+ "supports-color": "^10.2.2"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"funding": {
"type": "opencollective",
@@ -7829,9 +7809,9 @@
}
},
"node_modules/mediasoup-client/node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7854,9 +7834,9 @@
"license": "MIT"
},
"node_modules/mediasoup-client/node_modules/supports-color": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.0.0.tgz",
- "integrity": "sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
+ "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8173,27 +8153,6 @@
"tslib": "^2.0.3"
}
},
- "node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -8314,17 +8273,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm-events-package": {
- "name": "events",
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.x"
- }
- },
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -11427,13 +11375,6 @@
"node": ">=0.6"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -11488,61 +11429,6 @@
"node": ">= 0.6"
}
},
- "node_modules/ua-is-frozen": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ua-is-frozen/-/ua-is-frozen-0.1.2.tgz",
- "integrity": "sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/faisalman"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ua-parser-js"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/faisalman"
- }
- ],
- "license": "MIT"
- },
- "node_modules/ua-parser-js": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-2.0.3.tgz",
- "integrity": "sha512-LZyXZdNttONW8LjzEH3Z8+6TE7RfrEiJqDKyh0R11p/kxvrV2o9DrT2FGZO+KVNs3k+drcIQ6C3En6wLnzJGpw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ua-parser-js"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/faisalman"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/faisalman"
- }
- ],
- "license": "AGPL-3.0-or-later",
- "dependencies": {
- "@types/node-fetch": "^2.6.12",
- "detect-europe-js": "^0.1.2",
- "is-standalone-pwa": "^0.1.1",
- "node-fetch": "^2.7.0",
- "ua-is-frozen": "^0.1.2"
- },
- "bin": {
- "ua-parser-js": "script/cli.js"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
@@ -11710,20 +11596,6 @@
"node": ">= 0.4.0"
}
},
- "node_modules/uuid": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
- "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
- "dev": true,
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
- "license": "MIT",
- "bin": {
- "uuid": "dist/esm/bin/uuid"
- }
- },
"node_modules/v8-compile-cache": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
@@ -11969,13 +11841,6 @@
"minimalistic-assert": "^1.0.0"
}
},
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
"node_modules/webpack": {
"version": "5.99.9",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
@@ -12515,17 +12380,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/src/tests/Browser/Pages/Meet/Room.php b/src/tests/Browser/Pages/Meet/Room.php
--- a/src/tests/Browser/Pages/Meet/Room.php
+++ b/src/tests/Browser/Pages/Meet/Room.php
@@ -89,8 +89,8 @@
'@chat-list' => '#meet-chat .chat',
'@login-form' => '#meet-auth',
- '@login-email-input' => '#inputEmail',
- '@login-password-input' => '#inputPassword',
+ '@login-email-input' => '#email',
+ '@login-password-input' => '#password',
'@login-second-factor-input' => '#secondfactor',
'@login-button' => '#meet-auth button',
];
diff --git a/src/tests/Feature/Controller/MeetTest.php b/src/tests/Feature/Controller/MeetTest.php
--- a/src/tests/Feature/Controller/MeetTest.php
+++ b/src/tests/Feature/Controller/MeetTest.php
@@ -117,7 +117,6 @@
$json = $response->json();
- $this->assertCount(4, $json);
$this->assertSame(325, $json['code']);
$this->assertSame('error', $json['status']);
$this->assertSame('Failed to join the session. Invalid password.', $json['message']);
@@ -195,7 +194,6 @@
$json = $response->json();
- $this->assertCount(4, $json);
$this->assertSame(326, $json['code']);
$this->assertSame('error', $json['status']);
$this->assertSame('Failed to join the session. Room locked.', $json['message']);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 30, 2:58 AM (3 d, 9 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18790164
Default Alt Text
D5658.1774839493.diff (50 KB)
Attached To
Mode
D5658: API documentation improvements
Attached
Detach File
Event Timeline