Page MenuHomePhorge

D5658.1774839493.diff
No OneTemporary

Authored By
Unknown
Size
50 KB
Referenced Files
None
Subscribers
None

D5658.1774839493.diff

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

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)

Event Timeline